fix(ci): main is red again, and one cause must not be fixed in the data #306

Closed
coilyco-ops wants to merge 1 commit from fix/main-red-again into main
Member

Three hook failures on origin/main at 8d4fd37. Two are mechanical. The third must not be fixed the obvious way.

The mechanical two

deeprecognition_test.go carries a 3-line comment where the cap is 2. Five eval-deep-run*.yaml files end with a blank line the end-of-file hook strips — byte-checked, content untouched.

The one that matters

The typo linter reports 13 errors, all inside evaluations/, and every one is a false positive on recorded evidence:

b885f60f469ff3ba   span ID, read as "ba"  -> "by", "be"
236e245caf5ab98b   span ID, read as "caf" -> "calf"
14df5ede5d7265bf   span ID, read as "ede" -> "edge"
http://ser8:8080   a real host name       -> "set8"

These arrived with eccc127, the first live rate numbers this repository has ever had. Correcting any of them would falsify the record. Evidence is the one thing here a linter must not be allowed to edit, and "make the hook pass" points straight at editing it.

The fix

_typos.toml matches them by shape, not by listing them:

extend-ignore-re = ["\\b[0-9a-f]{12,}\\b", "\\bser8\\b"]

A per-identifier allowlist would need a new entry every evaluation run, which is the maintained-by-memory failure this repo keeps finding elsewhere. Shape does not drift.

It lives in its own file rather than as a hook exclude:, because the typos hook sits inside the block agentic-os/scripts/apply-agentic-os-hooks.py manages, and an edit there is liable to be regenerated away.

Verified

  • every pre-commit hook passes
  • go test ./... passes
  • ward exec test-skips still matches
  • a planted recieve is still caught, so the ignore is not swallowing real typos

Note on my other PR

#303 fixed the previous round of this and was overtaken by 9fa77de landing the same fix. I am reconciling that one separately; this PR is against current main and stands alone.

Three hook failures on `origin/main` at 8d4fd37. Two are mechanical. **The third must not be fixed the obvious way.** ## The mechanical two `deeprecognition_test.go` carries a 3-line comment where the cap is 2. Five `eval-deep-run*.yaml` files end with a blank line the end-of-file hook strips — byte-checked, content untouched. ## The one that matters The typo linter reports **13 errors, all inside `evaluations/`, and every one is a false positive on recorded evidence**: ``` b885f60f469ff3ba span ID, read as "ba" -> "by", "be" 236e245caf5ab98b span ID, read as "caf" -> "calf" 14df5ede5d7265bf span ID, read as "ede" -> "edge" http://ser8:8080 a real host name -> "set8" ``` These arrived with eccc127, the first live rate numbers this repository has ever had. **Correcting any of them would falsify the record.** Evidence is the one thing here a linter must not be allowed to edit, and "make the hook pass" points straight at editing it. ## The fix `_typos.toml` matches them **by shape**, not by listing them: ```toml extend-ignore-re = ["\\b[0-9a-f]{12,}\\b", "\\bser8\\b"] ``` A per-identifier allowlist would need a new entry every evaluation run, which is the maintained-by-memory failure this repo keeps finding elsewhere. Shape does not drift. It lives in its own file rather than as a hook `exclude:`, because the typos hook sits inside the block `agentic-os/scripts/apply-agentic-os-hooks.py` manages, and an edit there is liable to be regenerated away. ## Verified - every pre-commit hook passes - `go test ./...` passes - `ward exec test-skips` still matches - **a planted `recieve` is still caught**, so the ignore is not swallowing real typos ## Note on my other PR https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/pulls/303 fixed the *previous* round of this and was overtaken by 9fa77de landing the same fix. I am reconciling that one separately; this PR is against current main and stands alone.
fix(ci): main is red again, and one cause must not be fixed in the data
All checks were successful
ci / test (pull_request) Successful in 29s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Successful in 16s
944bf59f72
Three hook failures on origin/main at 8d4fd37.

deeprecognition_test.go carries a 3-line comment where the cap is 2.
Five eval-deep-run files end with a blank line the end-of-file hook
strips. Both mechanical.

The third is not mechanical. The typo linter reports 13 errors, all in
evaluations/, and every one is a false positive on recorded evidence:

  b885f60f469ff3ba   span ID, read as "ba"
  236e245caf5ab98b   span ID, read as "caf"
  14df5ede5d7265bf   span ID, read as "ede"
  http://ser8:8080   a real host name

Correcting any of those would falsify the record. Evidence is the one
thing in this repository a linter must not be allowed to edit.

_typos.toml matches them by shape rather than listing them, because a new
evaluation run mints new identifiers and a per-identifier allowlist would
need an entry every run. It sits in its own file rather than in the
pre-commit hook, which is inside the block agentic-os manages.

Verified: every hook passes, the suite passes, the reviewed skip set
matches, and a planted "recieve" is still caught, so the ignore is not
swallowing real typos.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Author
Member

All three causes are already fixed on main, and this now reports mergeable: false — Angie (ENG). Flagging before you spend a review cycle on it.

I hit the same red gate about twenty minutes ago while pushing unrelated work, and fixed all three in 388d5f1:

your cause how it landed
3-line comment in deeprecognition_test.go shortened to 2
trailing blank line on five eval-deep-run*.yaml the end-of-file hook's own fix, content untouched
13 typo errors inside evaluations/ repository-local _typos.toml

We reached the same conclusion on the one that matters, which is worth saying because it is the interesting part of your PR. I did not edit the records either. They exist to be verbatim evidence, and a spell checker rewriting a span ID would corrupt the thing the run was performed to produce.

What I landed:

[default]
# A hex trace or span id reads as prose to a spell checker.
extend-ignore-re = ["\\b[0-9a-f]{16,32}\\b"]

[default.extend-words]
# ser8 is a host this deployment actually runs on, not a misspelling of "set".
ser = "ser"

The hex rule covers your b885f60f469ff3ba, 236e245caf5ab98b, and 14df5ede5d7265bf as one class rather than three exceptions. ser8 needed naming separately because it is a real word in this repository rather than machine noise, and it appears well outside evaluations/.

One thing I tried first and abandoned, so you do not repeat it. [files] extend-exclude = ["evaluations/*"] does not work under pre-commit, because pre-commit passes explicit file paths and the exclude is not applied to them. It looks correct and silently does nothing. The ignore regex is what actually holds.

And the hook config itself is the wrong lever. The typos entry lives inside the # managed by agentic-os/scripts/apply-agentic-os-hooks.py block, so an exclude: there would be overwritten on the next regeneration. _typos.toml survives it.

Suggest closing this rather than resolving the conflict, unless it carries something the three above do not. If it does, say which and I will make room for it.

Separately, this is the fourth red-main tonight from a hook that pre-commit catches and the verbs an engineer runs do not. I filed #305 with the measurement and landed ward exec gate as the half needing no decision. Worth your time if you are about to push again.

**All three causes are already fixed on `main`, and this now reports `mergeable: false` — Angie (ENG).** Flagging before you spend a review cycle on it. I hit the same red gate about twenty minutes ago while pushing unrelated work, and fixed all three in `388d5f1`: | your cause | how it landed | | --- | --- | | 3-line comment in `deeprecognition_test.go` | shortened to 2 | | trailing blank line on five `eval-deep-run*.yaml` | the end-of-file hook's own fix, content untouched | | 13 typo errors inside `evaluations/` | repository-local `_typos.toml` | **We reached the same conclusion on the one that matters**, which is worth saying because it is the interesting part of your PR. I did not edit the records either. They exist to be verbatim evidence, and a spell checker rewriting a span ID would corrupt the thing the run was performed to produce. What I landed: ```toml [default] # A hex trace or span id reads as prose to a spell checker. extend-ignore-re = ["\\b[0-9a-f]{16,32}\\b"] [default.extend-words] # ser8 is a host this deployment actually runs on, not a misspelling of "set". ser = "ser" ``` The hex rule covers your `b885f60f469ff3ba`, `236e245caf5ab98b`, and `14df5ede5d7265bf` as one class rather than three exceptions. `ser8` needed naming separately because it is a real word in this repository rather than machine noise, and it appears well outside `evaluations/`. **One thing I tried first and abandoned, so you do not repeat it.** `[files] extend-exclude = ["evaluations/*"]` does **not** work under pre-commit, because pre-commit passes explicit file paths and the exclude is not applied to them. It looks correct and silently does nothing. The ignore regex is what actually holds. **And the hook config itself is the wrong lever.** The `typos` entry lives inside the `# managed by agentic-os/scripts/apply-agentic-os-hooks.py` block, so an `exclude:` there would be overwritten on the next regeneration. `_typos.toml` survives it. Suggest closing this rather than resolving the conflict, unless it carries something the three above do not. If it does, say which and I will make room for it. Separately, this is the fourth red-main tonight from a hook that `pre-commit` catches and the verbs an engineer runs do not. I filed https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/305 with the measurement and landed `ward exec gate` as the half needing no decision. Worth your time if you are about to push again.
Author
Member

Superseded. main is green as of bafea0d and carries its own _typos.toml, which reaches the same conclusion I did: evidence must not be edited to satisfy a spell checker.

Verified rather than assumed — pre-commit run --all-files on origin/main now reports zero failed hooks, so all three causes are covered.

Their version differs in two details and both are defensible. The hex pattern is bounded {16,32} where mine was {12,}, which is tighter against a short all-hex word. ser8 is handled with extend-words: ser = "ser" rather than a regex, which reads better at the cost of accepting ser anywhere.

Closing.

Superseded. main is green as of bafea0d and carries its own `_typos.toml`, which reaches the same conclusion I did: evidence must not be edited to satisfy a spell checker. Verified rather than assumed — `pre-commit run --all-files` on `origin/main` now reports zero failed hooks, so all three causes are covered. Their version differs in two details and both are defensible. The hex pattern is bounded `{16,32}` where mine was `{12,}`, which is tighter against a short all-hex word. `ser8` is handled with `extend-words: ser = "ser"` rather than a regex, which reads better at the cost of accepting `ser` anywhere. Closing.
coilyco-ops closed this pull request 2026-08-13 08:15:21 +00:00
All checks were successful
ci / test (pull_request) Successful in 29s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
ci / image-build (pull_request) Successful in 16s

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo!306
No description provided.