test: correct changelog guard trio interaction #127

Merged
codex-bot-andresmgsl merged 1 commit from build/126-changelog-assembled-trio into main 2026-07-24 11:05:58 +00:00
codex-bot-andresmgsl commented 2026-07-24 10:36:50 +00:00 (Migrated from github.com)

Closes #126

Summary

Correct the changelog guard trio test after fragment-mode changelog-armed changed the dropped-entry outcome, and preserve the assembled-only-red claim on the existing hand-edited fixture.

Worklog

  • Amend the dropped-entry rows: armed red on not consumed; assembled names the lost entry.
  • Add the hand-edited tree rows carrying the “only red” claim.
  • Rewrite the trio interaction comment.
  • Add the legacy ## Unreleased entry citing (#126).
  • Verify bash test/changelog-assembled.test.sh is green and its count grows (37 passed).
  • Verify the fragment-mode negative fails as required (36 passed, 1 expected failure at the amended armed row after removing the dropped fixture’s changelog.d/).
  • Verify canonical shellcheck -x test/changelog-assembled.test.sh is clean.
  • Verify test/run.sh is green (17/17 files).
  • Confirm final diff scope is exactly test/changelog-assembled.test.sh and CHANGELOG.md.

Acceptance criteria

  • test/run.sh is green on a clean checkout of main with this PR applied — 17/17 files.
  • test/changelog-assembled.test.sh run alone is green, and the count grows to 37.
  • The dropped-entry rows prove assembled names the missing entry, which neither armed nor monotonic reports.
  • The hand-edited rows prove assembled is the sole red while armed and monotonic are green.
  • The trio comment explains why armed is red on the dropped-entry tree without external context.
  • git diff --stat touches only test/changelog-assembled.test.sh and CHANGELOG.md.

Test plan

  • bash test/changelog-assembled.test.sh — 37 passed, 0 failed.
  • Negative: removed changelog.d/ from the dropped fixture immediately before the trio rows; the amended armed row failed with exit 0, wanted 1; restored the tracked file exactly afterward.
  • shellcheck -x test/changelog-assembled.test.sh — clean (the repository’s canonical sourced-file mode).
  • test/run.sh — 17 passed, 0 failed.
Closes #126 ## Summary Correct the changelog guard trio test after fragment-mode `changelog-armed` changed the dropped-entry outcome, and preserve the assembled-only-red claim on the existing hand-edited fixture. ## Worklog - [x] Amend the dropped-entry rows: armed red on `not consumed`; assembled names the lost entry. - [x] Add the hand-edited tree rows carrying the “only red” claim. - [x] Rewrite the trio interaction comment. - [x] Add the legacy `## Unreleased` entry citing (#126). - [x] Verify `bash test/changelog-assembled.test.sh` is green and its count grows (37 passed). - [x] Verify the fragment-mode negative fails as required (36 passed, 1 expected failure at the amended armed row after removing the dropped fixture’s `changelog.d/`). - [x] Verify canonical `shellcheck -x test/changelog-assembled.test.sh` is clean. - [x] Verify `test/run.sh` is green (17/17 files). - [x] Confirm final diff scope is exactly `test/changelog-assembled.test.sh` and `CHANGELOG.md`. ## Acceptance criteria - [x] `test/run.sh` is green on a clean checkout of `main` with this PR applied — 17/17 files. - [x] `test/changelog-assembled.test.sh` run alone is green, and the count grows to 37. - [x] The dropped-entry rows prove assembled names the missing entry, which neither armed nor monotonic reports. - [x] The hand-edited rows prove assembled is the sole red while armed and monotonic are green. - [x] The trio comment explains why armed is red on the dropped-entry tree without external context. - [x] `git diff --stat` touches only `test/changelog-assembled.test.sh` and `CHANGELOG.md`. ## Test plan - `bash test/changelog-assembled.test.sh` — 37 passed, 0 failed. - Negative: removed `changelog.d/` from the dropped fixture immediately before the trio rows; the amended armed row failed with `exit 0, wanted 1`; restored the tracked file exactly afterward. - `shellcheck -x test/changelog-assembled.test.sh` — clean (the repository’s canonical sourced-file mode). - `test/run.sh` — 17 passed, 0 failed.
danmt (Migrated from github.com) reviewed 2026-07-24 10:36:50 +00:00
claude-bot-andresmgsl commented 2026-07-24 10:40:45 +00:00 (Migrated from github.com)

🔎 reviewing head e37c2dfeef

🔎 reviewing head e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40
grok-bot-andresmgsl commented 2026-07-24 10:40:46 +00:00 (Migrated from github.com)

🔎 reviewing head e37c2dfeef

🔎 reviewing head e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40
grok-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 10:42:37 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: approve

Reviewed against #126 at e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40.

Acceptance criteria

Criterion Result
test/run.sh green, 17/17 files pass — ran in detached worktree at this head
test/changelog-assembled.test.sh alone green; count grows pass — 37 passed, 0 failed (hand-edited trio rows added, not swapped)
Dropped-entry: assembled names the lost entry (armed/monotonic do not) pass — armed expects exit 1 + not consumed; monotonic green; assembled expects Nine landed
Hand-edited: assembled sole red pass — armed green, monotonic green, assembled red on allegedly
Comment explains armed red on dropped tree without external context pass — notes #115 fragment mode, unconsumed survivor, #116 predated it; relocates “only red” to hand-edited
Diff touches only the test file and CHANGELOG.md passgit diff --stat origin/main...HEAD is exactly those two paths
Legacy ## Unreleased entry citing (#126) pass — one line under Unreleased

Verification run

  • bash test/changelog-assembled.test.sh → 37 passed, 0 failed
  • bash test/run.sh → 17 files passed, 0 failed
  • shellcheck -x test/changelog-assembled.test.sh → clean
  • Negative (issue test plan): strip changelog.d/ from the dropped fixture before the amended armed row → FAIL: … exit 0, wanted 1 — row is pinned to fragment mode, not a loose message

Scope / constraints

No guard behavior changes under actions/, bin/, or lib/ — test amendment only, as #126 requires. Does not carry the out-of-scope test/changelog.test.sh hunk that belongs to #117/#125.

Non-blocking: none that would hold a merge.

Approving this head.

## Verdict: approve Reviewed against #126 at `e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40`. ### Acceptance criteria | Criterion | Result | |---|---| | `test/run.sh` green, 17/17 files | **pass** — ran in detached worktree at this head | | `test/changelog-assembled.test.sh` alone green; count grows | **pass** — 37 passed, 0 failed (hand-edited trio rows added, not swapped) | | Dropped-entry: assembled names the lost entry (armed/monotonic do not) | **pass** — armed expects exit 1 + `not consumed`; monotonic green; assembled expects `Nine landed` | | Hand-edited: assembled sole red | **pass** — armed green, monotonic green, assembled red on `allegedly` | | Comment explains armed red on dropped tree without external context | **pass** — notes #115 fragment mode, unconsumed survivor, #116 predated it; relocates “only red” to hand-edited | | Diff touches only the test file and `CHANGELOG.md` | **pass** — `git diff --stat origin/main...HEAD` is exactly those two paths | | Legacy `## Unreleased` entry citing `(#126)` | **pass** — one line under Unreleased | ### Verification run - `bash test/changelog-assembled.test.sh` → 37 passed, 0 failed - `bash test/run.sh` → 17 files passed, 0 failed - `shellcheck -x test/changelog-assembled.test.sh` → clean - Negative (issue test plan): strip `changelog.d/` from the dropped fixture before the amended armed row → `FAIL: … exit 0, wanted 1` — row is pinned to fragment mode, not a loose message ### Scope / constraints No guard behavior changes under `actions/`, `bin/`, or `lib/` — test amendment only, as #126 requires. Does not carry the out-of-scope `test/changelog.test.sh` hunk that belongs to #117/#125. Non-blocking: none that would hold a merge. Approving this head.
claude-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 10:43:06 +00:00
claude-bot-andresmgsl (Migrated from github.com) left a comment

Approve — head e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40, reviewed against issue #126's acceptance criteria.

What I verified (ran, not read)

  • bash test/changelog-assembled.test.sh on the head, alone: 37 passed, 0 failed. The count grew from 34 rows — the two dropped-entry rows were amended in place and the three hand-edited rows added, not swapped in.
  • bash test/run.sh: 17 files passed, 0 failed — main's red row is fixed.
  • shellcheck -x test/changelog-assembled.test.sh: clean.
  • The test plan's negative: I stripped changelog.d/ from the dropped fixture immediately before the trio rows and re-ran. The amended armed row failed with exit 0, wanted 1 (36 passed, 1 failed) — the row is pinned to #115's fragment mode itself, not merely to a message string. This reproduces the PR's worklog claim exactly.
  • git diff against the merge base 736733e touches exactly test/changelog-assembled.test.sh and CHANGELOG.md.

Criteria walk

  • Dropped-entry rows: armed asserts exit 1 matching not consumed (armed names only the surviving file, changelog.d/9.md); the assembled row asserts Nine landed — the lost entry's prose, which neither armed nor monotonic ever reports. The guard's distinct claim survives the interaction.
  • Hand-edited rows: armed green (agrees — the section is publishable and no fragment survives), monotonic green (still present), assembled the sole red (allegedly). #116's "only red" argument now stands on the tree where it actually holds.
  • The comment: states why armed is red on the dropped-entry tree ("the surviving fragment is unconsumed on a bare tree") self-containedly — a reader needs neither #115 nor #116 open. The issue-number breadcrumbs follow the repo's comments-carry-why convention.
  • Changelog: one legacy-mode line under ## Unreleased citing (#126), inserted above the existing entries, heading untouched.

No guard behavior changed; nothing under actions/, bin/, or lib/ is in the diff. #125 has not merged, so the issue is live and this is the right vehicle.

**Approve** — head `e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40`, reviewed against issue #126's acceptance criteria. ## What I verified (ran, not read) - `bash test/changelog-assembled.test.sh` on the head, alone: **37 passed, 0 failed**. The count grew from 34 rows — the two dropped-entry rows were amended in place and the three hand-edited rows added, not swapped in. - `bash test/run.sh`: **17 files passed, 0 failed** — main's red row is fixed. - `shellcheck -x test/changelog-assembled.test.sh`: clean. - **The test plan's negative**: I stripped `changelog.d/` from the `dropped` fixture immediately before the trio rows and re-ran. The amended armed row failed with `exit 0, wanted 1` (36 passed, 1 failed) — the row is pinned to #115's fragment mode itself, not merely to a message string. This reproduces the PR's worklog claim exactly. - `git diff` against the merge base `736733e` touches exactly `test/changelog-assembled.test.sh` and `CHANGELOG.md`. ## Criteria walk - **Dropped-entry rows**: armed asserts exit 1 matching `not consumed` (armed names only the surviving *file*, `changelog.d/9.md`); the assembled row asserts `Nine landed` — the lost *entry's prose*, which neither armed nor monotonic ever reports. The guard's distinct claim survives the interaction. - **Hand-edited rows**: armed green (`agrees` — the section is publishable and no fragment survives), monotonic green (`still present`), assembled the sole red (`allegedly`). #116's "only red" argument now stands on the tree where it actually holds. - **The comment**: states why armed is red on the dropped-entry tree ("the surviving fragment is unconsumed on a bare tree") self-containedly — a reader needs neither #115 nor #116 open. The issue-number breadcrumbs follow the repo's comments-carry-why convention. - **Changelog**: one legacy-mode line under `## Unreleased` citing (#126), inserted above the existing entries, heading untouched. No guard behavior changed; nothing under `actions/`, `bin/`, or `lib/` is in the diff. #125 has not merged, so the issue is live and this is the right vehicle.
kimi-bot-andresmgsl commented 2026-07-24 10:46:52 +00:00 (Migrated from github.com)

🔎 reviewing head e37c2dfeef

🔎 reviewing head e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40
kimi-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 10:50:31 +00:00
kimi-bot-andresmgsl (Migrated from github.com) left a comment

Approve — head e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40, reviewed whole against issue #126's acceptance criteria.

What I verified (ran, not read)

  • bash test/changelog-assembled.test.sh alone at this head: 37 passed, 0 failed — count grows, rows added not swapped. ✓
  • Negative from the test plan: copied the tree, made the dropped fixture delete its changelog.d/ instead of restoring the fragment, re-ran — the amended row trio, dropped-entry tree: changelog-armed red too (unconsumed fragment) failed with exit 0, wanted 1, exactly as required. The row is pinned to fragment mode, not to a message. ✓
  • git diff --stat origin/main...HEAD: only test/changelog-assembled.test.sh (+18/−7) and CHANGELOG.md (+1). ✓
  • Changelog entry is one line under ## Unreleased citing (#126), inserted above the #115 line — correct legacy-mode placement per CONTRIBUTING. ✓

test/run.sh and shellcheck could not run on my box (node, jq, shellcheck absent — every local failure traced to command not found, none to the diff). Both are covered by CI gates on this head: the test job (which runs shellcheck-all.sh per .github/workflows/ci.yml:19) is green, as are self-guards and the exercise jobs.

Acceptance criteria

Criterion Result
test/run.sh green, 17/17 pass — CI test job green on this head
assembled test green alone, count grows pass — 37/0 locally
dropped-entry rows prove assembled names the lost entry pass — check ... "Nine landed" run dropped base at exit 1; armed's red carries only not consumed, monotonic stays green
hand-edited rows prove assembled is the sole red pass — armed green agrees, monotonic green still present, assembled red allegedly, all three new rows green
comment explains armed's red without external context pass — states fragment mode, the unconsumed-survivor reason, and the #116-predates-#115 history inline
diff touches only the two files pass

Scope check

Nothing under actions/, bin/, or lib/ touched — the issue's "no guard behavior changes" holds. The out-of-scope changelog.test.sh hunk from the #125 branch is correctly absent.

Non-blocking nit

The comment's trailing parenthetical (#117's flip recorded the interaction as it now stands) reads a touch ahead of reality — #117 hasn't landed; this PR is what records the interaction. Harmless, and the comment carries its load either way.

**Approve** — head `e37c2dfeef2e7088b50f5a0bf543d1cc53c71f40`, reviewed whole against issue #126's acceptance criteria. ## What I verified (ran, not read) - `bash test/changelog-assembled.test.sh` alone at this head: **37 passed, 0 failed** — count grows, rows added not swapped. ✓ - Negative from the test plan: copied the tree, made the `dropped` fixture delete its `changelog.d/` instead of restoring the fragment, re-ran — the amended row `trio, dropped-entry tree: changelog-armed red too (unconsumed fragment)` **failed with `exit 0, wanted 1`**, exactly as required. The row is pinned to fragment mode, not to a message. ✓ - `git diff --stat origin/main...HEAD`: only `test/changelog-assembled.test.sh` (+18/−7) and `CHANGELOG.md` (+1). ✓ - Changelog entry is one line under `## Unreleased` citing `(#126)`, inserted above the `#115` line — correct legacy-mode placement per CONTRIBUTING. ✓ `test/run.sh` and `shellcheck` could not run on my box (`node`, `jq`, `shellcheck` absent — every local failure traced to `command not found`, none to the diff). Both are covered by CI gates on this head: the `test` job (which runs `shellcheck-all.sh` per `.github/workflows/ci.yml:19`) is green, as are `self-guards` and the exercise jobs. ## Acceptance criteria | Criterion | Result | |---|---| | `test/run.sh` green, 17/17 | pass — CI `test` job green on this head | | assembled test green alone, count grows | pass — 37/0 locally | | dropped-entry rows prove assembled names the lost entry | pass — `check ... "Nine landed" run dropped base` at exit 1; armed's red carries only `not consumed`, monotonic stays green | | hand-edited rows prove assembled is the sole red | pass — armed green `agrees`, monotonic green `still present`, assembled red `allegedly`, all three new rows green | | comment explains armed's red without external context | pass — states fragment mode, the unconsumed-survivor reason, and the #116-predates-#115 history inline | | diff touches only the two files | pass | ## Scope check Nothing under `actions/`, `bin/`, or `lib/` touched — the issue's "no guard behavior changes" holds. The out-of-scope `changelog.test.sh` hunk from the #125 branch is correctly absent. ## Non-blocking nit The comment's trailing parenthetical (`#117's flip recorded the interaction as it now stands`) reads a touch ahead of reality — #117 hasn't landed; this PR is what records the interaction. Harmless, and the comment carries its load either way.
Sign in to join this conversation.
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: heavy-duty/ceremony#127
No description provided.