mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-25 05:53:44 +00:00
docs(routes): describe wrapper fallback, barrel and recall boundaries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d3c3572768
commit
528ea1478b
3 changed files with 40 additions and 5 deletions
|
|
@ -220,6 +220,11 @@ an unproven argument, or a reassigned parameter establishes nothing, and a helpe
|
||||||
with no recorded call site is read as written, so an unknown mount path still
|
with no recorded call site is read as written, so an unknown mount path still
|
||||||
suppresses its router's standalone paths.
|
suppresses its router's standalone paths.
|
||||||
|
|
||||||
|
Fetch-wrapper facts use the same lexical identities. The shared resolver in
|
||||||
|
`route-extractors/fetch-wrapper-index.ts` names no language, but it applies
|
||||||
|
ECMAScript `ResolveExport` rules to the re-export facts it receives: only
|
||||||
|
providers whose modules link that way implement the re-export hook.
|
||||||
|
|
||||||
A standalone router retains its local paths. A known dynamic mount suppresses
|
A standalone router retains its local paths. A known dynamic mount suppresses
|
||||||
that fallback, while independently proven static mounts remain available. Cycles
|
that fallback, while independently proven static mounts remain available. Cycles
|
||||||
terminate, and exceeding the expansion budget omits the affected mount component
|
terminate, and exceeding the expansion budget omits the affected mount component
|
||||||
|
|
|
||||||
|
|
@ -154,10 +154,15 @@ Bare wrapper calls and forwarded calls resolve declaration or import identity
|
||||||
before using name fallback. Relative imports, renamed imports, tsconfig aliases,
|
before using name fallback. Relative imports, renamed imports, tsconfig aliases,
|
||||||
and workspace imports use the project module resolver. A known local
|
and workspace imports use the project module resolver. A known local
|
||||||
non-wrapper, a different resolved target, or an ambiguous target blocks fallback.
|
non-wrapper, a different resolved target, or an ambiguous target blocks fallback.
|
||||||
An unresolved name can fall back only when exactly one distinct definition has
|
An unresolved name can fall back only when exactly one distinct definition can
|
||||||
that name across all candidates, including non-wrappers, and that definition is
|
be the target, including non-wrappers, and that definition is a proven wrapper.
|
||||||
a proven wrapper. This fallback is an analyzer recovery heuristic; it does not
|
For an import the resolver cannot follow, the candidates are module-level
|
||||||
prove lexical identity. Explicit `fetchWrappers` configuration takes precedence
|
functions exported under the imported name; for an undeclared global, they are
|
||||||
|
top-level functions of that name. Nested and unexported helpers are never
|
||||||
|
candidates. This fallback is an analyzer recovery heuristic; it does not prove
|
||||||
|
lexical identity. A function whose binding is reassigned in its file, including
|
||||||
|
through `export { request as send }; request = other;` or a later
|
||||||
|
`var request = …` initializer, proves no wrapper in importing files either. Explicit `fetchWrappers` configuration takes precedence
|
||||||
over automatic inference, including for names shadowed by local parameters; member
|
over automatic inference, including for names shadowed by local parameters; member
|
||||||
calls retain their existing matching rules. See the
|
calls retain their existing matching rules. See the
|
||||||
[wrapper consumer integration tests](../../gitnexus/test/integration/resolvers/fetch-wrapper-consumers.test.ts)
|
[wrapper consumer integration tests](../../gitnexus/test/integration/resolvers/fetch-wrapper-consumers.test.ts)
|
||||||
|
|
@ -172,7 +177,22 @@ body declarations; a rest parameter alone is not a parameter expression. The
|
||||||
[lexical binding tests](../../gitnexus/test/unit/route-lexical-bindings.test.ts)
|
[lexical binding tests](../../gitnexus/test/unit/route-lexical-bindings.test.ts)
|
||||||
pin this conservative boundary. If scope extraction fails, scope-dependent HTTP
|
pin this conservative boundary. If scope extraction fails, scope-dependent HTTP
|
||||||
facts are omitted and the existing scope-extraction failure remains visible;
|
facts are omitted and the existing scope-extraction failure remains visible;
|
||||||
unrelated structural extraction continues.
|
unrelated structural extraction continues. A failing HTTP hook drops only that
|
||||||
|
file's HTTP facts. Either way the file's function names are still recorded, so
|
||||||
|
name fallback elsewhere declines instead of treating another definition as
|
||||||
|
unique.
|
||||||
|
|
||||||
|
Barrels follow ECMAScript `ResolveExport`. A local or named export shadows
|
||||||
|
`export *`, star exports never carry `default`, and a name that two star-exported
|
||||||
|
modules export as different bindings is ambiguous, whether or not either is a
|
||||||
|
wrapper. Two export names of one declaration are one binding.
|
||||||
|
|
||||||
|
Some recall is given up deliberately. A helper that conditionally rebinds its
|
||||||
|
parameter, as in `if (!app) { var app = express(); }`, loses that parameter's
|
||||||
|
provenance: the initialized `var` is a write. A dynamic-import shim such as
|
||||||
|
`(...args) => import('node-fetch').then(...)` is not platform fetch evidence. A
|
||||||
|
write to the URL parameter clears URL forwarding. Calls inside recovered syntax
|
||||||
|
are still resolved, but nothing else inside an `ERROR` node is trusted.
|
||||||
|
|
||||||
Vue's explicit JS/JSX script requires an additional bounded semantic parse because
|
Vue's explicit JS/JSX script requires an additional bounded semantic parse because
|
||||||
the worker's structural tree uses TypeScript. That parse runs inside the real
|
the worker's structural tree uses TypeScript. That parse runs inside the real
|
||||||
|
|
|
||||||
|
|
@ -140,3 +140,13 @@ Corpus SHA-256:
|
||||||
The final corpus differs from the first capture only in formatting of the
|
The final corpus differs from the first capture only in formatting of the
|
||||||
standalone ownership probe. Both final exports use this identical corpus and
|
standalone ownership probe. Both final exports use this identical corpus and
|
||||||
the baseline remains the untouched revision above.
|
the baseline remains the untouched revision above.
|
||||||
|
|
||||||
|
## Committed results
|
||||||
|
|
||||||
|
`results/baseline-scaling.json`, `results/candidate-scaling.json` and
|
||||||
|
`results/semantic-diff.json` are point-in-time reports. Each records the revision
|
||||||
|
it measured (`source.revision`, or the export revisions in the comparison), so a
|
||||||
|
later commit that changes no measured file keeps them valid. Regenerate all three
|
||||||
|
with the commands above after changing a measured file. Host load during a run is
|
||||||
|
described only by the report's environment note; any sampled load log stays with
|
||||||
|
the operator.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue