Skip to content

docs(board): register GT-633 — the guard whose expected value was a copy of its actual value - #290

Closed
beyondnetPeru wants to merge 2 commits into
mainfrom
docs/gt-598-false-green-board
Closed

docs(board): register GT-633 — the guard whose expected value was a copy of its actual value#290
beyondnetPeru wants to merge 2 commits into
mainfrom
docs/gt-598-false-green-board

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Pull Request Summary

Registers the GT-598 follow-on as GT-633, status DONE. Documentation only — all five code changes are already merged into main.

GT-598 shipped a snapshot that declared itself a CAPTURE with nothing capturing it, and a guard that compared that snapshot's counts against six numbers typed into the test — the same six that are literals inside the snapshot. Expected and actual were copies of each other, so it passed for as long as the file went untouched, whatever Core actually pinned. It sat green through two separate drifts: documentation-only 129 against Core's 136, and twelve rules still recorded unimplemented-native after GT-595 and GT-632 gave them handlers.

Closed across c856752b, beb6f50f, 104fd7a1, 0aee3eb0, 29e940d4.

The entry leads with the failure modes, not the fixes

Those are the part that transfers to the next guard someone writes:

  • a guard whose expected value is a copy of its actual value can only ever pass — the comparison must reach a source the artifact under test does not own;
  • a derived artifact stamped from another launders a stale input into something larger while each artifact's own --check still passes, which is why order belongs in a chain and not in prose;
  • a measurement reachable only by its own test cannot be captured, so the consumer copy gets hand-maintained and drifts;
  • a false dead in an evidence guard reads as stale evidence and invites repairing records that were already correct — 27 were reordered around one parser bug before it was fixed;
  • test positions typed as literals (link 2 of 3) make an unrelated addition look like a regression elsewhere;
  • and the one caught in the act: two tests written to prove the parser fix passed against the old parser too, because the fixture root declared no scripts and the branch under test was skipped. With the fixture made live, the six failed 5 of 6.

The remainder is recorded as accepted scope, not as unfinished work

38 dead references survive, and each would need evidence invented to clear: 15 name the vendored gitignored .harness/bin/opa, 4 name a script ABSORBED into 04-check-bilingual-parity rather than moved, 6 name deleted artifacts, 5 are root-level npm test recorded without the workspace they ran in, the rest are build output and prose. A recorded command may be repaired when its artifact moved, never when it was deleted, replaced or absorbed. The standing rule is recorded too: --max-dead may be lowered only from a count the CI job itself printed.

One detail worth the reviewer's eye

The closure record adds 17 validation commands and zero dead references — 1036 → 1053 recorded commands, still 38 dead. The evidence for the gap about dead evidence is not itself dead.

Verification

  • 08-validate-tracking.mjs — green: 633 gaps (ES 633), 609/609 EN/ES catalog sections, 576 closure records
  • 41-validate-evidence-commands.mjs --strict --max-dead 38 — exit 0
  • 01-validate-docs.mjs — 1491 markdown files
  • 04-check-bilingual-parity.mjs — green

Progress line recomputed in both languages: 593/632 → 594/633.

Note on the id: GT-633 was the first genuinely free id. GT-634 is already referenced by GT-624 as "registered separately", so it was left alone.

Evolith Core Quality Gates

  • Bilingual Parity: all four board files updated — row and catalog entry in EN and ES.
  • Validation Scripts: 01-validate-docs.mjs run and green.
  • Bilingual Validation: 04-check-bilingual-parity.mjs run and green.
  • Agnosticism: documentation only.

Linked ADRs / Issues

  • Link to ADR: n/a
  • Link to Issue: registers the follow-on to GT-598; the affected guard is GT-578's ratchet.

Conventional Commits

  • docs:

🤖 Generated with Claude Code

…opy of its actual value

GT-598 shipped a snapshot that declared itself a CAPTURE with nothing capturing
it, and a guard that compared that snapshot's counts against six numbers typed
into the test — the same six that are literals inside the snapshot. Expected and
actual were copies of each other, so it passed for as long as the file went
untouched, whatever Core actually pinned. It sat green through two separate
drifts: `documentation-only` 129 against Core's 136, and twelve rules still
recorded `unimplemented-native` after GT-595 and GT-632 gave them handlers.

Registered as DONE across five merges (c856752, beb6f50, 104fd7a, 0aee3eb,
29e940d), with the four board files updated and the progress line recomputed
593/632 -> 594/633.

The entry leads with the FAILURE MODES rather than the fixes, because those are
the part that transfers:
  - a guard whose expected value is a copy of its actual value can only ever
    pass; the comparison must reach a source the artifact under test does not own;
  - a derived artifact stamped from another launders a stale input into something
    larger while each artifact's own --check still passes, which is why order
    belongs in a chain and not in prose;
  - a measurement reachable only by its own test cannot be captured, so the
    consumer copy gets hand-maintained and drifts;
  - a false `dead` in an evidence guard reads as stale evidence and invites
    repairing records that were already correct — 27 were reordered around one
    parser bug before it was fixed;
  - test positions typed as literals make an unrelated addition look like a
    regression elsewhere;
  - and the one caught in the act: two tests written to prove the parser fix
    passed against the OLD parser too, because the fixture root declared no
    `scripts` and the branch under test was skipped.

The 38 surviving dead references are recorded as an accepted-scope remainder with
the reason per class, not as unfinished work: each would need evidence INVENTED
to clear it. A recorded command may be repaired when its artifact MOVED, never
when it was deleted, replaced or absorbed.

Worth noting about the closure record itself: it adds 17 validation commands and
ZERO dead references — 1036 -> 1053 recorded commands, still 38 dead. The
evidence for the gap about dead evidence is not itself dead.

Verified: 08-validate-tracking green (633 gaps, ES 633, 609/609 catalog sections,
576 closure records); 41-validate-evidence-commands --strict --max-dead 38 exit 0;
01-validate-docs 1491 files; 04-check-bilingual-parity green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner July 30, 2026 13:39
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 2
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 524
Total ES files 498
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

…ndency order

`Validate documentation` went red on `Reconcile maturity evidence`, and the cause
is the defect this very PR registers.

`maturity-reconciliation.json` is DERIVED FROM the gap board, and
`executive-summary.{md,es.md}` is derived from the reconciliation. Adding the
GT-633 row and moving the progress line to 594/633 invalidated both, and I
committed the board without replaying the chain — the exact ordering mistake
GT-630 exists to catch and GT-633's own entry describes as a transferable failure
mode. It cost one red required check, which is the cheapest possible way to be
reminded and still not a good look.

Regenerated in the declared order: 09-reconcile-maturity, then
generate-executive-summary. Not the other way round, and not both at once.

Verified: `46-validate-derived-artifact-order --verbose` reports the chain current
AND at a fixed point across 5 links / 7 artifacts; `09-reconcile-maturity --check`
green; 08-validate-tracking green; 01-validate-docs 1491 files;
04-check-bilingual-parity green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@beyondnetPeru

Copy link
Copy Markdown
Contributor Author

Superseded by c3221276 (PR #289), which registered GT-633 on main first — same gap, same false-green guard. main already carries the row (DONE), the catalog entry in EN and ES, and a closure record, so this PR would only duplicate them.

Closing rather than resolving the eight conflicts it now has against main: every one of them is in a board file whose content main already has a better-integrated version of, and merging a second GT-633 would corrupt the counters rather than improve them.

Two things this entry carried that main's does not, both already recorded elsewhere in the repository:

  • the per-class breakdown of the 38 dead references that survive and why none is repairable without inventing evidence — recorded in the comment above the --max-dead flag in ci-cd.yml (0aee3eb0);
  • the fixture-vacuity catch: two tests written to prove the parser fix passed against the OLD parser too, because the fixture root declared no scripts — recorded in 41-validate-evidence-commands.test.mjs and in 0aee3eb0's message.

Say the word if either is worth amending onto the existing entry.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant