Skip to content

Commit f96e766

Browse files
docs(plans): record deleted-test and vacuous-gate audit findings
Record the 2026-07-27 audit in the authoritative V2 status files. Three delivered claims (Plan 16 worktree/store identity, Plan 38 cursor repair, Plans 18/23 end-to-end sanitization) lost their tests in 9e3ca9f. Filed as verification-coverage corrections, not retractions: the assertion is missing, the behavior is not withdrawn. Also record the six instances of gates attesting to something they never checked, the libtest empty-filter asymmetry that hides them, the six product defects fixed tonight with their SHAs, and Plan 11's corrected open-gap list including two items the widened accessibility matrix surfaced. None of tonight's commits has CI validation: PR #421 has been conflicting since 05:13 UTC, so no CI has run since 01:24 UTC. Every fix is recorded as locally verified only.
1 parent 15ef9f5 commit f96e766

4 files changed

Lines changed: 199 additions & 7 deletions

File tree

docs/plans/tracedecay-v2/00-plan-set-index.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@ suite.
110110
been measured because no full suite run has completed. The active PR12/PR13
111111
stabilization slice owns reducing that uncertainty and reporting the next
112112
full run truthfully; no PR9–PR14 acceptance follows from focused green suites.
113+
- No CI has run since 01:24 UTC on 2026-07-27. PR #421 has been conflicting
114+
since 05:13 UTC, and `pull_request` workflows cannot build a merge ref for a
115+
conflicting pull request, so roughly 60 commits — the entire 2026-07-27 night
116+
batch of repairs included — are verified only by scoped, contended local runs.
117+
Nothing in that batch may be reported as CI-validated.
118+
- Commit `9e3ca9fd2` deleted 124 first-party tests, 75 of which cover behavior
119+
that still ships, and three of those intersect claims recorded as delivered.
120+
`GAP-LEDGER-PR8-PR14.md` records them as verification-coverage corrections
121+
rather than retractions, together with the six instances of gates that
122+
attested to something they never checked.
113123

114124
Completed-slice names are historical implementation evidence, not instructions
115125
to recreate a type, file layout, fixture filename, milestone, or gate. A deleted
@@ -120,6 +130,12 @@ missing callable behavior or a missing direct regression is a product gap.
120130
Removed planning/evidence machinery is not unfinished product work and must not
121131
be rebuilt.
122132

133+
That rule protects deleted scaffolds, not deleted assertions. A direct test that
134+
covered retained shipping behavior is exactly the "missing direct regression"
135+
case above, so the 2026-07-24 deletions are a restoration backlog against
136+
known-good prior coverage. Restoring them changes no delivered claim and
137+
authorizes no reimplementation of the behavior they asserted.
138+
123139
## Delivery rules and practical safety baseline
124140

125141
Every remaining PR must leave a supported user journey working through a real

docs/plans/tracedecay-v2/11-dashboard-frontend.md

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,23 @@ audit against the requirements below found these still unmet. They are
7474
recorded so acceptance is not claimed early. They are capability/test gaps, not
7575
permission to replace unavailable data with fabricated values.
7676

77-
- **PR14 / Plan 11 owner:** the runtime performance budgets (LCP, frame p95,
78-
heap retention, SSE sustain), AST import-boundary rules, and MSW fault
79-
injection inside Vitest remain absent. The transfer budgets and the
80-
virtualization mount ceiling are now enforced — see the closure below.
81-
- **PR14 / Plan 11 owner:** the viewport matrix is partial. Current audits cover
82-
320/768/1440 in light and dark, but not 390×844, 1024×768, 1280×720,
83-
200%/400% zoom, `prefers-contrast: more`, or forced colors.
77+
- **PR14 / Plan 11 owner:** the runtime performance budgets — LCP, frame p95,
78+
and heap retention — remain absent. MSW HTTP fault coverage, the ast-grep
79+
renderer boundary gate, the SSE churn bounds, the transfer budgets, and the
80+
virtualization mount ceiling have all since landed and are no longer open.
81+
- **PR14 / Plan 11 owner:** the 200 ms p95 input budget is unasserted and will
82+
stay that way here. It cannot be measured deterministically in jsdom, which
83+
has no layout or paint, so a jsdom timing assertion would be a gate attesting
84+
to something it never checked. It belongs in Playwright against a real engine,
85+
alongside the runtime budgets above.
86+
- **PR14 / Plan 11 owner:** a collapsed scroller hides content at 320 px width
87+
and 400% zoom while the header still states a row count — the count is
88+
truthful but the rows it counts are unreachable, which reads as falsified UI
89+
to anyone at that viewport.
90+
- **PR14 / Plan 11 owner:** 18 controls render below the 44×44 minimum target
91+
size. The cause is `html { font-size: 14px }`, which makes every rem-based
92+
utility resolve smaller than its token intends — a nominal 44 px control
93+
renders at 38.5 px.
8494
- **PR14 / Plan 11 owner:** Code still lacks diagnostics, affected tests, code
8595
health, and branch-aware freshness; Agents lacks its PR14 subagent/handoff
8696
context; Sessions lacks raw-message drill-down, compaction boundaries, and
@@ -97,6 +107,24 @@ permission to replace unavailable data with fabricated values.
97107
belongs to the executable Work/handoff journey and does not block the PR14
98108
twelve-workspace checkpoint.
99109

110+
**Accessibility matrix widened (2026-07-27).** The viewport matrix is no longer
111+
partial. The accessibility audit now covers the full specified set — the added
112+
390×844, 1024×768, and 1280×720 viewports, 200% and 400% zoom,
113+
`prefers-contrast: more`, and forced colors — across 460 scans. That closes the
114+
partial-matrix gap this section carried until now.
115+
116+
The two new open items in the list above exist because of that widening: both
117+
the collapsed 320 px / 400% scroller and the 18 undersized controls were
118+
invisible to the narrower matrix and appeared on its first widened run. This is
119+
the ordinary consequence of a gate that now checks more, not a regression
120+
introduced by it. A lane is in flight on both; they stay recorded as open until
121+
the repairs land, and a claim that they are fixed must cite the landing commits.
122+
123+
Every closure in this section was verified by scoped local runs. None has been
124+
validated by CI: no CI has run since 01:24 UTC on 2026-07-27 because PR #421 is
125+
conflicting. See the verification-status section of
126+
[`GAP-LEDGER-PR8-PR14.md`](GAP-LEDGER-PR8-PR14.md).
127+
100128
**Transfer budgets and list bounds closed (2026-07-27).** The two payload
101129
ceilings this plan states are now measured and enforced by
102130
`scripts/check-dashboard-budget.mjs`, run in the `dashboard-assets` CI job and

docs/plans/tracedecay-v2/GAP-LEDGER-PR8-PR14.md

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ not inherited merely because the superseded branch entered history.
2929
cadence is suspect after a 237-minute stale observation, roughly eight known
3030
test failures remain, and roughly 4,169 tests have never been measured in a
3131
completed full-suite run.
32+
- No CI has run since 01:24 UTC on 2026-07-27 because PR #421 has been
33+
conflicting since 05:13 UTC. Roughly 60 commits, including every repair
34+
recorded below, are locally verified only. See the verification-status section
35+
below before treating any of them as proven.
3236
- Plan 32 is PR17-only and SCOPE-OUT for PR8–PR14 audits.
3337
- Plan 34 is split: the published read-only rename preview is implemented and
3438
reachable; apply-grade rename is not certified by that preview, and the
@@ -237,6 +241,131 @@ No numbered plan claims `.tracedecay/domain-symbols.toml` as a delivered
237241
capability, so the no-op `DOMAIN-EXTRACTORS.md` proposal requires no plan-side
238242
correction.
239243

244+
## Verification status of the 2026-07-27 night commits
245+
246+
Everything recorded in the three sections below landed on
247+
`codex/tracedecay-total-redesign-plan` during the night of 2026-07-27. **None of
248+
the 24 commits has been validated by CI.** PR #421 has been in a conflicting
249+
state since 05:13 UTC, and `pull_request` workflows cannot build a merge ref for
250+
a conflicting pull request, so no CI run has started since 01:24 UTC — a gap now
251+
covering roughly 60 commits. `gh pr view 421` still reports
252+
`mergeable: CONFLICTING`.
253+
254+
Local verification during that window was scoped and contended. Several lanes
255+
committed on `cargo check` plus a filtered test run rather than a completed
256+
suite. Where a fix below is described as fixed, that means the repair landed and
257+
its author observed a scoped local run — not that the repository's aggregate
258+
gates agree. No claim here upgrades the delivery band, which remains not green
259+
per the authority section above.
260+
261+
## Verification-coverage corrections (2026-07-27)
262+
263+
Commit `9e3ca9fd2` (2026-07-24, 617 files changed) deleted 124 first-party
264+
tests. 75 of those covered behavior that still ships. Three of them intersect
265+
claims this ledger or its numbered plans record as **delivered**.
266+
267+
These are **verification-coverage corrections, not retractions**. Nothing here
268+
withdraws a delivered claim, and no audit may cite this section as evidence that
269+
the underlying behavior is broken or must be reimplemented. The behavior may
270+
well be correct. What is missing is the assertion that it is. A later audit's
271+
only licensed action is to restore or replace the coverage — never to reopen the
272+
capability as unbuilt.
273+
274+
- **Plan 16 — worktree/store identity.** The corrections list states that linked
275+
worktrees "collapse to primary-checkout project/store identity while retaining
276+
exact worktree snapshot authority". The mechanism enforcing the immutable half
277+
of that is the `store_instances_project_immutable_v1` trigger, and its test
278+
`store_project_identity_cannot_be_reparented` was among the deletions. Between
279+
2026-07-24 and 2026-07-27 nothing asserted that the trigger fires. `b8ef48ec5`
280+
restored it, together with the cross-table identity-constraint and
281+
sanitization-receipt-immutability tests. Three restored tests against 67
282+
declared guards is a partial restoration, not closure.
283+
- **Plan 38 — `source_cursor_advances` reclamation.** The corrections list
284+
states that superseded advances are reclaimed "while preserving the current-
285+
frontier receipt and restoring the immutable delete trigger before commit".
286+
The adjacent recovery logic in
287+
`src/global_db/schema_contract/invariants/repair.rs` — 391 lines that run on
288+
every reopen and can rewind cursors and requeue projection suffixes — lost all
289+
nine of its tests in the same commit and currently has zero. The retention
290+
transaction's own coverage is a separate question from this one; what is
291+
unasserted is the repair path that can move the same cursors outside it.
292+
- **Plans 18 and 23 — end-to-end sanitization.** Plan 18 lists structural
293+
sanitization as delivered and Plan 23 requires every imported row to carry a
294+
verified sanitization receipt. `tests/session_suite/temporal_privacy.rs` (1,081
295+
lines) was deleted outright, taking the three end-to-end tests that a redacted
296+
value cannot resurface through temporal summary, context, reopen, or rebuild
297+
replay. Unit sanitization coverage in `src/privacy/tests.rs` survives, so the
298+
detector and sanitizer are still asserted; the end-to-end non-resurfacing
299+
property is not. The fixtures those tests consumed are still on disk, so
300+
restoration does not require regenerating inputs.
301+
302+
### Structural residue of the same deletion
303+
304+
Three files carrying schema-enforcement and registry authority were left with no
305+
direct test coverage at all, and two of them still are:
306+
307+
- `src/global_db/schema_contract/invariants/triggers.rs` — 67 `RAISE(ABORT)`
308+
guards across roughly 1,800 lines of trigger definitions, of which three are
309+
asserted by the module `b8ef48ec5` restored and 64 are not;
310+
- `src/global_db/schema_contract/invariants/repair.rs` — 391 lines, zero tests;
311+
- `src/global_db/project_registry.rs` — 1,691 lines, zero tests.
312+
313+
The cause was mechanical rather than a judgement that the coverage was
314+
worthless: a `GlobalDb``RegisteredGlobalDb` refactor whose compile breaks were
315+
cleared by deleting callers. The evidence is that 20 tests in the same file were
316+
successfully re-pointed at the new type while 63 were deleted. A later audit
317+
should treat this as a restoration backlog against known-good prior assertions,
318+
not as new test design.
319+
320+
## Gates that attest to what they never checked
321+
322+
Six independent lanes each found the same failure family on 2026-07-27: a gate
323+
that reports success without having exercised the thing it names. Recording the
324+
family so future gate review looks for it directly.
325+
326+
1. `windows-pr8-temporal-durable` filtered on
327+
`binary(=session_suite) & test(/^lcm_schema::/)`, which matched zero tests
328+
while the job reported green. 30 LCM schema tests had never run under the
329+
Windows DELETE+FULL pragmas the job exists to cover. Fixed in `7a92b147a`.
330+
2. `platform_lifecycle.passed` receipts were written unconditionally on two
331+
operating systems, under a comment claiming they proved a test had run. Fixed
332+
in `2758e5b97`.
333+
3. `pr13_lite_grammar_contract` was satisfiable by all-features junit evidence
334+
without the lite build ever running. Fixed in `6b0417935`.
335+
4. MCP fixtures wired test doubles into test doubles, and `production_joins.rs`
336+
has no production implementor — the seam is proven only against itself.
337+
5. `pr13_advisory_proximity_overlap` filtered on a test deleted a month earlier,
338+
which reddened the `test` job at HEAD. Fixed in `3ec8f086b`.
339+
6. `tests/pr12_production_reachability.rs` asserts that a symbol *name appears
340+
in source text* rather than that the path executes. That is why symbol-graph
341+
pagination was dead from the day it was written without any gate noticing.
342+
343+
The asymmetry that hides this family: **libtest exits 0 when a name filter
344+
matches nothing, while nextest can be made to fail on an empty filter.** A
345+
dangling `cargo test --exact` is therefore silently vacuous forever, and stays
346+
green through the deletion of the very test it names. Treat a name-filtered gate
347+
as unverified until something proves the filter selects a nonempty set.
348+
349+
## Product defects found and fixed 2026-07-27
350+
351+
Each landed with scoped local verification only; see the CI-status section
352+
above.
353+
354+
- Symbol-graph pagination failed any read exceeding one page, from the day it
355+
was written — `e864c9bf1` binds the cursors to a derived digest.
356+
- macOS and Windows could not mount a store at all, because the
357+
filesystem-locality classifier was Linux-only — `2edeee16c`, cross-checked on
358+
four target triples.
359+
- `test_map` reported well-tested functions as untested when a graph read
360+
failed, presenting a failure as an empty success — `e56c1cc6c`.
361+
- SSE renders were never coalesced, producing roughly 1,000 renders/s against a
362+
stated ceiling of ten, and one queue overflow fired eleven invalidations —
363+
`e402d6cfe`.
364+
- Route grant identity was not request-correlated, and `storage_status` wrote a
365+
history row on every read — `5d2a6d4b9`.
366+
- LSP refused to project context for any freshly bootstrapped project —
367+
`f3135e9f7` projects degraded feedback instead.
368+
240369
## Refuted defect claims — do not reintroduce
241370

242371
- Plan 35's current capability advertisement is honest; it is not a missing

docs/plans/tracedecay-v2/NEXT.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,25 @@ the usability study. See
7272
- Roughly eight known test failures remain, and roughly 4,169 tests have not
7373
been measured because no full suite has completed. Focused green runs and the
7474
failure-fix clusters landed today do not satisfy the aggregate gate.
75+
- CI has not run since 01:24 UTC. PR #421 has been conflicting since 05:13 UTC,
76+
and `pull_request` workflows cannot build a merge ref for a conflicting pull
77+
request, so roughly 60 commits — including the whole 2026-07-27 night batch —
78+
carry scoped local verification only. Restoring a mergeable PR #421 is a
79+
precondition for any aggregate claim about this slice.
80+
- Six independent lanes found the same failure family on 2026-07-27: a gate
81+
reporting success without exercising what it names, including a Windows job
82+
whose nextest filter matched zero tests and a reachability test asserting that
83+
a symbol name appears in source text. Because libtest exits 0 on an empty name
84+
filter, a dangling `cargo test --exact` is silently vacuous forever. Gate
85+
review for this slice must prove a filter selects a nonempty set before
86+
counting the gate as evidence. The ledger records all six.
87+
- Commit `9e3ca9fd2` deleted 124 first-party tests, 75 of them covering shipping
88+
behavior, and three of those intersect claims recorded as delivered — Plan 16
89+
worktree/store identity, Plan 38 cursor-repair recovery, and the Plans 18/23
90+
end-to-end sanitization property. These are verification-coverage gaps, not
91+
retractions: restoring the assertions is the work, and no delivered capability
92+
is reopened by them. The ledger names each one and the residual zero-coverage
93+
files.
7594

7695
## Worktree-aware incremental indexing contract
7796

0 commit comments

Comments
 (0)