@@ -4628,14 +4628,25 @@
4628:: proofs to fewer than 1,024 cells; the projection planner has a separate
4628:: proofs to fewer than 1,024 cells; the projection planner has a separate
4629:: 4,096-step bound. These are inference limits, not language limits.
4629:: 4,096-step bound. These are inference limits, not language limits.
4631−:: A single plain API path with one full mark can expose a polymorphic
4631+:: Supported API imports derive request-gate types atomically for multiple
4632−:: request-gate type through ordinary imports. Its source-derived schema,
4632+:: paths, including one typed segment or one diff fold per case. Their checked
4633−:: canonical API path and complete dependency evidence travel with checked
4633+:: ordinary definitions, mark molds and supported poke constructor are also
4634+:: exported. A selected /sur mold is checked through its trusted reader result;
4635+:: unused cores and other bindings are not independently validated. APIs
4636+:: with /= imports, separate scry paths, multiple parameters or diffs, or a
4637+:: parameter together with a fold remain unsupported. The unchanged todo API
4638+:: fits this fragment, including named closed fold gates.
4640+:: Each case's source-derived schema and canonical API identity travel in a
4634−:: interfaces. The closure is bound to the exact supplied bundle, prelude,
4641+:: dependency closure bound to the exact supplied bundle, prelude, scope and
4635−:: scope and trusted reader results; unknown cached entries are rebuilt.
4642+:: trusted reader results. Unknown cached entries are rebuilt. Request-bearing
4636−:: Request-bearing closures are limited to 256 source paths and requests.
4643+:: closures are limited to 256 source paths and requests. This is type
4637−:: This is type inference only: there is no request lowering, runtime schema
4644+:: inference only: no request lowering, runtime schema validator or proof that
4638−:: validator or proof that an arbitrary ask value is watchable.
4645+:: an arbitrary ask value is watchable is supplied.
4647+:: A closed gate sample may omit one outer face from a known input slot when
4648+:: its product is identical. Distinct written names, nested value faces,
4649+:: ambiguous cell tails and raw-variable-origin fits retain their prior rules.
4640:: In one synthetic eval of a 48-module deep and 48-module wide request-free
4651:: In one synthetic eval of a 48-module deep and 48-module wide request-free
4641:: graph, baseline versus certificate inference took 21.53 s versus 23.10 s
4652:: graph, baseline versus certificate inference took 21.53 s versus 23.10 s
@@ -4967,6 +4978,42 @@
4981+:: Closed function samples may omit a slot face, but a known name must
4982+:: match another known name. Keep nested value faces and require exact
4983+:: invariant compatibility; a faced tail against a cell is ambiguous.
4984+++ itype-closed-slot-match
4985+ |= [a=itype b=itype]
4987+ ?: &(?=(%face -.a) ?=(%face -.b))
4988+ ?. =(name.a name.b) |
4989+ ?=(^ (itype-unify body.a body.b ~))
4990+ ?: ?=(%face -.a) ?=(^ (itype-unify body.a b ~))
4991+ ?: ?=(%face -.b) ?=(^ (itype-unify a body.b ~))
4992+ ?=(^ (itype-unify a b ~))
4993+++ itype-closed-sample-match
4994+ |= [a=itype b=itype fuel=@ud]
4997+ ?. &(?=(%cell -.a) ?=(%cell -.b)) |
4998+ ?. (itype-closed-slot-match hed.a hed.b) |
5001+ ?: &(?=(%cell -.x) ?=(%cell -.y))
5002+ ?=(^ (itype-unify x y ~))
5003+ ?: |(&(?=(%face -.x) ?=(%cell -.y)) &(?=(%cell -.x) ?=(%face -.y))) |
5004+ (itype-closed-slot-match x y)
5005+++ itype-closed-gates-match
5006+ |= [a=itype b=itype]
5008+ ?. &(?=(%fn -.a) ?=(%fn -.b)) |
5009+ ?. &(?=(%cell -.sample.a) ?=(%cell -.sample.b)) |
5010+ ?. =(product.a product.b) |
5011+ ?^ (itype-vars a) |
5012+ ?^ (itype-vars b) |
5013+ ?: |((itype-has-tag a) (itype-has-tag b)) |
5014+ ?. (itype-closed-sample-match sample.a sample.b 1.024) |
5015+ ?=(^ (itype-unify product.a product.b ~))
4970++ itype-face-asym-collection-args
5017++ itype-face-asym-collection-args
4971 |= [as=(list itype) bs=(list itype) sub=isub]
5018 |= [as=(list itype) bs=(list itype) sub=isub]
@@ -5012,6 +5059,12 @@
5012:: labels. Ignore one raw sample-slot face per written argument while
5059:: labels. Ignore one raw sample-slot face per written argument while
5013:: checking value faces as usual. An unknown or variable-bound cell spine
5060:: checking value faces as usual. An unknown or variable-bound cell spine
5014:: cannot justify this distinction, so keep the existing conservative guard.
5061:: cannot justify this distinction, so keep the existing conservative guard.
5062+++ itype-positional-slot-face-asym
5063+ |= [actual=itype expected=itype sub=isub]
5065+ ?: &(?=(%fn -.actual) ?=(%fn -.expected) (itype-closed-gates-match actual expected)) |
5066+ (itype-face-asym actual expected sub)
5015++ itype-positional-face-asym
5068++ itype-positional-face-asym
5016 |= [args=(list expr) actual=itype expected=itype sub=isub]
5069 |= [args=(list expr) actual=itype expected=itype sub=isub]
@@ -5019,11 +5072,11 @@
5019 ?~ t.args
5072 ?~ t.args
5020 =/ slot=itype expected
5073 =/ slot=itype expected
5021 =? slot ?=(%face -.slot) body.slot
5074 =? slot ?=(%face -.slot) body.slot
5022− (itype-face-asym actual slot sub)
5075+ (itype-positional-slot-face-asym actual slot sub)
5023 ?. &(?=(%cell -.actual) ?=(%cell -.expected)) &
5076 ?. &(?=(%cell -.actual) ?=(%cell -.expected)) &
5024 =/ slot=itype hed.expected
5077 =/ slot=itype hed.expected
5025 =? slot ?=(%face -.slot) body.slot
5078 =? slot ?=(%face -.slot) body.slot
5026− ?: (itype-face-asym hed.actual slot sub) &
5079+ ?: (itype-positional-slot-face-asym hed.actual slot sub) &
5027 $(args t.args, actual tal.actual, expected tal.expected)
5080 $(args t.args, actual tal.actual, expected tal.expected)
5029++ itype-output-may-be-cell
5082++ itype-output-may-be-cell
@@ -5333,6 +5386,7 @@
5333 $(actual body.actual, expected body.expected, skip-width |, spine-proof |)
5386 $(actual body.actual, expected body.expected, skip-width |, spine-proof |)
5334 ?: ?=(%face -.actual) $(actual body.actual, skip-width |, spine-proof |)
5387 ?: ?=(%face -.actual) $(actual body.actual, skip-width |, spine-proof |)
5335 ?: ?=(%face -.expected) $(expected body.expected, skip-width |, spine-proof |)
5388 ?: ?=(%face -.expected) $(expected body.expected, skip-width |, spine-proof |)
5389+ ?: &(!uncertain (itype-closed-gates-match actual expected)) [%ok sub next]
5336 ?: (itype-face-asym actual expected sub) [%unknown ~]
5390 ?: (itype-face-asym actual expected sub) [%unknown ~]
5337 ?: |((itype-has-any-atom actual sub) (itype-has-any-atom expected sub))
5391 ?: |((itype-has-any-atom actual sub) (itype-has-any-atom expected sub))
5338 [%unknown ~]
5392 [%unknown ~]
@@ -10852,17 +10906,24 @@
10852 =/ parsed (parse file src)
10906 =/ parsed (parse file src)
10853 ?: ?=(%| -.parsed) [%| 'request source does not parse']
10907 ?: ?=(%| -.parsed) [%| 'request source does not parse']
10854 =/ mod=module p.parsed
10908 =/ mod=module p.parsed
10855− ?. ?=([[%mark *] ~] imports.mod) [%| 'request imports need unsupported inference']
10909+ ?. ?=(?([[%mark *] ~] [[%mark *] [%mark *] ~]) imports.mod) [%| 'request imports need unsupported inference']
10856 ?. ?=([[%mold *] ~] defs.mod) [%| 'request definitions need unsupported inference']
10910 ?. ?=([[%mold *] ~] defs.mod) [%| 'request definitions need unsupported inference']
10857 ?. =(%paths name.i.defs.mod) [%| 'request declaration needs unsupported inference']
10911 ?. =(%paths name.i.defs.mod) [%| 'request declaration needs unsupported inference']
10858 ?. ?=([* ~] paths.ev) [%| 'request count needs unsupported inference']
10912 ?. ?=([* ~] paths.ev) [%| 'request count needs unsupported inference']
10859 =/ p=iapi-path-typed i.paths.ev
10913 =/ p=iapi-path-typed i.paths.ev
10860 =/ parts=(unit iapi-request-parts) (api-request-parts `ev name.path.p)
10914 =/ parts=(unit iapi-request-parts) (api-request-parts `ev name.path.p)
10861 ?~ parts [%| 'request components need unsupported inference']
10915 ?~ parts [%| 'request components need unsupported inference']
10862− ?^ parameters.u.parts [%| 'request parameters need unsupported inference']
10916+ ?. ?=(?(~ [* ~]) parameters.u.parts) [%| 'request parameters need unsupported inference']
10863− ?^ fold.u.parts [%| 'request fold needs unsupported inference']
10917+ ?: &(?=(^ fold.u.parts) ?=(^ parameters.u.parts)) [%| 'request parameter and fold need unsupported inference']
10864 ?^ scry.path.p [%| 'request scry needs unsupported inference']
10918 ?^ scry.path.p [%| 'request scry needs unsupported inference']
10920+ ?~ fold.u.parts ?=([* ~] marks.support)
10921+ ?=([* [* ~]] marks.support)
10865− ?. ?=([* ~] marks.support) [%| 'request marks need unsupported inference']
10922+ ?. valid-marks [%| 'request marks need unsupported inference']
10925+ |(?=(^ (itype-vars u.fold.u.parts)) (itype-has-tag u.fold.u.parts))
10926+ ?: fold-open [%| 'request fold needs unsupported inference']
10866 ?^ (itype-vars reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10927 ?^ (itype-vars reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10867 ?: (itype-has-tag reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10928 ?: (itype-has-tag reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10868 =/ ask=(unit ischeme) (request-compatible-ask prepared.ev)
10929 =/ ask=(unit ischeme) (request-compatible-ask prepared.ev)
@@ -10870,8 +10931,13 @@
10870 =/ result=(unit itype) (template-apply u.ask ~[[%var 0]])
10931 =/ result=(unit itype) (template-apply u.ask ~[[%var 0]])
10871 ?~ result [%| 'request ask needs unsupported inference']
10932 ?~ result [%| 'request ask needs unsupported inference']
10872 =/ callback=itype [%fn reply-sample.u.parts [%var 0]]
10933 =/ callback=itype [%fn reply-sample.u.parts [%var 0]]
10935+ ?^ fold.u.parts [%cell callback u.fold.u.parts]
10936+ ?~ parameters.u.parts callback
10937+ [%cell typ.i.parameters.u.parts callback]
10873− =/ scheme=ischeme [[%fn callback u.result] ~[0]]
10938+ =/ scheme=ischeme [[%fn sample u.result] ~[0]]
10874− =/ mark=iapi-mark-type i.marks.support
10939+ =/ exports=imold-types
10940+ (turn marks.support |=(m=iapi-mark-type [name.m [typ.m ~]]))
10875 =/ prelude=iprelude prepared.ev
10941 =/ prelude=iprelude prepared.ev
10876 =/ public=ifile iface.prelude
10942 =/ public=ifile iface.prelude
10877 ?~ source.public [%| 'request prelude source needs unsupported inference']
10943 ?~ source.public [%| 'request prelude source needs unsupported inference']
@@ -10881,7 +10947,7 @@
10881 ?~ source.i.private [%| 'request internal source needs unsupported inference']
10947 ?~ source.i.private [%| 'request internal source needs unsupported inference']
10882 =/ req=irequest-evidence
10948 =/ req=irequest-evidence
10883 [file name.path.p p src u.source.public u.source.i.private values.prelude molds.prelude externals marks]
10949 [file name.path.p p src u.source.public u.source.i.private values.prelude molds.prelude externals marks]
10884− =/ interface=ifile [~[[name.path.p scheme]] ~[[name.mark [typ.mark ~]]] file ~ ~ ~ `src `[(silt `(list path)`~[file]) ~[req] modules `public values.prelude molds.prelude externals marks]]
10950+ =/ interface=ifile [~[[name.path.p scheme]] exports file ~ ~ ~ `src `[(silt `(list path)`~[file]) ~[req] modules `public values.prelude molds.prelude externals marks]]
10885 [%& [support u.parts interface]]
10951 [%& [support u.parts interface]]
10886:: Graph-aware request artifact; resolver use remains type-only.
10952:: Graph-aware request artifact; resolver use remains type-only.
10887++ one-request-interface-graph
10953++ one-request-interface-graph
@@ -10894,17 +10960,24 @@
10894 =/ parsed (parse file src)
10960 =/ parsed (parse file src)
10895 ?: ?=(%| -.parsed) [%| 'request source does not parse']
10961 ?: ?=(%| -.parsed) [%| 'request source does not parse']
10896 =/ mod=module p.parsed
10962 =/ mod=module p.parsed
10897− ?. ?=([[%mark *] ~] imports.mod) [%| 'request imports need unsupported inference']
10963+ ?. ?=(?([[%mark *] ~] [[%mark *] [%mark *] ~]) imports.mod) [%| 'request imports need unsupported inference']
10898 ?. ?=([[%mold *] ~] defs.mod) [%| 'request definitions need unsupported inference']
10964 ?. ?=([[%mold *] ~] defs.mod) [%| 'request definitions need unsupported inference']
10899 ?. =(%paths name.i.defs.mod) [%| 'request declaration needs unsupported inference']
10965 ?. =(%paths name.i.defs.mod) [%| 'request declaration needs unsupported inference']
10900 ?. ?=([* ~] paths.ev) [%| 'request count needs unsupported inference']
10966 ?. ?=([* ~] paths.ev) [%| 'request count needs unsupported inference']
10901 =/ p=iapi-path-typed i.paths.ev
10967 =/ p=iapi-path-typed i.paths.ev
10902 =/ parts=(unit iapi-request-parts) (api-request-parts `ev name.path.p)
10968 =/ parts=(unit iapi-request-parts) (api-request-parts `ev name.path.p)
10903 ?~ parts [%| 'request components need unsupported inference']
10969 ?~ parts [%| 'request components need unsupported inference']
10904− ?^ parameters.u.parts [%| 'request parameters need unsupported inference']
10970+ ?. ?=(?(~ [* ~]) parameters.u.parts) [%| 'request parameters need unsupported inference']
10905− ?^ fold.u.parts [%| 'request fold needs unsupported inference']
10971+ ?: &(?=(^ fold.u.parts) ?=(^ parameters.u.parts)) [%| 'request parameter and fold need unsupported inference']
10906 ?^ scry.path.p [%| 'request scry needs unsupported inference']
10972 ?^ scry.path.p [%| 'request scry needs unsupported inference']
10974+ ?~ fold.u.parts ?=([* ~] marks.support)
10975+ ?=([* [* ~]] marks.support)
10907− ?. ?=([* ~] marks.support) [%| 'request marks need unsupported inference']
10976+ ?. valid-marks [%| 'request marks need unsupported inference']
10979+ |(?=(^ (itype-vars u.fold.u.parts)) (itype-has-tag u.fold.u.parts))
10980+ ?: fold-open [%| 'request fold needs unsupported inference']
10908 ?^ (itype-vars reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10981 ?^ (itype-vars reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10909 ?: (itype-has-tag reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10982 ?: (itype-has-tag reply-sample.u.parts) [%| 'request payload needs unsupported inference']
10910 =/ ask=(unit ischeme) (request-compatible-ask prepared.ev)
10983 =/ ask=(unit ischeme) (request-compatible-ask prepared.ev)
@@ -10912,8 +10985,13 @@
10912 =/ result=(unit itype) (template-apply u.ask ~[[%var 0]])
10985 =/ result=(unit itype) (template-apply u.ask ~[[%var 0]])
10913 ?~ result [%| 'request ask needs unsupported inference']
10986 ?~ result [%| 'request ask needs unsupported inference']
10914 =/ callback=itype [%fn reply-sample.u.parts [%var 0]]
10987 =/ callback=itype [%fn reply-sample.u.parts [%var 0]]
10989+ ?^ fold.u.parts [%cell callback u.fold.u.parts]
10990+ ?~ parameters.u.parts callback
10991+ [%cell typ.i.parameters.u.parts callback]
10915− =/ scheme=ischeme [[%fn callback u.result] ~[0]]
10992+ =/ scheme=ischeme [[%fn sample u.result] ~[0]]
10916− =/ mark=iapi-mark-type i.marks.support
10993+ =/ exports=imold-types
10994+ (turn marks.support |=(m=iapi-mark-type [name.m [typ.m ~]]))
10917 =/ prelude=iprelude prepared.ev
10995 =/ prelude=iprelude prepared.ev
10918 =/ public=ifile iface.prelude
10996 =/ public=ifile iface.prelude
10919 ?~ source.public [%| 'request prelude source needs unsupported inference']
10997 ?~ source.public [%| 'request prelude source needs unsupported inference']
@@ -10923,7 +11001,7 @@
10923 ?~ source.i.private [%| 'request internal source needs unsupported inference']
11001 ?~ source.i.private [%| 'request internal source needs unsupported inference']
10924 =/ req=irequest-evidence
11002 =/ req=irequest-evidence
10925 [file name.path.p p src u.source.public u.source.i.private values.prelude molds.prelude externals marks]
11003 [file name.path.p p src u.source.public u.source.i.private values.prelude molds.prelude externals marks]
10926− =/ interface=ifile [~[[name.path.p scheme]] ~[[name.mark [typ.mark ~]]] file ~ ~ ~ `src `[(silt `(list path)`~[file]) ~[req] modules `public values.prelude molds.prelude externals marks]]
11004+ =/ interface=ifile [~[[name.path.p scheme]] exports file ~ ~ ~ `src `[(silt `(list path)`~[file]) ~[req] modules `public values.prelude molds.prelude externals marks]]
10927 [%& [support u.parts interface]]
11005 [%& [support u.parts interface]]
10929++ api-mark-exports
11007++ api-mark-exports
@@ -10971,6 +11049,132 @@
10971 =/ sc=ischeme [[%fn u.mark typ.u.poke] ~]
11049 =/ sc=ischeme [[%fn u.mark typ.u.poke] ~]
10972 `[~[[n sc]] (api-mark-exports marks marks mark-externals) at ~[[n i.t.t.at n]] ~ ~ ~ ~]
11050 `[~[[n sc]] (api-mark-exports marks marks mark-externals) at ~[[n i.t.t.at n]] ~ ~ ~ ~]
11052+:: Source-proven ordinary helpers validate each selected /sur dependency.
11053+:: Unused or less direct cores remain unsupported by this first interface.
11055+ |= [surs=(list term) defs=(list def) externals=iexternals all=(list term)]
11058+ =/ found=(list def)
11061+ ?. ?=(%mold -.d) |
11062+ ?. ?=(%ref -.shape.d) |
11063+ ?. ?=([@ [@ ~]] names.shape.d) |
11064+ =(i.t.names.shape.d i.surs)
11066+ =/ selected=def i.found
11067+ ?. ?=(%mold -.selected) |
11068+ =/ sh=shape shape.selected
11069+ ?. ?=(%ref -.sh) |
11070+ ?. ?=([@ [@ ~]] names.sh) |
11071+ =/ checked=(unit itype) (find-imported-mold i.surs i.names.sh externals all)
11075++$ imulti-request-gates [values=ienv requests=(list irequest-evidence)]
11076+++ api-request-gates
11077+ |= [paths=(list iapi-path-typed) ev=iapi-path-evidence ask=ischeme file=path src=@t public=@t internal=@t externals=iexternals marks=imark-externals fuel=@ud]
11078+ ^- (unit imulti-request-gates)
11081+ =/ p=iapi-path-typed i.paths
11082+ =/ parts=(unit iapi-request-parts) (api-request-parts `ev name.path.p)
11084+ ?. ?=(?(~ [* ~]) parameters.u.parts) ~
11085+ ?: &(?=(^ fold.u.parts) ?=(^ parameters.u.parts)) ~
11087+ ?^ (itype-vars reply-sample.u.parts) ~
11088+ ?: (itype-has-tag reply-sample.u.parts) ~
11091+ |(?=(^ (itype-vars u.fold.u.parts)) (itype-has-tag u.fold.u.parts))
11093+ =/ result=(unit itype) (template-apply ask ~[[%var 0]])
11095+ =/ callback=itype [%fn reply-sample.u.parts [%var 0]]
11097+ ?^ fold.u.parts [%cell callback u.fold.u.parts]
11098+ ?~ parameters.u.parts callback
11099+ [%cell typ.i.parameters.u.parts callback]
11100+ =/ scheme=ischeme [[%fn sample u.result] ~[0]]
11101+ =/ prep=iprelude prepared.ev
11102+ =/ req=irequest-evidence
11103+ [file name.path.p p src public internal values.prep molds.prep externals marks]
11104+ =/ rest=(unit imulti-request-gates)
11105+ $(paths t.paths, fuel (dec fuel))
11107+ `[[[name.path.p scheme] values.u.rest] [req requests.u.rest]]
11109+++ api-poke-from-checked
11110+ |= [file=path mod=module marks=imark-externals values=(list term) molds=(list term) prelude=(unit ifile)]
11111+ ^- (unit [values=ienv derived=(list iderived)])
11112+ =/ pokes=(list def)
11113+ (skim defs.mod |=(d=def &(?=(%mold -.d) =(%poke name.d))))
11115+ ?. ?=([* ~] pokes) ~
11116+ =/ declared=(list term) (collect-mark-imports imports.mod)
11117+ =/ ns=(unit (list term)) (api-poke-mark-names pokes declared)
11119+ ?. ?=([@ ~] u.ns) ~
11120+ =/ matching=(list import)
11121+ %+ skim imports.mod
11123+ ?. ?=(%mark -.i) |
11125+ ?. ?=([* ~] matching) ~
11126+ =/ checked=(unit ifile)
11127+ (api-poke-interface file mod(defs pokes, imports matching) marks values molds prelude)
11129+ `[values.u.checked derived.u.checked]
11131+:: The partial interface is published atomically: all paths, ordinary
11132+:: source definitions, declared marks and the poke must check. Unselected
11133+:: /sur bindings, runtime validation and value watchability remain unproved.
11134+++ multi-request-interface-graph
11135+ |= [file=path src=@t externals=iexternals marks=imark-externals modules=jbundle active=(list path) cache=jcache prepared=(unit iprelude)]
11136+ ^- (each [iface=ifile cache=jcache] @t)
11137+ =/ out (api-support-analysis-graph file src externals marks modules active cache prepared)
11138+ ?: ?=(%| -.out) [%| p.out]
11139+ =/ support=iapi-support-evidence p.out
11140+ =/ ev=iapi-path-evidence paths.support
11141+ =/ parsed (parse file src)
11142+ ?: ?=(%| -.parsed) [%| 'request source does not parse']
11143+ =/ mod=module p.parsed
11144+ ?. (levy imports.mod |=(i=import ?=(?(%mark %sur) -.i)))
11145+ [%| 'request imports need unsupported inference']
11146+ =/ surs=(list term) (collect-sur-imports imports.mod)
11147+ ?. (api-sur-covered surs defs.mod externals surs)
11148+ [%| 'API source dependency needs unsupported inference']
11149+ ?~ paths.ev [%| 'request count needs unsupported inference']
11150+ =/ ask=(unit ischeme) (request-compatible-ask prepared.ev)
11151+ ?~ ask [%| 'request ask needs unsupported inference']
11152+ =/ prep=iprelude prepared.ev
11153+ =/ public=ifile iface.prep
11154+ ?~ source.public [%| 'request prelude source needs unsupported inference']
11155+ =/ private=(list iwidth-dependency)
11156+ (skim dependencies.public |=(d=iwidth-dependency =(at.d /lib/jibb/internal/jibb)))
11157+ ?. ?=([* ~] private) [%| 'request internal source needs unsupported inference']
11158+ ?~ source.i.private [%| 'request internal source needs unsupported inference']
11159+ =/ gates=(unit imulti-request-gates)
11160+ (api-request-gates paths.ev ev u.ask file src u.source.public u.source.i.private externals marks 256)
11161+ ?~ gates [%| 'request paths need unsupported inference']
11162+ =/ poke=(unit [values=ienv derived=(list iderived)])
11163+ (api-poke-from-checked file mod marks values.prep molds.prep `public)
11164+ ?~ poke [%| 'API poke needs unsupported inference']
11165+ =/ mark-molds=imold-types
11166+ (turn marks.support |=(m=iapi-mark-type [name.m [typ.m ~]]))
11167+ =/ exports=imold-types (weld mark-molds molds.support)
11168+ =/ names=(list term) (turn exports |=(m=[name=term template=ischeme] name.m))
11169+ ?. (levy names |=(n=term (unique-value-name n names)))
11170+ [%| 'API exported molds need unsupported inference']
11171+ =/ env=ienv (weld values.u.gates (weld values.u.poke values.support))
11172+ =/ graph=irequest-graph
11173+ [(silt `(list path)`~[file]) requests.u.gates modules `public values.prep molds.prep externals marks]
11175+ [env exports file derived.u.poke elaborations.support ~ `src `graph]
11176+ [%& [iface dependencies.ev]]
10974++ infer-jibb-file
11178++ infer-jibb-file
10975 |= [at=path src=@t externals=iexternals mark-externals=imark-externals modules=jbundle active=(list path) prelude-values=(list term) prelude-molds=(list term) cache=jcache prelude=(unit ifile)]
11179 |= [at=path src=@t externals=iexternals mark-externals=imark-externals modules=jbundle active=(list path) prelude-values=(list term) prelude-molds=(list term) cache=jcache prelude=(unit ifile)]
10976 ^- jfile-result
11180 ^- jfile-result
@@ -10986,11 +11190,21 @@
10986 [%& [checked [[at checked] cache]]]
11190 [%& [checked [[at checked] cache]]]
10987 ?~ prelude [%| (crip "API module needs unsupported inference: {(spud at)}")]
11191 ?~ prelude [%| (crip "API module needs unsupported inference: {(spud at)}")]
10988 =/ prepared=iprelude [u.prelude prelude-values prelude-molds]
11192 =/ prepared=iprelude [u.prelude prelude-values prelude-molds]
11194+ ?. ?=([[%mark *] ~] imports.mod) |
11195+ ?. ?=([[%mold *] ~] defs.mod) |
11196+ ?. =(%paths name.i.defs.mod) |
11197+ !?=(%union -.shape.i.defs.mod)
10989− =/ request=(each ione-request-interface @t)
11199+ =/ request=(each ione-request-interface @t)
10990− (one-request-interface-graph at src externals mark-externals modules active cache `prepared)
11200+ (one-request-interface-graph at src externals mark-externals modules active cache `prepared)
10991− ?: ?=(%| -.request) [%| (crip "API module needs unsupported inference: {(spud at)}")]
11201+ ?: ?=(%| -.request) [%| (crip "API module needs unsupported inference: {(spud at)}")]
10992− =/ checked=ifile iface.p.request
11202+ =/ checked=ifile iface.p.request
10993− [%& [checked [[at checked] dependencies.paths.support.p.request]]]
11203+ [%& [checked [[at checked] dependencies.paths.support.p.request]]]
11204+ =/ multi=(each [iface=ifile cache=jcache] @t)
11205+ (multi-request-interface-graph at src externals mark-externals modules active cache `prepared)
11206+ ?: ?=(%| -.multi) [%| (crip "API module needs unsupported inference: {(spud at)}")]
11207+ [%& [iface.p.multi [[at iface.p.multi] cache.p.multi]]]
10994 ?. (module-scope-valid mod prelude-values prelude-molds)
11208 ?. (module-scope-valid mod prelude-values prelude-molds)
10995 ?: (pending-declared-poke at mod prelude-values prelude-molds)
11209 ?: (pending-declared-poke at mod prelude-values prelude-molds)
10996 [%| (crip "module kind or scope needs unsupported inference: {(spud at)}")]
11210 [%| (crip "module kind or scope needs unsupported inference: {(spud at)}")]