Skip to content

Reconcile upstream through e12f5bbb - #351

Merged
bompus merged 8 commits into
fork/consolidatedfrom
reconcile/upstream-2270
Oct 1, 2026
Merged

bompus merged 8 commits into
fork/consolidatedfrom
reconcile/upstream-2270

Conversation

@bompus

@bompus bompus commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Reconcile seven upstream commits through e12f5bbb925b91e0fd1f641c67db34065cc6b7f4, preserving upstream ancestry and the fork’s native extraction and resolution pipeline.

Literal CommonJS requires and TypeScript import-equals declarations now create exact file dependencies, including configured path aliases. Missing files, external packages, quoted examples and locally shadowed loaders do not become dependencies. Vue, Svelte and Astro components own their instance-script execution; imports, module execution and Astro browser scripts retain file ownership. Nuxt and Astro page routes call their own components, including scriptless pages whose names collide with built-ins. Rails resource action filters accept the additional literal forms.

Highlighting runs in a killable child process with deadline, restart and shutdown handling. Native request parsing has cooperative cancellation, and the COBOL scanner stops at end of input. The viewer’s Map grouping and exact-name directed flows incorporate the upstream fixes; viewer launch notes remain separate from the released changelog.

Validation: native build and clippy, application/viewer build, 229 focused checks, all eight golden checks, 7,057 full-suite passes with 34 existing skips, and both Slim/Vite precision gates. Four compiled parse-worker/store-worker combinations produce identical graphs. Fresh Express, Nuxt, Astro, Svelte and Rails comparisons have no unclassified lost calls; 12 explore probes passed. Nuxt binds all 66 pages and Astro all three to their own components. Lifecycle regressions fail when the stale-child, Astro execution, page-marker or child-reaping guards are removed.

Linux and Windows lifecycle checks passed locally. The pull-request lifecycle workflow passed on Linux, Windows and macOS for this commit. Native preview DOM checks confirmed the initial Map grouping and unclipped modules at 1280×800; preview snapshots were unavailable.

README rows checked: upstream merge point; parsing/language ownership; CommonJS resolution; Astro page-router; Rails/Astro/Nuxt framework rows; Svelte/Vue/Astro language rows. Matching site and framework-coverage docs are updated. Historical benchmark numbers retain their dated measurements; a full benchmark/A/B refresh is deferred to a separately authorized measurement task.

This merge commit must land by ancestry-preserving fast-forward into fork/consolidated, after separate operator direction. Squashing would lose the upstream merge ancestry.

colbymchenry and others added 8 commits October 1, 2026 20:32
…olbymchenry#2262)

The Flow strip's from/to were run through explore's free-text token filter,
which drops an Objective-C selector (`initWithFrame:`), a Ruby predicate
(`valid?`) and any name under three letters (`ok`) — then reported the
OTHER end as naming nothing in the index. Directed mode now takes the two
names as written; explore's named mode is unchanged.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…me (colbymchenry#2263)

* fix(js): a CommonJS require and a module path import the file they name

A `require('./application')` was only a call, so a CommonJS file depended
on nothing at file level: Express's lib/express.js showed no imports and
impact missed the files it loads. Local require specifiers are now read
after extraction (both the wasm extractor and the kernel, including its
deferred-decode transport) as `imports` refs from the file, and a JS/TS
module path resolves to its file the way the runtime finds it —
extensions, index files, aliases — which also lands an extensionless
`import './polyfills'` on its file instead of its own import node.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(js): read require imports inside each extractor, so kernel parity holds

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…2268)

The single-file-component extractors kept the delegated script's file node
and made the component contain it and every node, so the hierarchy ran
file-inside-component, members had two parents, and a file with no script
had no file node. And a per-instance script's top-level calls stayed on the
file, so a walk from the component found nothing. Now: one file node (the
whole file) holds the component; the component holds what the script holds
at top level, nested symbols keep their parent; <script setup>, a Svelte
instance script and Astro frontmatter give their top-level calls — a
top-level constant's initializer's included — to the component, while
imports and module-level scripts stay with the file. Svelte 5's
`<script module>` is a module script too.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ry#2270)

pickDefaultRoot ignored files loose in the repository root, so git's
top-level .c files made builtin/ the program's root. And a source folder
whose files all sit in one folder (Express lib/, R's R/, Erlang src/)
drew one box at any depth; pickDefaultView opens the whole repository
then, when it draws more.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
colbymchenry#2269)

Only a bracketed list (and the scoped reader's bare :sym) was read, so
maybe's `resources :family_exports, only: %i[new create index]` drew all
seven RESTful routes — four to actions the controller lacks, listed by the
viewer as routes bound to nothing. Both route readers now share one option
reader for every form Rails accepts.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…mchenry#2266)

The viewer's server classifies a code slice with the engine's tree-sitter
grammars on its one thread. The COBOL grammar's scanner loops forever on a
line like `    .`, which a cobolcraft Flow card's window ends with, so the
whole server froze — /api/stats included — and a parse inside WebAssembly
cannot be interrupted from JavaScript. Slices are now classified in a
worker that is terminated past a 2 s deadline; the slice is served plain
and the next one gets a fresh worker. Request-time parses also carry a
progress-callback budget.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…mchenry#2267)

A Nuxt pages/x.vue or Astro src/pages/x.astro route linked to nothing, so
the viewer's Steps drew a page alone and the routes list never named what
serves it. Each page route now references its file's own component (never a
same-named one — every index.vue is a component named index), an Astro
endpoint its exported verb handlers, and the routing manifest accepts a
component as what serves a route, which also lists Vue Router screens.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@bompus
bompus marked this pull request as ready for review October 1, 2026 22:46
@bompus
bompus merged commit 9b6fd4c into fork/consolidated Oct 1, 2026
3 checks passed
@bompus
bompus deleted the reconcile/upstream-2270 branch October 1, 2026 22:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants