Skip to content

test,docs(changelog): merge duplicate headings and port the two development-side guards (litclock-dev#707) - #61

Merged
kapoorankush merged 1 commit into
masterfrom
fix/port-guards-and-merge-headings-707
Aug 21, 2026
Merged

test,docs(changelog): merge duplicate headings and port the two development-side guards (litclock-dev#707)#61
kapoorankush merged 1 commit into
masterfrom
fix/port-guards-and-merge-headings-707

Conversation

@kapoorankush

Copy link
Copy Markdown
Owner

What

The litclock-dev#707 port, owner-approved:

  1. [Unreleased] duplicate ### Changed merged — 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.
  2. The ported guard found a second live instance on arrival: the released [v0.212.0] section carried duplicate ### Fixed / ### For contributors headings the whole time. Merged the same way.
  3. 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).
  4. chmod/tracked-mode parity guard in tests/test_update_sh.py (litclock-dev#682) — the guard that would have caught qa-reresolve-hw-test.sh arriving 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

  • Zero runtime code — the diff is CHANGELOG.md + two test files.
  • No owner-visible update card can change: cards fetch CHANGELOG.md at the release tag's ref and extract only that tag's section; master-branch edits to released sections are unreachable.
  • Merges verified programmatically bullet-for-bullet lossless in both sections; all files LF; ref-namespace guard green including the new files; full suite 3420 passed.
  • Three mutants killed: the exact #682 mode regression (update-index --chmod=-x → red), an unclassifiable chmod line (→ red), a reintroduced duplicate heading (→ red).
  • Guard-and-fix land in one PR by construction — the guard fails on the pre-merge file.

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

…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.
@kapoorankush
kapoorankush merged commit 291a0d6 into master Aug 21, 2026
5 checks passed
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