Commit graph

142 commits

Author SHA1 Message Date
codex-bot-andresmgsl
22f1a0246f docs: explain core taxonomy bootstrap maintenance 2026-07-24 09:24:40 +00:00
codex-bot-andresmgsl
edbf30867e feat: warn when core taxonomy labels are missing 2026-07-24 09:22:41 +00:00
codex-bot-andresmgsl
fffc95633e test: pin missing core label warning contract 2026-07-24 09:22:41 +00:00
Daniel Marin
6ec9aa24fa
Merge pull request #120 from claude-bot-andresmgsl/build/114-changelog-assemble
lib/changelog.sh + bin/changelog-assemble — read the fragments, assemble one section, consume them
2026-07-24 10:10:28 +01:00
claude-bot-andresmgsl
4c0ecf10d8 test: lib fragment trio and the changelog-assemble CLI; changelog entry
test/changelog.test.sh drives changelog_fragments (order, marker, absent
dir), changelog_fragment_problem (every rule, file named each time), and
changelog_assemble (both shapes, canonical order, mixed-shape refusals).
test/changelog-assemble.test.sh drives the CLI against constructed trees:
exact-byte writes, provably read-only --check, every refusal from the
spec, the publisher/assembler round trip, and idempotence.

Closes #114.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 08:28:15 +00:00
claude-bot-andresmgsl
fffff75b80 feat: fragment reader, well-formedness predicate, assembler, and bin/changelog-assemble
lib/changelog.sh gains changelog_fragments (publication order: trailing
issue number descending, filename tie-break), changelog_fragment_problem
(the release-time rules moved onto the PR that writes the fragment, #112
D9), and changelog_assemble (canonical group order per D5, one shape per
repo per D4). bin/changelog-assemble folds changelog.d/ into one release
section, deletes exactly what it consumed, and --check proves the body
without touching the tree.

Part of #112. Closes #114 groundwork; tests follow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 08:25:44 +00:00
Daniel Marin
d4e133bc1f
Merge pull request #106 from claude-bot-andresmgsl/build/101-degraded-read-reason
labels-reconcile: report why the degraded read degraded; blind-sweep warning stops asserting an unobserved cause
2026-07-24 09:24:00 +01:00
claude-bot-andresmgsl
09d2ea764f test: pin the two-line degrade, the bounded reason, and the demoted diagnosis
The unit block now feeds blind_sweep_warning a sampled reason and asserts
the new lead plus two must-fail guards: the disproven 'grant checks: read
and statuses: read' diagnosis stated as fact goes red, and so does any
drift in the counted line's whole-line shape (exactly the blind PRs match,
no more, no less — a reason line that matched would double-count, a folded
reason would undercount). read_failure_reason is covered pure: D4 wording
for empty stderr, multi-line collapse to one line, 400 chars truncated to
300 plus ellipsis within the 304-byte bound, 300 passing through whole.
blind_main_probe's gh pr view stub now fails with a denial on stderr, the
way real gh fails.

Part of #101.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 07:34:46 +00:00
claude-bot-andresmgsl
fbfe7dd1c1 feat: report why the degraded read degraded
The reconciler's mergeability/checks read kept its correct degrade but
threw the reason away: 2>/dev/null dropped gh's stderr, leaving a
permanent denial and a network hiccup byte-identical in the log (#95 had
to infer a cause from a control case, and the inference did not survive
incubator#48/#49). Capture stderr into a variable via a temp file (D2),
emit it as its own '#N: read failed: …' line beside the byte-identical
counted line (D1), collapsed and bounded by a pure helper (D3/D4), and
lead blind_sweep_warning with the sampled observed reason, demoting the
permissions hint from stated cause to named candidate (D5).

Part of #101 groundwork; tests and changelog follow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 07:34:33 +00:00
Daniel Marin
2f58d9bf54
Merge pull request #110 from claude-bot-andresmgsl/build/109-fourth-parked-shape
BUILDER.md: the handed-off PR is the fourth parked shape; the handoff is its declaration
2026-07-24 08:31:13 +01:00
claude-bot-andresmgsl
2422604f50 docs: park the handed-off claim as the fourth shape
The slot rule counted work in flight but had no shape for its most common
wait: the round passed, state:needs-human set, the human's merge pending.
Shape 4 names it, the handoff round summary is its declaration, and shape
2 now covers the round awaiting its first verdicts so the live and passed
rounds are sequential and non-overlapping (#109).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 07:01:07 +00:00
Daniel Marin
ad04eaf990
Merge pull request #99 from codex-bot-andresmgsl/build/98-publishable-changelog-sections
feat: validate publishable changelog sections
2026-07-24 07:59:02 +01:00
codex-bot-andresmgsl
ce27861821 test: cover absent Unreleased section 2026-07-24 00:26:48 +00:00
codex-bot-andresmgsl
8ad68192e9 docs: seed grouped changelog re-arms 2026-07-23 23:45:04 +00:00
codex-bot-andresmgsl
69410723bd fix: reject entry-less release notes 2026-07-23 23:44:51 +00:00
codex-bot-andresmgsl
0e489438de feat: enforce publishable changelog entries 2026-07-23 23:44:51 +00:00
codex-bot-andresmgsl
73bee80faa feat: define publishable changelog sections 2026-07-23 23:44:51 +00:00
Daniel Marin
5af1538463
Merge pull request #96 from codex-bot-andresmgsl/build/95-labels-blind-sweep-warning
fix: surface wholly blind label sweeps
2026-07-24 00:43:17 +01:00
codex-bot-andresmgsl
1d3e98497d Merge remote-tracking branch 'origin/main' into build/95-labels-blind-sweep-warning
# Conflicts:
#	CHANGELOG.md
#	test/labels-reconcile.test.sh
2026-07-23 23:15:08 +00:00
codex-bot-andresmgsl
970d58b2c6 test: prove blind sweeps leave PRs untouched 2026-07-23 23:13:24 +00:00
Daniel Marin
6b127f1ba7
Merge pull request #94 from claude-bot-andresmgsl/build/93-retire-default-labels
labels-reconcile: retire the six GitHub default labels at bootstrap (#93)
2026-07-24 00:12:38 +01:00
codex-bot-andresmgsl
2c57216a56 fix: surface wholly blind label sweeps 2026-07-23 23:12:30 +00:00
claude-bot-andresmgsl
d76d3b6136 test: keep the bootstrap probes shellcheck-clean
CI's shellcheck gate treats info findings as red. The gh() stubs paired
with bootstrap_labels are reached only through run's "$@", which
shellcheck cannot trace (the older probes stub reconcile_pr, which calls
gh directly), so they carry reasoned SC2317 directives; the LABELS.md
doctrine parse carries SC2016 for its literal backticks. Probes now live
in named functions, matching the house *_probe() pattern.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 21:18:46 +00:00
claude-bot-andresmgsl
019ed5b68e test: pin bootstrap retirement against absence, refusal and set -e
Registry-vs-LABELS.md identity, happy path, missing label, one-name 403,
DRY_RUN narration, and the executed-subprocess dispatch (#91's lesson: a
sourced probe cannot see set -e). Cron and pull_request_target delete
nothing. Verified red without the guard: the unguarded dispatch dies on
the FIRST absent label, one delete of six attempted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 21:13:07 +00:00
claude-bot-andresmgsl
27aa03464c feat: retire the six GitHub default labels at bootstrap
LABELS.md publishes them as deleted at bootstrap; nothing deleted them —
incubator's first dispatch left `good first issue` standing. One registry
(retired_label_names) beside core_label_rows, dispatch-only, through run,
tolerant of absence and refusal (#93).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 21:09:54 +00:00
Daniel Marin
b45202f6f4
Merge pull request #92 from claude-bot-andresmgsl/build/91-arrival-standdown
fix: a triage-authored issue arrival must not abort the sweep
2026-07-23 21:42:04 +01:00
claude-bot-andresmgsl
c39b78959d fix: stand down with exit 0 on non-mint issue arrivals
reconcile_opened_issue's two early exits were bare returns, which carry
the failed guard's status into the executed script's set -e — every
triage-authored mint killed the labels run before one issue was
reconciled (#91, 4/4 observed). The stand-downs now say return 0; a
genuine failure on the arrival path still aborts loudly.

The suite sources the script and takes the set -u-only branch, so it
was blind to this by construction. The new arrival section executes the
script as a subprocess behind a fixture-serving gh stub (the house
pattern from test/release-chain.test.sh) and covers all three arrival
outcomes plus the preserved loud-failure path; it fails against
bb37c15 with the production signature — exit 1, empty output.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 20:16:20 +00:00
Daniel Marin
bb37c1567c
Merge pull request #89 from claude-bot-andresmgsl/build/86-attention-wake
docs: FLEET.md — the assignee's `attention` wake
2026-07-23 19:33:17 +01:00
claude-bot-andresmgsl
caf7e9842e docs: smooth the ack-contract sentence
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 18:18:46 +00:00
claude-bot-andresmgsl
08f8060679 docs: add the assignee's attention wake to FLEET.md
The shared, role-independent wake — an open issue assigned to me
carrying attention — stated once above the per-role lists, first in
priority, one acked session per demand, with the rejected mention-poll
and the #16 incident recorded and the on-paper caveat kept (#86).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 18:18:00 +00:00
Daniel Marin
bce09aa764
Merge pull request #88 from codex-bot-andresmgsl/build/85-attention-contract
docs: define the attention contract
2026-07-23 19:12:33 +01:00
codex-bot-andresmgsl
7791f2100e docs: define the attention contract 2026-07-23 17:52:14 +00:00
Daniel Marin
90a42b16b0
Merge pull request #87 from codex-bot-andresmgsl/build/84-attention-core-label-row
feat: add the attention core label row
2026-07-23 18:45:34 +01:00
codex-bot-andresmgsl
bcee821153 test: annotate nested attention assertion 2026-07-23 17:29:23 +00:00
codex-bot-andresmgsl
6572a6035d docs: document attention taxonomy flag 2026-07-23 17:28:31 +00:00
codex-bot-andresmgsl
cb5ae0a068 test: pin attention issueflow inertness 2026-07-23 17:28:02 +00:00
codex-bot-andresmgsl
f15cb8c0c9 feat: add attention core label row 2026-07-23 17:27:24 +00:00
Daniel Marin
87f243299d
Merge pull request #81 from claude-bot-andresmgsl/build/77-parked-claim
docs: the parked claim and the one-build-at-a-time rule
2026-07-23 17:50:56 +01:00
claude-bot-andresmgsl
cf2adb89f5 docs: the parked claim and the one-build-at-a-time rule
The one-issue-at-a-time bullet counted claims when it meant build work
in flight; the 2026-07-23 board (#15, #16 parked beside #73) proved the
count wrong. BUILDER.md now defines the three parked shapes, the
declared-never-inferred park comment, and unparking; TRIAGE.md names a
directed hold as a park (#77).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 16:37:53 +00:00
Daniel Marin
e1d50c90b9
Merge pull request #76 from codex-bot-andresmgsl/build/14-convert-box
docs: make consumer guard adoption tag-aware
2026-07-23 17:36:03 +01:00
Daniel Marin
30a818d25f
Merge pull request #80 from claude-bot-andresmgsl/build/74-fleet-ruling-notifier
docs: the operator notifier's needs-ruling queue and triage's past-24h wake (D16)
2026-07-23 17:35:46 +01:00
claude-bot-andresmgsl
ac6e98067c docs: the operator notifier's needs-ruling queue and triage's past-24h wake
FLEET.md's wake conditions gain #50 D16: notify.sh's second query (open
issues and PRs labelled needs-ruling), one tracked message per item edited
in place across the ladder's four rungs and removed on clearance, the
message's contents, triage's past-24h pickup, and the on-paper caveat.
Nothing box-side sets, clears or decides the flag.

Part of #50. Closes #74.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 16:16:16 +00:00
codex-bot-andresmgsl
0d74c827e7 docs: make consumer labels tag-aware 2026-07-23 16:09:42 +00:00
Daniel Marin
cb3d482b8b
Merge pull request #78 from claude-bot-andresmgsl/build/73-ruling-shape-ladder
feat: the escalation comment's shape and the ladder's rungs, mechanically observed
2026-07-23 17:05:49 +01:00
claude-bot-andresmgsl
a4918a5a46 test: cover the shape check and the ladder's rungs
Pure decisions (shape presence, rung boundaries, Default: parse for wording
only), sweep probes for every AC path (malformed-once, conforming silence,
rungs despite activity, cron progression, missed-moment skip, re-flag
episode, unreadable comment list, malformed+rung same pass), and the
existing nudge fixtures updated to conforming escalations with pre-seeded
rung markers so each probe observes one behavior alone.

Part of #73.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:49:31 +00:00
claude-bot-andresmgsl
831fe239d9 feat: observe the escalation shape and the ladder's rungs
lib/ruling.sh gains the mechanical half of #50 D12-D15: the comment body
rides the fetch as base64 (rows stay line-oriented), ruling_shape_decision
checks the four line-anchored bold-tolerant field labels,
ruling_deadline_decision derives the rung from the labeled epoch,
ruling_default_decision parses the Default: line for wording only, and
reconcile_ruling wires them with bare-stops-here exclusion — every write a
comment, one per marker per episode, both surfaces via the shared lib.

Part of #73.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 15:43:01 +00:00
codex-bot-andresmgsl
162ce6b817 docs: count every consumer workflow caller 2026-07-23 15:34:01 +00:00
codex-bot-andresmgsl
3e96d80389 docs: make consumer guards tag-aware 2026-07-23 15:20:29 +00:00
Daniel Marin
f6797d01bc
Merge pull request #75 from codex-bot-andresmgsl/build/72-escalation-contract
docs: define the ruling escalation contract
2026-07-23 16:15:19 +01:00
codex-bot-andresmgsl
043aeaf173 docs: define the ruling escalation contract 2026-07-23 14:57:51 +00:00