Skip to content

docs(handoff): capture the dogfood-2 workstream and the nine vacuous guards - #292

Merged
ZacxDev merged 3 commits into
mainfrom
docs/handoff-dogfood-2
Aug 10, 2026
Merged

docs(handoff): capture the dogfood-2 workstream and the nine vacuous guards#292
ZacxDev merged 3 commits into
mainfrom
docs/handoff-dogfood-2

Conversation

@ZacxDev

@ZacxDev ZacxDev commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Handoff for the dogfood-2 workstream: issues #255#260, six PRs merged (#262, #263, #265, #267, #268, #269) plus #287, all verified on main by re-running the original symptoms with controls rather than by a green suite.

Follows the convention of handoff-dogfood-154.md, which this one links back to.

Why this is worth committing rather than leaving in a transcript

The fix list is the least valuable part. The durable content is the catalogue of nine guards that could not fail — every one green under make ci, under all 12 PR checks, and under its own author's mutation matrix — each hiding a different way, from a t.Skip that fired on setup failure to a block labelled POSITIVE CONTROL whose condition was s == s.

The instructive one is last: a ranking-stability test whose 2-element fixture sat under Go's n=13 insertion-sort threshold, so the unstable sort was stable by accident. Nothing in that test looks wrong — and the obvious fix ("use more than 13") also fails, because with one gap kind pdqsort short-circuits an all-equal partition. It needed two kinds across 30 gaps. Applied without re-running the mutant, that fix would have shipped a tenth vacuous guard believing it closed the ninth.

Also recorded, with measurements

  • Instrument validation — a peak-RSS harness that reported 0 MB for everything and was discarded; a lint control whose typecheck errors proved the parser ran, not the linters; errcheck being disabled in .golangci.yml, so a control built from an unchecked-error slip validates nothing.
  • go test's vet subset includes printf, so an arity error surfaces as build failed and never --- FAIL. Hit twice for real — once producing a result that would otherwise have been scored a surviving mutant, i.e. read as good news.
  • A declared equivalent mutant is a claim. One was declared equivalent with reasoning written into the source as a do-not-re-derive note, and was wrong on four inputs — three of which turned a file npm ci refuses into a clean validate.
  • Operating traps that cost real time and are not in the code: zsh word-splitting and history modifiers (both produced confident wrong answers, not errors), a failed cd that let a git merge run in the base clone, a script guard whose non-zero exit the caller ignored, and git rerere replaying a resolution silently.
  • The AGENTS.md item-25 three-way collision and how it resolved to 25/26/27.
  • Residuals shipped deliberately, each with its measurement rather than a hand-wave.

The coverage gap that matters

🔴 Both dogfood runs were deliberately un-credentialed, so civitai generate — the CLI's only irreversibly money-spending surface, and the subject of items 12–22 — is structurally unreachable by this harness. Two clean dogfood runs say nothing about it. Written down so "we dogfooded it twice" is never read as coverage of the spend path.

Docs-only. make ci green, golangci-lint v2.12.2 clean.

ZacxDev and others added 3 commits August 9, 2026 20:31
…guards

Six issues (#255-#260) from the second blind dogfood run, six PRs merged, all
verified on `main` by re-running the original symptoms with controls.

The durable content is not the fix list. It is the catalogue of NINE guards
that could not fail — each green under `make ci`, all 12 PR checks, AND its
own author's mutation matrix, and each hiding a different way. Found only by
independent passes that rebuilt the mutants instead of reading the reported
table.

Also records, with the measurements:
  - instrument validation (a peak-RSS harness that reported 0 MB for
    everything; a lint control whose `typecheck` errors proved the parser ran
    and not the linters; `errcheck` being disabled, so a control built from an
    unchecked-error slip validates nothing)
  - that `go test`'s default vet subset includes `printf`, so an arity error
    surfaces as `build failed` and never as `--- FAIL` — hit twice for real,
    once producing what would have been scored a surviving mutant
  - that a DECLARED equivalent mutant is a claim needing its own
    discrimination table; one was wrong on four inputs
  - the operating traps: zsh word-splitting and history modifiers, a `cd`
    failure that let a `git merge` run in the base clone, a guard whose
    non-zero exit the caller ignored, `git rerere` replaying silently
  - how the AGENTS.md item-25 three-way collision resolved (25/26/27)
  - four open follow-ups (#283-#286) and two issues closed as DECISIONS
  - the residuals shipped deliberately, each with its measurement

And the coverage gap that matters: both dogfood runs were un-credentialed, so
`civitai generate` — the only irreversibly money-spending surface — is
structurally unreachable by this method. Two clean runs say nothing about it.
#294 (9862c1e) merged after this doc was written and it implements
#283, #284 and #285 — the three follow-ups this doc lists as open. Its
body referenced the #260 umbrella rather than the three issue numbers,
so GitHub never auto-closed them and they still read as open work.
Verified against the merged binary rather than the diff.

- State/DONE/follow-ups updated; the three are struck through with the
  evidence that closed them, and the doc says plainly they need closing
  on GitHub.
- #291 added: a name over 40 chars silently truncates to a COLLIDING
  blockId. Found by an adversarial review of #267 and reproduced
  independently. Item 27's residual list says three classes; there are
  four.
- Ranked next steps: item 1 is struck (done), and two facts that
  currently exist nowhere else are recorded — AGENTS.md is 201 bytes
  from its hard ceiling so the next item cannot be added without a
  deliberate eviction, and #267 shipped a breaking change under a `fix:`
  subject, which goreleaser's subject filter will keep out of the
  release notes unless someone adds it by hand at tag time.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…rence

My previous commit wrote the literal token "item 28" while describing an
item that could not be added because AGENTS.md is at its size ceiling.
TestAgentsItemCrossReferencesResolve scans the repo for `item N` and
requires each to resolve; AGENTS.md has items 1..27, so it correctly
flagged it as dangling and reddened build-test on a docs-only PR.

The guard is right and should not be loosened: it cannot distinguish a
deliberate reference to a hypothetical item from the renumbering bug it
exists to catch, and the renumbering bug is the expensive one. So the
prose moves the number out of the `items?[\s-]+[0-9]+` shape instead —
"a new item (which would have been the 28th)".

Verified with a negative control rather than by re-reading the pattern:
re-introducing "item 28" reddens the test with its own message, and the
reworded text passes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ZacxDev
ZacxDev merged commit 5eb9119 into main Aug 10, 2026
12 checks passed
@ZacxDev
ZacxDev deleted the docs/handoff-dogfood-2 branch August 10, 2026 02:18
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