Skip to content

chore(release): v1.8.24 — the ignore guard asks git, and broke three times learning how - #424

Merged
KbWen merged 1 commit into
mainfrom
chore/release-v1.8.24
Aug 24, 2026
Merged

chore(release): v1.8.24 — the ignore guard asks git, and broke three times learning how#424
KbWen merged 1 commit into
mainfrom
chore/release-v1.8.24

Conversation

@KbWen

@KbWen KbWen commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Release cut for v1.8.24, packaging #423.

What is in it

A sibling fork of the same ancestor reported that .gitignore preserves persistent SSoT artifacts returned PASS while the governance record had stopped being committed — their .agentcortex/context/archive/*.md hides the archived Work Logs without ever spelling that directory, and the guard compared whole .gitignore lines against a fixed list of directory paths. The same blind spot had grown independently in both forks, which is what makes it a class.

The guard now asks git. The fix then broke three times, each break the same shape as the defect it was fixing, and none of them caught by self-review:

break why it mattered
verdict read from check-ignore -v -v exits 0 whenever a pattern matched, negations included — so dir/* + !dir/*.md failed a correct adopter and named their protective ! line as the pattern to remove
--no-index omitted check-ignore skips tracked paths, so the one real probe was inert in every healthy deploy — a detection narrowing inside a broadening change
discriminating on check-ignore -- . a blank CRLF line is the pattern \r, git strips it to the empty string, and the empty pattern matches . — FAILing every core.autocrlf=true checkout, including this repository

The third survived a self-review, seventeen scenarios and a green 912-test suite, because every scenario deployed a fresh tree and deploy.sh writes LF. A fresh-deploy fixture is not a checkout.

Adopter delta

On a healthy tree, nothing changes — measured: upgrading a v1.8.23 install carrying its own work log, spec and ignore rule left the tallies identical at 96/6/2/6.

Newly caught, each a FAIL naming the exact source:line: a .gitignore hiding the archive or docs/specs/ by a content glob; a .git/info/exclude or global excludes file doing the same (previously not consulted at all); a project deployed under an outer repository's ignored path (its own cause, its own remedy, and an explicit warning not to delete that rule).

Newly not flagged, equally deliberate: the dir/* + !dir/*.md idiom, a CRLF .gitignore, and a non-git tree — which reports SKIP rather than a false PASS.

All four changed deployed files are core tier, so this arrives on the next deploy with no adopter action. No new flags, no new deployed files, no engine or gate change.

Release surfaces

Seven, bumped by hand: deploy.sh ACX_VERSION, CITATION.cff, both TESTING_PROTOCOL twins, both AGENT_MODEL_GUIDE twins, and the CHANGELOG heading. There is still no test pinning their consistency — recorded, not fixed here.

Evidence

Full CI-equivalent suite (no -m filter, run as CI runs it): 913 passed, 1 skipped, 0 failed. Both validators on this repo pass=118 warn=3 fail=0 skip=2, identical, exit 0. ADR-006 native-check ratchet unmoved at 204/204 — the stricter guard cost no headroom.

🤖 Generated with Claude Code

…times learning how

Packages PR #423. A sibling fork reported that the SSoT ignore guard reported
PASS while the governance record stopped being committed; the same blind spot
had grown independently in both forks of the same ancestor.

The fix broke three times on the way, each break the same shape as the original
defect: reading `check-ignore -v`'s exit status (0 on a negation match, so it
failed correct adopters and named their protective `!` line as removable),
omitting `--no-index` (a detection narrowing inside a broadening change), and
discriminating on `check-ignore -- .` (a blank CRLF line is the pattern \r,
which git strips to empty, and the empty pattern matches `.` -- FAILing every
core.autocrlf checkout including this repo). All three are mutation-guarded.

Version bumped on all seven release surfaces by hand; there is still no test
pinning their consistency.

Full CI-equivalent suite 913 passed / 1 skipped / 0 failed. Both validators
pass=118 warn=3 fail=0 skip=2, identical. ADR-006 native ratchet unmoved at
204/204.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@KbWen
KbWen merged commit a6b04a2 into main Aug 24, 2026
19 checks passed
@KbWen
KbWen deleted the chore/release-v1.8.24 branch August 24, 2026 16:08
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