continuity(S395): the if-chain security gap resolved, three filings, and two instruments that failed their own tests - #819
Merged
Conversation
…and two instruments that failed their own tests GAPS. g-collect-functions-branch-decl-vs-server-boundary-routing -> RESOLVED via #818 (c4c55c5), PA-verified two-sided on MERGED main: body-in-client 0 with server.js produced and the body inside it; the plain-fn symptom goes 0 definitions / 2 bare calls -> 1 definition / 0 bare calls. THREE NEW ENTRIES. Two were verified PRE-EXISTING before filing, which is the point — neither is introduced by #818, and saying so is what keeps the next reader from "fixing" a regression that is not one: - g-same-named-branch-declarations-bind-to-the-last-definition (MED). Sibling branches declaring one name emit BOTH definitions and bind EVERY call to the last, silently. PA-verified pre-existing on the lone-if= oracle, so #818 brings the chain to parity with an already-defective oracle. Direction AT THIS SHAPE is loud->silent (base threw ReferenceError), which is why it is filed rather than shrugged at. No server body leaked in any duplicate-name shape tested. The scoping question underneath is the SAME one g-if-chain-all-arms-run-at-module-init asks — rule once, not twice. - g-call-expression-interpolation-in-if-chain-branch-renders-empty (MED). PA-verified on merged main with a TOP-LEVEL fn, i.e. outside the fix's surface. _scrml_boot does querySelector + _scrml_render_value BEFORE _scrml_nav_rewire(document) inserts the branch, so el is null and the render is a silent no-op. A CELL interpolation in the same position works — which is why the #811/#818 class sweeps missed it. It is an ORDERING defect, not a collection one. - g-types-check-baseline-never-refreshed-for-ast-if-chain (LOW). RELAYED, NOT PA-MEASURED, and the entry says so. Two independent agents concur on 9->10 TS7016, but tsc is absent from this checkout and types-gate.ts correctly refuses to fall back or skip — "a gate that passes without running is worse than no gate", its own words. So no unverified .d.ts was landed on someone else's number. Re-measure before acting. REVIEW FLOOR: markers for #817 and #818. ⛑ THE ARC'S DURABLE FINDING — three instruments were tested rather than trusted, and two FAILED. (1) The dev agent's first corpus differential reported 1021 files differing and it invalidated its own run: the base tree had been built by deleting `.git`, one of chunk-namespace.ts's PROJECT_ROOT_MARKERS, so every chunk token hashed an absolute path; re-run gives 0 of 7408. (2) Its security overlap sweep did NOT bite on this bug — the leak shape is body-in-client AND no server.js, so there is nothing to overlap — found by pointing it at a deliberately-leaking build, getting "clean", and writing a second source-anchored checker. (3) The leak guard was ABSENCE-ONLY: the base column satisfied it by making the function vanish, so "absent from the client" meant nothing until a POSITIVE limb required the body present on the SERVER. All three found by adversarial construction, none by inspection. master-list.md carries only the @generated recent-sessions regen. Minor drift noted, not chased: that block's own header says it is derived from the `wrap(s…)` commits, and it has just indexed a `maps(...)` one.
bryanmaclee
added a commit
that referenced
this pull request
Sep 3, 2026
…reen while wrong (#824) Ran concurrently with S396-peter throughout. Five rulings given, four code arcs landed, the review floor drained twice to zero, maps refreshed. ONE ARC HELD on a ruling, worktree retained. ⚑ THE SESSION'S REAL OUTPUT IS NOT THE LANDINGS. Nine separate checks read green or authoritative while being wrong, and every one was caught by RUNNING something rather than by remembering. Three were my own claims. TWO WERE CAUGHT BY GATES I DID NOT WRITE. Three were agents' own instruments, found by those agents. RULINGS · the trailing-`else` question — direction stands, and the reported "inverted ruling" was MY OWN mis-description: §17.6.4 has always said a missing `else` is valid. I relayed a hand-off's framing into the boot report without opening the section. · the `~` arm-body question — limb (a) ratified, limb (c) BANKED as dpa-040, not closed. · 2a / 2b / 2c — the runAnchored fix (sequenced), the dev-root auth gate (limb b), and the tracking-job sequence with its first step folded in. · SPLIT the dev-auth arc when its §52.13 half turned out to require a second decider. LANDED #815 the §17.6.2 value-form sugar binds its result at a binding site — it bound null forever. #818 a branch-declared function is ROUTED before it is COLLECTED; closing the client half alone put a `server fn` BODY into client.js. #822 18 conformance assertions read as coverage and checked nothing. ⚑ MY BRIEF WAS WRONG — a naive `continue` deletion would have reddened 62 count:0 ABSENCE assertions — and the agent deviated with a stated reason. Only 2 of the 18 were covered elsewhere; 16 were entirely unguarded. #823 `scrml dev` served a protected document unauthenticated at `/`. The fix is a DELETION: two serving paths become one. #816 #819 #820 continuity + filings; #817 the overdue wrap-6c maps refresh, which corrected three premises in my own concurrently-dispatched brief. ⚑ HELD, NOT LANDED — the `~` build, worktree RETAINED at agent-ac264a1015c0da19d @ c2ad6f49. Four fix rounds, four adversarial passes, 7 SPEC loci reconciled. Blocked on bryan's revert-vs-press-on for the READ half, whose widening PA-verifiably DELETES A DOM LIFT (base emits _scrml_lift/createTextNode, the branch pushes into a dead array, exit 0). Resume the agent; do not re-dispatch. FINDINGS WORTH CARRYING · SUPPRESSING A SIGNAL SUPPRESSES WHATEVER RODE ON IT — three instances, one of them my own instruction. The `tracking` job's routine red concealed a REAL §52.13 assertion failing on Linux (compiler/tests/commands/ runs in NO blocking job on any platform). A knowingly-red assertion placed FIRST in a test turned the four after it into dead code that still read as coverage. And I instructed `test.failing` on that test — which passes when the body fails for ANY reason, so it would have MASKED A LEAK. The agent's formulation is the keeper: a mechanism that makes a red acceptable also makes a red invisible. · A FIX THAT NEEDS A SECOND DECIDER IS THE FORK RULE SAYING NO. Three rounds found three distinct divergences between the dev pre-gate and the resolution loop; the split then CLOSED a dev/prod divergence rather than opening one. · A REVIEW FINDING WAS FALSIFIED RATHER THAN FILED — the first time this session verification prevented a FABRICATED finding instead of catching a missed one. The corpus IS gated; corpus-bridge.test.js reaches it from inside the gated root. · TWO SHARED-DOC CONCURRENCY HAZARDS, both caught by machinery: conflicting @generated gap counts (resolved by regenerating from the merged population — the union, not a pick), and duplicate delta-log sequence numbers with peter (caught by the cloud gate's step 14; a duplicate makes the flogence bridge DROP the second entry from the digest). · BASE-DRIFT nearly reverted landed work FOUR times. · EVERY ONE of the five agent deviations from my instructions this session was correct. WRAP STEPS: hand-off rewritten (S396-peter's rotated to handOffs/hand-off-282.md, his live items carried) · changelog block · delta-log [2040]-[2045], sequence gate PASS · review floor 6 OWED -> 0 · inbox: TWO items deliberately left unarchived because both await bryan (the E-ROUTE-004 fork and the ~11-day-old FSP Initialize deliberation), both summarised in the hand-off · suite 30945 pass / 54 fail — ONE FEWER than base, the §52.13 assertion · worktrees: four landed swept, one retained · maps refreshed to 2d8dd8c, watermark verified via state.ts not by reading the file · @generated + facts gates PASS.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Continuity-only — no compiler source touched.
Gaps
g-collect-functions-branch-decl-vs-server-boundary-routing→ RESOLVED via #818 (c4c55c50), PA-verified two-sided on merged main: body-in-client0withserver.jsproduced and the body inside it; the plain-fn symptom goes 0 definitions / 2 bare calls → 1 definition / 0 bare calls.Three new entries. Two were verified pre-existing before filing — neither is introduced by #818, and saying so is what stops the next reader "fixing" a regression that isn't one.
g-same-named-branch-declarations-bind-to-the-last-definitionif=oracleg-call-expression-interpolation-in-if-chain-branch-renders-emptyg-types-check-baseline-never-refreshed-for-ast-if-chainReferenceError), which is why it's filed rather than shrugged at. No server body leaked in any duplicate-name shape tested. The scoping question underneath is the same oneg-if-chain-all-arms-run-at-module-initasks — rule once, not twice._scrml_bootdoesquerySelector+_scrml_render_valuebefore_scrml_nav_rewire(document)inserts the branch, soelis null and the render is a silent no-op. A cell interpolation in the same position works — which is why the fix(if-chain): close the descent CLASS across ten walks — and back out of the one that leaks server code #811/fix(§12.1): a branch-declared function is routed BEFORE it is collected — closing the client half alone leaked a server fn body into client.js #818 class sweeps missed it. It's an ordering defect, not a collection one.TS7016, buttscis absent from this checkout andtypes-gate.tscorrectly refuses to fall back or skip — "a gate that passes without running is worse than no gate", its own words. So no unverified.d.tswas landed on someone else's number.Review floor
Markers for #817 and #818.
⛑ The arc's durable finding — three instruments tested rather than trusted, two failed
.git, one ofchunk-namespace.ts'sPROJECT_ROOT_MARKERS, so every chunk token hashed an absolute path. Re-run: 0 of 7408.server.js, so there is nothing to overlap. Found by pointing it at a deliberately-leaking build, getting "clean", and writing a second source-anchored checker.All three found by adversarial construction, none by inspection.
master-list.mdcarries only the@generatedrecent-sessions regen. Minor drift noted, not chased: that block's own header says it is derived from thewrap(s…)commits, and it has just indexed amaps(...)one.🤖 Generated with Claude Code
https://claude.ai/code/session_019eHiNS6uvnGPFz55fzinNJ