Commit graph

439 commits

Author SHA1 Message Date
dan-claude-bot
f5bac7c7ee fix: the labeler map learns lib/attention.sh and the surfaces it never knew (#302)
lib/attention.sh had #267 D4's premise exactly — both reconcilers source
it, nothing release-side does — and [scope:release-flow] alone was a
wrong answer of the class that decision exists to correct. The sweep
workflow pair joins beside its trigger pair (detached in #209), the
shared-lib tests take scope:labels alone (a test inherits no lib/**
glob), and D4's seven enumerated rows land one each. No catch-all, by
decision: both directories span all four scopes. Each of the 13 new map
rows is protected by its own assertion — deleted alone, each reds
exactly its case.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 17:28:37 +00:00
Daniel Marin
0c7d7e758c
Merge pull request #306 from cndgrr/build/304-reconcile-fixture-roster
fix(test): the labels-reconcile fixtures stop reading the live roster (#304)
2026-08-04 18:25:30 +01:00
cndgrr
66a0eb5d65 test(labels-reconcile): fixture roster replaces the live panel by slot
The state-machine fixtures bound BOT1/BOT2/BOT3 to REQUIRED_BOTS by index off
the shipped .github/labels.conf, so three fixtures silently required a
four-member panel=. Shrinking it to three left the third slot unbound and
set -u aborted the file before assertion 1: 217 assertions became 0, on main
and on every branch cut from it.

The fixtures now write their own conf, in test/labels.test.sh's shape, at all
three load sites (top of file, the #205 re-drafted-round block, and the
mutant_blockers subshell). One live-file case survives as a property — the
shipped conf parses and recuses each member from its own panel — with no
index and no expected size, and a copy whose panel= names nobody proves it
still has teeth.

Refs #304
2026-08-04 17:04:09 +00:00
Daniel Marin
97cc00e268
Merge pull request #303 from dan-claude-bot/build/284-ruling-clock-comments-only
fix: the issue-side ruling clock reads comments only — an assignment is the claim's fact
2026-08-04 17:49:57 +01:00
Daniel Marin
404c4f6099
Update labels.conf 2026-08-04 17:39:45 +01:00
Daniel Marin
7e52e35596
Merge pull request #301 from andriujoseba/build/282-triage-slim
docs: slim TRIAGE.md incident narratives
2026-08-04 17:37:33 +01:00
Daniel Marin
b2a3e43ae4
Merge pull request #300 from cndgrr/build/267-labeler-scope
fix(labels): the scope map locates again — changelog.d/** is every PR
2026-08-04 17:37:20 +01:00
dan-claude-bot
48547d5eb1 fix: the issue-side ruling clock reads comments only (#284)
Claiming a needs-ruling issue dated it through the assigned timeline
event, silencing the 7-day escalation nudge at exactly the moment a
builder started working through it. The ruling block now reads
last_issue_comment_activity (D1); the reclaim clock keeps the assignment
(D2) because there the assignment IS the claim; post-merge hands its
evidence read to the ruling block instead of reading again (D6, D7); the
claimed branch reads both clocks at its top, before anything it posts.
LABELS.md and lib/ruling.sh now say what each surface's clock reads
(D4, D5). The #257-era order compositions move to the comments read —
the timeline is no longer an input the issue clocks take, and its
unreadability no longer holds unrelated writes hostage; that narrowing
is pinned rather than implied.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-04 16:16:19 +00:00
cndgrr
abe31a6d4a test(labels): assert each guard row alone, not bundled with its sibling
The D3 guard loop passed the action path and its test path to derives in
one call. derive_labels emits scope:guards when either matches, so any one
of the six rows could be deleted with the case still green — three
assertions standing in for six rows. Split into one assertion per path.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 15:56:55 +00:00
Andriujose
f3125631b9 docs: keep answer outcome explicit 2026-08-04 15:51:16 +00:00
Andriujose
de3ab517d7 docs: slim triage doctrine 2026-08-04 15:48:27 +00:00
Daniel Marin
fe45180616
Merge pull request #299 from andriujoseba/build/257-board-read
fix: abort on unreadable issue board
2026-08-04 16:43:32 +01:00
cndgrr
5356702817 docs(changelog): fragment for #267 2026-08-04 15:34:17 +00:00
cndgrr
0fe015da69 fix(labels): the scope map locates again
changelog.d/** matched every PR that changes behavior, so scope:release-flow
was a constant, not a locator (#267).
2026-08-04 15:33:39 +00:00
Daniel Marin
5fd1c1b014
Merge pull request #295 from cndgrr/build/281-builder-slim
docs(builder): BUILDER.md slims to the rules — narratives become bare local cites
2026-08-04 16:27:06 +01:00
Andriujose
353fa54ae1 fix: abort on unreadable issue board 2026-08-04 15:03:25 +00:00
Daniel Marin
b7005ee9cd
Merge pull request #298 from andriujoseba/build/288-collision-edge
docs: declare collision-edge chains
2026-08-04 15:56:19 +01:00
cndgrr
b44f7ed6ee Merge branch 'main' into build/281-builder-slim 2026-08-04 14:47:38 +00:00
Andriujose
90961cad51 docs: declare collision-edge chains 2026-08-04 14:27:49 +00:00
Daniel Marin
1a9fdde8fc
Merge pull request #297 from andriujoseba/build/266-task-list-heading
docs: name the epic task-list heading
2026-08-04 15:20:56 +01:00
cndgrr
64e3af682f Merge branch 'main' into build/281-builder-slim 2026-08-04 14:13:38 +00:00
cndgrr
92c0e7c6f0 docs(builder): bind the red-head trigger to the round's ruled terms
The red-head rule in Picking carried its own trigger definition at the
pre-slim head; the squeeze took it, leaving 'failing check' and 'red
check' classified only forward in the review round. At an all-cancelled
head that let parked shape 2 read satisfied on its face, parking a claim
the rule says is never parked (#163, #276).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 14:13:34 +00:00
Andriujose
08b817b814 docs: name the epic task-list heading 2026-08-04 13:42:24 +00:00
cndgrr
49e1fe2e6e docs(builder): give step 1 its paragraph breaks back; fix two doubled connectives 2026-08-04 13:40:51 +00:00
cndgrr
900963d653 docs(builder): name the subject in the staleness-sweep clause 2026-08-04 13:40:08 +00:00
Daniel Marin
f899bb5690
Merge pull request #296 from andriujoseba/build/264-flagging-unassigned
docs(triage): scope no-assignee bug to flagging
2026-08-04 14:39:59 +01:00
cndgrr
43d845575a docs(builder): state #276's collapse rule in full, not by allusion 2026-08-04 13:39:06 +00:00
cndgrr
4800aef363 docs(builder): restore the re-request deferral and three clauses the audit found 2026-08-04 13:36:41 +00:00
cndgrr
b4779bbc18 docs(builder): keep code spans unbroken across the wrap 2026-08-04 13:32:36 +00:00
cndgrr
46aeb02078 docs(builder): restore five rules the squeeze had compressed away 2026-08-04 13:31:48 +00:00
cndgrr
4100121c7a docs(builder): final squeeze — 272 lines, every D2 rule intact 2026-08-04 13:30:12 +00:00
cndgrr
cef7ea206b docs(builder): WIP — proposal biography and list scaffolding out 2026-08-04 13:27:52 +00:00
cndgrr
e1c3e3e9af docs(builder): WIP — terse register throughout 2026-08-04 13:23:56 +00:00
cndgrr
1b6143f4aa docs(builder): WIP — drop optional whys, classes as a list 2026-08-04 13:21:26 +00:00
cndgrr
92ff82c1c6 docs(builder): WIP — minimal-statement register 2026-08-04 13:18:31 +00:00
Andriujose
5ea59780b6 docs(triage): scope no-assignee bug to flagging 2026-08-04 13:16:58 +00:00
cndgrr
d25cbb04b7 docs(builder): WIP — further compression, ruling ladder tightened 2026-08-04 13:16:37 +00:00
cndgrr
e3ec95bb37 docs(builder): WIP — tighter register across every section 2026-08-04 13:14:35 +00:00
Daniel Marin
4e0c5c2568
Merge pull request #294 from andriujoseba/build/291-terminal-fragment-cites
docs: add terminal citations to 0.6.0 fragments
2026-08-04 14:14:23 +01:00
cndgrr
6ebdd2efd9 docs(builder): WIP — slim BUILDER.md to the rules, bare local cites 2026-08-04 13:11:32 +00:00
Daniel Marin
acf4125fd6
Merge branch 'main' into build/291-terminal-fragment-cites 2026-08-04 14:11:20 +01:00
Daniel Marin
2e11855839
Merge pull request #289 from cndgrr/build/262-fragment-cite
feat(changelog): the terminal issue cite joins the fragment guard
2026-08-04 13:58:32 +01:00
Andriujose
7af13eae73 docs: add terminal citations to release fragments 2026-08-04 12:53:38 +00:00
cndgrr
9f1f88de72 fix(changelog): #285's fragment carries a terminal cite
changelog.d/253.md landed on main after this branch's point with the
cite trailing the period — the crew#309 shape, the fifth fragment to
arrive with it since #262 measured two. The criterion is that
changelog.d/ is clean at the head, and the head CI reviews is the merge
with main, which is where this one surfaced.

Refs #262.
2026-08-04 12:40:55 +00:00
cndgrr
d13f61b6c5 merge: origin/main — #285's fragment lands under the rule
The self-guards job checks out the merge of this branch with main, so
changelog.d/253.md from #285 reaches changelog_fragment_problem there and
nowhere else; the branch alone is green. Merged rather than rebased
because the round's reviewers track head SHAs.

Refs #262.
2026-08-04 12:39:55 +00:00
cndgrr
75a5b68c8a fix(changelog): one fragment, one diagnosis, wherever the long entry sits
awk runs END on the way out of an exit from a main rule, so the length
row printed mid-file was followed by the citation row it outranks — the
internal protocol line landing inside the human-facing excerpt. Found by
claude-bot and kimi-bot in #262's first round, independently and with the
same reproduction.

The guard is the reported flag the empty-heading walk in this same
predicate already uses. The fixtures are the axis 57.md could not reach:
its over-bound entry is last, so only END's flush can print. 58.md puts
one before another bullet, 59.md before a heading and after a misplaced
cite. With lib/changelog.sh alone reverted they red, which is what the
green suite was hiding.

Refs #262.
2026-08-04 12:38:13 +00:00
Daniel Marin
d30b091872
Merge pull request #285 from andriujoseba/build/253-release-init-announce
feat: announce release initialization
2026-08-04 13:22:21 +01:00
cndgrr
84c73fe22e test(changelog): the precedence case runs in the order that can fail
Refs #262
2026-08-04 12:16:49 +00:00
cndgrr
175e082c1b test(release-exercise): the replay's fragment fixture carries a cite
The step-replay job builds a consumer tree and runs the REAL assembler
over it, so its changelog.d/42.md is a fragment fixture like every one in
test/ — and the only one living outside it. #262's diff-surface criterion
says no workflow file; the criterion and a green head cannot both hold
here, and the fixture is the smaller thing to move.

Refs #262
2026-08-04 12:15:04 +00:00
cndgrr
8aeea67d8d docs(changelog): the citation is guard-enforced, not house style
Closes #262
2026-08-04 12:12:52 +00:00