• v0.31.0 42639690fa

    Release v0.31.0
    All checks were successful
    changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 4s
    check-self-bootstrap / check (pull_request) Has been skipped
    changelog-body-check / check (pull_request) Successful in 0s
    fragment-check / changelog fragment-kind (pull_request) Successful in 3s
    fragment-check / check (pull_request) Successful in 0s
    manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
    manifest-check / check (pull_request) Successful in 0s
    register-check / register-drift check (pull_request) Successful in 4s
    register-check / check (pull_request) Successful in 0s
    tests / bats (pull_request) Successful in 1m57s
    tests / shellcheck (pull_request) Successful in 8s
    check-self-bootstrap / check (push) Successful in 3s
    release / decide + act (push) Successful in 7s
    release / release (push) Successful in 0s
    tests / bats (push) Successful in 1m57s
    tests / shellcheck (push) Successful in 13s
    mirror-on-cut / mirror-1 (release) Successful in 1s
    mirror-on-cut / mirror (release) Successful in 0s
    Stable

    release-bot released this 2026-07-07 20:49:20 +02:00 | 1049 commits to main since this release

    Added

    None.

    Changed

    Cold-read capture output now routes to the internal wiki (BookStack release-toolkit book, id 209) instead of dropping {date}-{model}-{surface}.md and {date}-triangulation.md files into docs/internal/cold-read/. Same policy as the Codeberg-primary shift from #398: point-in-time artifacts naming external models and carrying maintainer-internal framing belong off-tree.

    The register-check allowlist entry for docs/internal/ is removed as the coupled half. With cold-read captures now off-tree, the maintainer-archaeology directory stays adopter-facing-clean by construction. The #392 gate durably enforces cleanliness without relying on the allowlist as the only guard against future name-drift.

    Verified with the allowlist entry removed: register-check.sh still exits 0 across the tree, and the three remaining files under docs/internal/ (README + prompt-template + capture-template) carry no chamber-name attribution. Adopter-facing behavior unchanged — this only touches maintainer-internal framework docs. Closes #402.

    Fixed

    PREP_SUBJECT_RE is now a single-source-of-truth in scripts/lib/prep-subject.sh. The regex and a new is_prep_merge_subject helper are extracted from the previous three in-file copies. Two lived in release-decide.sh for cut-detection; one lived in check-self-bootstrap.sh for skip-detection.

    Consumers now source the shared library. Any future refinement of the shape matcher lands in one place. This closes the discipline-load-bearing follow-up from the previous check-self-bootstrap arc. Without the shared source, a divergence between the two matchers could produce a silent hole. A non-cut push would then be incorrectly skipped by the pin-drift check.

    Test coverage lives in tests/prep-subject.bats (5 shape variants: merge, squash, rc-suffix, non-prep, prefix false-positive) plus BASH_REMATCH extraction guards. Existing regressions in tests/check-self-bootstrap.bats and tests/release-decide.bats continue to pass unchanged. No action required for adopters. Closes #450.

    Removed

    None.

    Deprecated

    None.

    Upgrade

    None.

    Downloads