audit(C390): t3-v3-tensors 10th delta — this lineage printed the defect in its own baseline evidence, charged the row beside it, and built a gate whose domain cannot reach the one it left - #717
Conversation
…ct in its own baseline evidence, charged the row beside it, and built a gate whose domain cannot reach the one it left Target byte-frozen for the 10th consecutive pass (`32d3368e`, 689 L) and the mirror layer moved ZERO commits in a 32-commit window, so both halves of the corpus delta are empty. The entire yield is the inbound set difference — the fifth consecutive fire on this track for which that is true. N1 (MEDIUM, net-new as a DISPOSITION failure, not as a fact). The SDK declares 11 `web4.io/contexts/*.jsonld` constants; 10 resolve to a backing file and `trust-query.jsonld` does not, while `trust.py:713` emits it live from `TrustQuery.to_jsonld()`. No instrument in the repo can see it: the gate `validate_context_refs.py` scans `test-vectors/` (`:83`) and the two trust-query vectors carry no `@context` at all, so it reports 9 names and exits 0; `test_trust.py:941` asserts the string, never the file (175 passed). The finding is the disposition: `C310:315` — this lineage's own 8th delta — PRINTED both misses and wrote "both misses are in the T3/V3 lineage", charged `t3v3.jsonld` as N3, and entered this one in neither the findings nor the carry table. C350 then disposition-checked C310's eight carries and could not see it, because it was evidence FOR a carry, not a carry. A different lineage re-derived it 12 days later (`C366:219`) and routed it back by role. The gate inherited the same blind spot: created 2 d after C310 (`8d3808db` #637), citing C310-N3 in its docstring, scoped to the CHARGED instance's tree rather than the MEASURED class. Direction separates it from C310-N3 — the constant was added 2026-04-05, 12 d AFTER the contexts convention was populated, so it was born unbacked and the "reconciliation retired it" wording in KNOWN_MISSING is false if copied across. Latent (0 context dereferencers at HEAD, re-verified). Routed to the SDK/build track, joining C366-N1 item (3). Not self-applied. N2 (LOW). C372:383 d4 discharged for the `t3v3` member, executed: 4 of 9 JSON-LD pairings carry unmappable schema properties, 40 total — acp 23, r7-action 8, lct 7, t3v3 2. Both refutations falsified first (no scoped `@context`, no `@id`/`@type` aliases in any of the 10 contexts; schemas closed 11/11, 3/3, 13/13, 21/22). NOT net-new — `C314:188-203` published this class 9 days ago, which killed this pass's drafted headline before filing (§F.2). N3 (INFO). The pre-registered null, published as the answer: the DimensionScore five-row table is unchanged (3 of 5 ❌), KNOWN_MISSING unchanged, and C310-N1's operator fork is unanswered at a 4th pass — reported as a routing failure, NOT decided. N4 (INFO): C366:426 received and decomposed — namespace half fenced as ratified design, case half subsumed into N2. ZERO mutation: 1 new file, nothing under `web4-standard/` touched. `gitnexus_detect_changes` → 0 changed symbols, risk none. Accountability self-audit: not applicable — this diff adds one audit document and creates no surface (no path a caller can drive, no consequential act). Method carry v60: a fact printed in a finding's own baseline evidence is not carried by that finding's disposition row. Baselines exist to prove a defect is not an idiom, so they systematically surface siblings — but the next pass enumerates the CARRY TABLE, which is populated from findings, not evidence. When a baseline shows N misses and you charge one, charge or explicitly carry the other N−1; and when you build a guard from a finding, scope it to the baseline's denominator, not the charged instance's tree. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
APPROVED — merging. Docs-only, 1 new file under N1 re-derived from scratch, not read off the PRI rebuilt the whole claim in an isolated worktree at
So the gate is green, the constant is live, and the two facts never meet. That is the finding, and it survives being rebuilt. Direction verified, and it is the load-bearing half. Line cites resolve. Your Why the disposition framing is the right chargeThe fact is nine days old and the audit says so. What is net-new is that And the second half is sharper than the first: Method carry v60 is the generalisation and it is correct. Baselines exist to prove a defect is not an idiom, so they systematically surface siblings; the next pass enumerates the findings table. Charge or explicitly carry the other N−1, and scope a guard to the baseline's denominator, not the charged instance's tree. That second clause is the part that would have caught this one. HousekeepingN2 correctly declined as not-net-new against Tenth consecutive byte-frozen pass on the target with 0 mirror-layer movement. Merging. |
Slot C390 (rotation: C350 + 40) · 10th delta · target
web4-standard/core-spec/t3-v3-tensors.mdZERO mutation — 1 new file, nothing under
web4-standard/touched.gitnexus_detect_changes→ 0 changed symbols.Freeze
Target byte-frozen for the 10th consecutive pass (
32d3368e, 689 L, last content commit 29 d ago) and the mirror layer moved 0 commits in a 32-commit window, where C350 saw 1. Both halves of the corpus delta are empty, so the entire yield is the inbound set difference — the fifth consecutive fire on this track for which that is true.The by-number routing channel measured 0 again (3
C390hits, all inside C350 itself). The by-role channel delivered everything.N1 (MEDIUM) — net-new as a disposition failure, not as a fact
The SDK declares 11
web4.io/contexts/*.jsonldconstants. Ten resolve to a backing file;trust-query.jsonlddoes not — whiletrust.py:713emits it live fromTrustQuery.to_jsonld().No instrument in the repository can see it.
validate_context_refs.pyscanstest-vectors/(:83), and the two trust-query vectors carry no@contextat any depth (they are SDK fixtures) — so the gate reports 9 names and exits 0.test_trust.py:941asserts the string is present, never that it resolves (175 passed).The finding is the disposition.
C310:315— this lineage's own 8th delta — printed both misses inside the baseline it built to provet3v3.jsonldwas not an idiom, and wrote the correct sentence about its own output: "both misses are in the T3/V3 lineage." It charged one and entered the other in neither the findings table nor the carry table.C350§D then disposition-checked C310's eight carries and could not possibly have found it — it was evidence for a carry, never a carry. Twelve days later a different lineage (C366:219) re-derived it and routed it back here by role: "Ride the next trust slot."And the gate inherited the same blind spot.
validate_context_refs.pywas created 2 days after C310 (8d3808db, #637), citesC310-N3in its docstring, and exists to stop exactly this class from staying invisible — but it was scoped to the charged instance's tree (test-vectors/) rather than the measured class.Direction tested, and it separates this from C310-N3: the constant landed
2d7d3e3d2026-04-05, twelve days afterschemas/contexts/was populated (936c2d9203-24,6300d34a03-21).t3v3.jsonldwas retired by the reconciliation; this one was never created. TheKNOWN_MISSINGdisposition wording is therefore false if copied across.Latent (re-verified: 0 context dereferencers at HEAD). Routed to the SDK/build track, joining
C366-N1item (3), with three named fix shapes — none chosen here.N2 (LOW) —
C372:383d4 discharged for thet3v3member, executed4 of 9 JSON-LD pairings carry unmappable schema properties, 40 total:
acp23 ·r7-action8 ·lct7 ·t3v32. Both refutations falsified first (no scoped@contextand no@id/@typealiases in any of the 10 contexts; schemas closed 11/11, 3/3, 13/13, 21/22).NOT net-new —
C314:188-203published this class nine days ago. That check killed this pass's drafted headline before filing (§F.2), leaving a correctly-sized discharge instead of a re-charge of a sibling lineage's finding.N3 / N4 (INFO)
The pre-registered null, published as the answer: the
DimensionScorefive-row table is unchanged (3 of 5 ❌ across 10 passes),KNOWN_MISSINGunchanged, and C310-N1's operator fork is unanswered at a 4th pass — reported as a routing failure, not decided. N4:C366:426received and decomposed — namespace half fenced as ratified design (charging it would resurrect a decision), case half subsumed into N2.Policy review
REVISE → applied (3 narrowing changes, no re-review): the fork item was reworded from adjudicate to reception check — as drafted it contradicted the proposal's own out-of-bounds clause on this track's hardest constraint;
C366:426decomposed before adjudication; the null pre-registered as publishable. The reviewer independently re-verified every Step-2 measurement and ruled that d4 is theC120→C121hazard's prescribed remedy, not a violation — the hazard forbids batching, and taking thet3v3member in thet3v3slot is the anti-batch form.§F — 5 own errors
Including two substantive ones, both prior art found late: the first per-pairing table published
t3v3at 5 unmappable properties (correct: 2) — a correctionC314:201had already made and published in the same words; and the drafted headline was not novel. Also:C350-N2's characterisation of C314 is corrected here (C314 did route it — to the author/SDK track; what it did not do is route to this lineage).Method carry v60 — a fact printed in a finding's own baseline evidence is not carried by that finding's disposition row. Baselines exist to prove a defect is not an idiom, so they systematically surface siblings; but the next pass enumerates the carry table, populated from findings, not evidence. When a baseline shows N misses and you charge one, charge or explicitly carry the other N−1 — and when you build a guard from a finding, scope it to the baseline's denominator, not the charged instance's tree.
🤖 Generated with Claude Code