ceremony/test
cluade-reviewer-andresmgsl bada4ffff5 test(issueflow): each of the three sites is caught by behaviour, not only by the pin (#210)
@codex-reviewer-andresmgsl's two scope items, applied before the first review
round rather than after.

1. THE GUARD IS COMMENT-AWARE, WITH CONTROLS. It already stripped comments —
   it has to, because the #188 warning that explains why has("pull_request") is
   wrong contains the string. Without controls that was an untested property,
   and the pressure it creates is real: a raw grep would push a builder into
   deleting the very warning that prevents recurrence. Two fixtures now prove
   it: the explanatory comment is allowed, an executable jq filter is rejected.

2. ALL THREE SITES ARE DRIVEN BY BEHAVIOUR. The pin makes any revert red, but a
   pin proves a string is absent, not that each replacement means the intended
   thing:

     BOARD_RECORDS        the forgejo-shaped board is not read as empty
     release_bodies       an open `release` issue whose gate holds an open
                          member makes a claimable NON-member draw a window
                          flag — empty carriers, no flag, so the row
                          discriminates the site instead of merely reaching it
     reconcile_issue_pass the scalar payload: key-present-null is an issue,
                          object-valued is a PR, key-absent is still an issue

   The release_bodies row did NOT discriminate on its first write — it asserted
   an issue number that BOARD_RECORDS also produces, so reverting the site left
   it green. Caught by mutating each site separately rather than trusting the
   suite total.

Mutation, per site: BOARD_RECORDS 3 red, release_bodies 2 red,
reconcile_issue_pass 2 red.

test/run.sh 28/28; issueflow 510/510; shellcheck 0.10.0 clean.

Refs #210
2026-08-05 14:37:37 +00:00
..
fixtures Merge pull request #29 from codex-bot-andresmgsl/build/4-changelog-section 2026-07-22 20:12:01 +01:00
attention.test.sh test: cover attention target diagnostics 2026-08-03 19:53:25 +00:00
changelog-armed.test.sh test(changelog): the cite rule's own cases, both callers asserted 2026-08-04 12:11:09 +00:00
changelog-assemble.test.sh test(changelog): the cite rule's own cases, both callers asserted 2026-08-04 12:11:09 +00:00
changelog-assembled.test.sh test(changelog): every fragment fixture carries a terminal cite 2026-08-04 12:08:54 +00:00
changelog-monotonic.test.sh test: changelog-monotonic contract suite — constructed git histories 2026-07-22 21:11:46 +00:00
changelog.test.sh fix(changelog): one fragment, one diagnosis, wherever the long entry sits 2026-08-04 12:38:13 +00:00
closes_references.test.sh feat(forge): replace both gh api graphql sites with REST + a body parser 2026-08-02 18:41:03 +00:00
decide.test.sh feat: lib/decide.sh — the merge door's decision, pure and exhaustively tested 2026-07-22 18:59:29 +00:00
docs-sync.test.sh test(guards): the manifest guard drives the whole test plan 2026-08-04 10:16:27 +00:00
drill-recorded.test.sh feat: actions/drill-recorded — a release carries its evidence 2026-07-22 21:28:06 +00:00
facts.test.sh fix(forge): the release doors speak the shim, and an unread fact refuses (#191) 2026-08-04 11:31:06 +00:00
forge-backends.test.sh fix(forgejo): a read failure names its verb too, and the tests assert the whole diagnostic (#192) 2026-08-05 13:11:33 +00:00
forge.test.sh fix(labels-scope): jq 1.6 cannot parse $label — the runner image ships 1.6 2026-08-02 20:34:02 +00:00
harness.sh feat(forge): port every reconciler call site onto the shim 2026-08-02 19:43:58 +00:00
issueflow-reconcile.test.sh test(issueflow): each of the three sites is caught by behaviour, not only by the pin (#210) 2026-08-05 14:37:37 +00:00
labels-reconcile.test.sh Merge pull request 'lib/forge-forgejo.sh + labels-reconcile — label removal is a full-set PUT, and a write that did not happen fails the sweep (#192)' (#206) from build/192-label-write into main 2026-08-05 14:07:59 +00:00
labels-scope.test.sh fix: the labeler map learns lib/attention.sh and the surfaces it never knew (#302) 2026-08-04 17:28:37 +00:00
labels-triggers.test.sh labels: detach the reconcile sweep from PR-triggered runs (#209) 2026-08-01 16:20:00 +00:00
labels.test.sh merge upstream 0.6.0 onto the forge tree, and port every gh call site it brought (#198) 2026-08-05 11:56:23 +00:00
marker-check.test.sh test: document marker fixture incidents 2026-08-04 09:57:51 +00:00
no-runtime-gh.test.sh fix(198): the action fails closed, the caller decides scheduling, the guard decides the forge (#198) 2026-08-05 12:30:28 +00:00
refs-not-closing.test.sh fix(198): the action fails closed, the caller decides scheduling, the guard decides the forge (#198) 2026-08-05 12:30:28 +00:00
release-chain.test.sh fix(forge): the release doors speak the shim, and an unread fact refuses (#191) 2026-08-04 11:31:06 +00:00
release-path.test.sh merge upstream 0.6.0 onto the forge tree, and port every gh call site it brought (#198) 2026-08-05 11:56:23 +00:00
ruling.test.sh merge upstream 0.6.0 onto the forge tree, and port every gh call site it brought (#198) 2026-08-05 11:56:23 +00:00
run.sh ci: scaffold test and lint workspace 2026-07-22 16:56:25 +00:00
runner-isolated.test.sh test(guards): runner-isolated fixture matrix — 12 spec rows plus the block-sequence cases (#58) 2026-07-23 12:03:55 +00:00
self-ref.test.sh feat: the reusable release workflow — both doors, one implementation 2026-07-22 19:55:39 +00:00
vendored.test.sh fix(consumers): the manifest is readable at 0.1.0, not 0.5.0 2026-08-04 10:29:44 +00:00
version.test.sh feat: lib/version.sh — one version abstraction, two backends 2026-07-22 18:19:50 +00:00