test,docs(changelog): merge duplicate headings and port the two development-side guards (litclock-dev#707) - #61
Merged
Conversation
…opment-side guards (litclock-dev#707) [Unreleased] carried two ### Changed headings (df01118, #48) — the defect litclock-dev#697 found and litclock-dev#698 fixed in the development repo, never ported here. Running the ported guard flagged a second live instance: the RELEASED [v0.212.0] section had duplicate ### Fixed and ### For contributors headings unnoticed the whole time. Both merged, every bullet byte-preserved (verified programmatically), no update card any owner has seen can change (cards read the file at the release tag's ref). Two guards arrive: tests/test_changelog_structure.py (no ## section may repeat a ### subheading; fence-aware, tab-tolerant, raises on an unterminated fence) and the chmod/tracked-mode parity guard in tests/test_update_sh.py (litclock-dev#682) — every file update.sh chmods must be tracked executable, or every update on every device re-dirties the tree and the 'Uncommitted changes detected' warning becomes permanent noise. That is the defect that reached a field device via this repo's v0.224.0 (qa-reresolve-hw-test.sh, tracked 100644, symptom fixed in #59 with nothing to stop a recurrence until now). Guard inventory derives from update.sh's actual chmod lines, fails closed on unclassified lines, matches globs as bash would, and reads modes from the index, not the filesystem. Docstrings localized to this repo's history per pre-PR review. Three mutants killed here: the exact #682 mode regression, an unclassifiable chmod line, and a reintroduced duplicate heading.
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.
What
The litclock-dev#707 port, owner-approved:
[Unreleased]duplicate### Changedmerged — the litclock-dev#697 defect, introduced here by docs(license): distribute quote corpus under CC BY-NC-SA 4.0, split from MIT code #48 and never fixed when litclock-dev#698 fixed it in the development repo.[v0.212.0]section carried duplicate### Fixed/### For contributorsheadings the whole time. Merged the same way.tests/test_changelog_structure.py— no##section may repeat a###subheading (fence-aware, tab-tolerant, raises on unterminated fences; the development repo's fourteen-mutant hardening).tests/test_update_sh.py(litclock-dev#682) — the guard that would have caughtqa-reresolve-hw-test.sharriving 100644 before it reached a field device via v0.224.0 (fix(qa): track qa-reresolve-hw-test.sh executable (litclock-dev#682) #59 fixed the symptom; this stops the recurrence).Safety
update-index --chmod=-x→ red), an unclassifiable chmod line (→ red), a reintroduced duplicate heading (→ red).Pre-PR review (per repo rule) found three dev-vantage docstring claims that were false in this repo (wrong introduction commit, references to release tooling that only exists in the development repo, an update-card byte-identity claim whose second reason doesn't hold here); all localized before opening.
https://claude.ai/code/session_01Nj3R2ZobrU28yNYQ38XAzb