docs(gaps): register GT-639 — the same gap gets fixed twice, because nothing shows work in flight - #299
Merged
Merged
Conversation
…nothing shows work in flight On 2026-07-30 the same work was done twice, THREE separate times, by sessions that could not see each other: 1. GT-633 was fixed twice — a standalone capture script on main (#276) and an independent in-spec renderer on develop (#279). Both correct, both recapturing the same numbers. Two generators for one artifact is GT-633's own defect one level up, so a THIRD session spent a full reconciliation (#294..#297) collapsing them into one renderer. 2. The evidence guard's parser was fixed twice — `d1ea72a3` on main ("stop the evidence guard blaming the evidence for two parser defects") and `5acb29ed` on develop ("the ratchet was stuck by two bugs in itself"). 3. A GT id was allocated twice, forcing the renumber behind GT-638. THE COST IS NOT THE MERGE CONFLICT. It is the duplicated work that happened before anyone reached the conflict, plus the reconciliation it then required — and that reconciliation introduced a defect of its own: an order-sensitive comparison that rewrote the capture date on every run, invisible for a day because both runs stamped the same date. Three duplications, one repair session, one new bug. Why the board cannot see it: a row carries a status but not WHO is working it or WHERE. Two sessions can both read `GT-633 · PENDING` and both start, correctly. `08-validate-tracking` validates within one working tree by construction and cannot know another branch exists. AND THIS IS NOT A MISSING CONVENTION — the single-driver rule for gap waves is already established practice. What is missing is any mechanism that makes it observable, so on a busy day it degrades silently and nobody learns until the merge. That is why the criteria ask for a claim DERIVED from open pull requests rather than a rule written down again. Distinct from GT-638, and the row says so: that one is allocating a NAME twice, this one is doing the WORK twice. Same coordination gap; the id collision is its cheapest symptom. Id allocated by union across main and develop, per GT-638. Verified: 08-validate-tracking, 01-validate-docs (1491 files), 04 bilingual parity, 41 at 38 dead on a clean checkout against a budget of 40, 46 chain current and at a fixed point. Counters 596/636 -> 596/637, pending 22 -> 23. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
📊 Bilingual Coverage ImpactPR Changes
Repository Coverage
✅ Good: All EN changes have ES counterparts. Generated by GitHub Actions |
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.
On 2026-07-30 the same work was done twice, three separate times, by sessions that could not see each other.
main, #279 ondevelopd1ea72a3onmain,5acb29edondevelopThe cost is not the merge conflict
It is the duplicated work that happened before anyone reached the conflict, plus the reconciliation it then required — and that reconciliation introduced a defect of its own: an order-sensitive comparison that rewrote the capture date on every run, invisible for a day because both runs stamped the same date. Three duplications, one repair session, one new bug.
Why the board cannot see it
A row carries a status but not who is working it or where. Two sessions can both read
GT-633 · PENDINGand both start, correctly.08-validate-trackingvalidates within one working tree by construction and cannot know another branch exists.This is not a missing convention
The single-driver rule for gap waves is already established practice. What is missing is any mechanism that makes it observable, so on a busy day it degrades silently and nobody learns until the merge. That is why the criteria ask for a claim derived from open pull requests rather than for the rule to be written down again.
Distinct from GT-638, and the row says so: that one is allocating a name twice, this one is doing the work twice. Same coordination gap; the id collision is its cheapest symptom.
The id for this row was allocated by union across
mainanddevelop, per GT-638.Verified
08-validate-tracking·01-validate-docs(1491 files) ·04-check-bilingual-parity·41at 38 dead on a clean checkout against a budget of 40 ·46chain current and at a fixed point. Counters 596/636 → 596/637, pending 22 → 23.Evolith Core Quality Gates
01-validate-docs.mjsgreen.04-check-bilingual-parity.mjsgreen.Linked ADRs / Issues
Conventional Commits
🤖 Generated with Claude Code