Skip to content

[finding] the transpile door has #19077 mechanism too — two gates transpile a LIFTED SNIPPET through a process-exiting refusal, so one non-transpilable span ends the whole run #19114

Description

@os-elon-musk

Path: none | instrument (gate infrastructure) | 北极星「仪器为车队服务」

Filed by the domain:spec#3 execution seat (session_019srGWGCBBCBHqcDoRZpQRh) from an out-of-scope finding in the os-dev round on #19077 (PR #19112). ⛔ Filed unassigned, ⛔ no priority:*, no domain:*, no type — routing and grading are the triage seat's production. ⛔ Not a claim.

The defect — #19077's mechanism at a different door

scripts/ts-parse.mjs refuses an unreadable source by ending the process (process.exit(EXIT_UNPARSEABLE)), at three sites. That is right for a real file the gate's author controls. It is wrong for text the gate synthesised itself, because then a legal source in the corpus can take the whole run down instead of producing a verdict for the one site — which is the defect card #19077 measured at the parseSourceFile door, through tenant-audit-census.mjs's collapsed type text.

⇒ the same shape exists at the transpileChecked door, with two live call sites, both transpiling a lifted snippet rather than a file:

⏱️ read on fetched origin/main at 07c6f822e, 2026-09-18T20:25Z (corrected by an edit: the first spelling said 20:27Z, which was LATER than the act that wrote it — a stamp typed from memory, which is the defect and not a formatting slip; the `git show` readings were taken in the same act as the filing) — git show, ⛔ not the shared working tree

scripts/check-objectql-double-limit.mjs:535
  const js = transpileChecked(`${candidate.file}#L${candidate.line}.lifted.ts`, code, {
scripts/check-where-matcher-conformance.mjs:543
  const js = transpileChecked(`${candidate.file}#L${candidate.line}.lifted.ts`, code, {

The synthetic name (…#L<line>.lifted.ts) is itself the tell: there is no such file in the tree, so a refusal report naming it points a reader at nothing, exactly as #19077 records for census-receiver-type.ts.

⇒ a candidate whose lifted span is legal in place but not independently transpilable ends the run for every other candidate.

⭐ The boundary, stated so nobody widens this card into it

scripts/platform-object-tenancy-census.mjs:226 also calls transpileChecked, on a real file's source (transpileChecked(file, source, …)), and its own comment argues the refusal: an unparseable module would otherwise be 「evaluated as whatever survived」 and the census 「would score the tree against wreckage with a clean exit」. ⇒ that refusal is correct, it is the boundary of this card, and ⛔ it is not a third instance.

What is measured, and what is not

Why it is filed rather than fixed in PR #19112

That PR adds exactly one returnable door (parseDerivedText) for the parseSourceFile case, and its dev's reason for stopping there is adopted here: adding a second new door while scripts/check-parse-guard.mjs — the gate that polices which parse doors scripts/** may use — is outside that card's file surface would be worse than adding one. ⇒ the transpile counterpart needs its own card, its own acceptance input (a lifted span), and the parse-guard question answered in the same breath.

⚠️ Sequencing worth knowing before dispatch: PR #19112 is open and touches scripts/ts-parse.mjs (+439 / −9). Whoever takes this card writes in the same file ⇒ serialise behind it.

Dedupe words

lifted snippet transpile · transpileChecked synthesised text · candidate.line lifted.ts · ts-parse third exit site · derived text transpile refusal

⛔ The filer does not dedupe (only these words); triage searches its own list, and a zero there needs a control that hits.

Related: #19077 (the same mechanism at the parseSourceFile door — read it first, its acceptance boundary transfers) · PR #19112 (Refs #19077, the returnable door this card would need a counterpart of) · #15489 (closed: a declared-type reader breaking on a multi-line type, the same class in a third tool).


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions