From 4fbf0163cbd1693c20429d5f0f007f2a5429879b Mon Sep 17 00:00:00 2001 From: bryan maclee Date: Wed, 2 Sep 2026 05:41:15 -0600 Subject: [PATCH] continuity(S395): the value-form arc filed, the review floor drained to zero, and a locus that was disjoint from its answer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GAPS. g-value-form-sugar-in-bound-position-emits-null -> RESOLVED via #815 (908a631c), PA-verified on MERGED main rather than on the branch. Two corrections to that entry as filed, both from execution: (a) Its `locus=searched:` named emit-html.ts, emit-each.ts and emit-control-flow.ts. The responsible site was in NONE of the three — it is emit-logic.ts, a FOURTH file, reached via the const-decl/let-decl dispatch through `node.ifExpr`. The searched-set was not merely incomplete, it was DISJOINT from the answer. Routed to the nav-maps per base §5: a locus error that recurs across dispatches is a map gap wearing a brief's clothes. (b) Its claim "the explicit-`lift` twin is the control and is correct" holds for the LOCAL binding only. For a derived cell BOTH forms fail — so anyone building against that sentence works from a false control. TWO NEW ENTRIES, same root as the one #815 closed, which is why #815 is correctly scoped as one position of a class and not the class: - g-bare-expr-in-if-arm-rebinds-tilde-context-corrupting-the-result-var (HIGH, PA-reproduced on merged main, SURVIVES #815). Hits the CANONICAL `'{' statement* lift-stmt statement* '}'` production. The corpus misses it on a technicality — phase2-if-as-expr-intermediate-014.scrml uses a `let`-decl, which does not rebind; only a bare EXPRESSION does. RULING OWED. - g-nested-if-as-expression-arm-body-binds-null-silently (MED, RELAYED-VERIFIED-BY- REVIEWER and labelled as such — not PA-re-executed). Filed as a fail-SILENT direction defect, NOT as a missing feature: §17.6.1 makes the shape unspecified, so supporting it is a widening and is bryan's. REVIEW FLOOR: 1 OWED -> 0. Markers for #812, #813, #814, #815. Code-bearing carve-out rate holds at 2/163 (1%); the 59% all-PR figure is the volume statistic the S319 note says not to read as a health signal. REVIEWER-VS-DEV, ADJUDICATED BY EXECUTION. The S239 pass claimed #815 removes a ReferenceError/implicit-global class. It does for a SUGAR else arm and does NOT for an explicit-`lift` else arm — and the explicit-`lift` form is the one §17.6.1's canonical grammar documents. Recorded in the new HIGH rather than accepted as filed. DRIVE-BY, in a file already open: g-each-value-form-if-markup-fn-call-branch-stringifies carried `status=resolved` on its marker (with a bite-proven prov= from S392-peter) while its HEADING still read `open`. A heading-based sweep saw an open entry the field-based probe saw closed. Heading corrected; no status change. This is the exact divergence base §2 warns about — and it cuts against the overlay's own "match on the heading, not on marker adjacency", since S385 measured headings as the LOSSY side. Counts move HIGH 77 (-1 resolved, +1 new) and MED 200->201, which is the proof the new entries are machine-visible rather than prose-only. --- docs/known-gaps.md | 16 ++++++++++++---- docs/pr-reviews.md | 4 ++++ handOffs/delta-log.md | 8 ++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/docs/known-gaps.md b/docs/known-gaps.md index 499712835..9e010cdc4 100644 --- a/docs/known-gaps.md +++ b/docs/known-gaps.md @@ -31,7 +31,7 @@ |---|---| | HIGH | 77 | -| MED | 200 | +| MED | 201 | | LOW | 86 | | Nominal (spec-ahead-of-impl) | 7 | @@ -49,6 +49,14 @@ + + +### g-bare-expr-in-if-arm-rebinds-tilde-context-corrupting-the-result-var — a bare-expression statement inside an if-as-expression arm mints a FRESH `_scrml_tilde_N` **and rebinds `tildeContext.var`**, so a following explicit `lift` writes the wrong variable and the binding stays `null`. **PA-CONFIRMED BY EXECUTION on merged main `908a631c`, and it survives #815.** `const label = if (@n > 0) { note("a") lift "pos" } else { lift "neg" }` compiles **exit 0, zero diagnostics** and emits `let _scrml_tilde_5 = _scrml_note_2("a");` then `_scrml_tilde_5 = "pos";` inside the then-arm, while the real result var `_scrml_tilde_4` keeps its `null` seed — so `label` is **always null on the true path**. ⛑ **AND THE SIBLING ARM LEAKS A GLOBAL.** With `else { lift "neg" }` the else-arm emits `_scrml_tilde_5 = "neg"`, a name `let`-declared INSIDE the then-block and therefore **not in scope** there. PA-verified the emitted client artifact is a **classic script** (`