Commit graph

284 commits

Author SHA1 Message Date
claude-bot-andresmgsl
7424ef21bf test: changelog-monotonic contract suite — constructed git histories
Every case from #6's test list: the documented-flow passes (insert-above,
the stamp, prose-only), the box#122 deletion shape, the box#118 duplicate
(proven to run before every history gate, the box#143 ordering), rc
distinctness, both STRICT degradations, the file-first-added edge, the
vacuous push-to-main shape, and the action's env wiring.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:11:46 +00:00
claude-bot-andresmgsl
37962402f0 feat: actions/changelog-monotonic — shipped headings are append-only
Port of box's changelog-monotonic.sh (box#122, caught in review of
box#118) as a composite action, folding in cast's port notes (cast#133).
Uniqueness on HEAD runs before anything that needs history (box#143);
containment degrades loudly, and the action defaults strict to 1 so CI
can never take the skip path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:09:59 +00:00
claude-bot-andresmgsl
4fd78615b3 ci: replay the merge door's steps against a fixture — the caller ran zero of them
Round 1's shared blocking catch: release-exercise's call job proves the
parse but executes no steps (both doors are push-gated, by design), and
fixture-chain drives the scripts, not the workflow. The new step-replay
job executes the merge door's early sequence for real — both checkout
shapes including path: .ceremony-src, both branches of the bypass via a
matrix standing in for the repository test, the CEREMONY_DIR wiring, and
facts → decide → notes through genuine $GITHUB_OUTPUT plumbing — against
a fixture tree with a stubbed gh. Wired into PR CI as standing evidence;
PR-only, because a push-to-main workflow_call would hand release.yml the
merge door's exact gate. release.yml's honest-gap paragraph narrows to
what stays untested until #11: the doors themselves.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:01:41 +00:00
Daniel Marin
05968a4adb
Merge pull request #40 from dan-claude-bot/docs/fleet-anatomy
docs: FLEET.md — the roster's physical anatomy, as-built
2026-07-22 21:56:32 +01:00
dan-claude-bot
114c507499 docs: FLEET.md — the roster's physical anatomy, as-built
A descriptive snapshot of how the five-box fleet actually runs: the roster
table, the duty-loop skeleton (cron + flock + poll + one-shot sessions),
wake conditions per role, the resilience layer (boot gate, crash-only
resume, checkpoint discipline, worktree isolation), and board conventions.

Explicitly not doctrine and not vendored: it exists so the current setups
can later be captured in detail per-agent and converged into a reusable
fleet-management solution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 20:55:25 +00:00
claude-bot-andresmgsl
ad8ebfe2c9 feat: the reusable release workflow — both doors, one implementation
Closes #9. .github/workflows/release.yml (workflow_call) replaces box's,
rig's and cast's release.yml: the merge door (facts -> decide -> notes ->
tag+publish+bump, every decision in a tested lib script) and the tag door
(the manual fallback and backfill, no bump). Plus lib/facts.sh (the merge
door's impure half, contract-tested against fixture repos with a stubbed
gh), the self-ref pin guard (.github/scripts/self-ref-check.sh + CI step +
tests), the release-exercise scratch caller (dry wiring), the end-to-end
script-chain rehearsal, and the caller + artifact-hook contracts in
docs/CONSUMERS.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 19:55:39 +00:00
Daniel Marin
1c8992f2fd
Merge pull request #33 from claude-bot-andresmgsl/build/5-changelog-armed
feat: actions/changelog-armed — the version-keyed arming guard
2026-07-22 20:31:15 +01:00
claude-bot-andresmgsl
dde6b253f5 feat: actions/changelog-armed — the version-keyed arming guard
Port box's changelog-armed.sh as the first composite action, establishing
the pattern #6 and #7 copy: action.yml passes inputs as env vars, the
co-located script stays directly runnable, and the shared libs are sourced
relative to the action so they travel with it at the consumer's pinned ref.

Port deltas per issue #5: the version goes through version_read (#3) so the
guard works for package-json trees, and the bare-version emptiness check
consults changelog_section (#4) — the guard and the publisher cannot
disagree about what a section is. Messages and the header essay keep the
box#108 / rig#66 / rig#44 / cast#108 history; this is the guard rig and
cast regain at adoption.

CI gains an action-exercise job driving uses: ./actions/changelog-armed
against a scratch armed tree — the composite wiring proven, not just the
script.

Closes #5

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 19:22:31 +00:00
Daniel Marin
0699bed2a4
Merge pull request #31 from claude-bot-andresmgsl/build/8-decide-lib
feat: lib/decide.sh — the merge door's decision, pure and exhaustively tested
2026-07-22 20:17:57 +01:00
Daniel Marin
366d08e2d4
Merge pull request #29 from codex-bot-andresmgsl/build/4-changelog-section
feat: add canonical changelog section extractor
2026-07-22 20:12:01 +01:00
claude-bot-andresmgsl
87dc9d7728 feat: lib/decide.sh — the merge door's decision, pure and exhaustively tested
The six-row decision table from issue #8 as a pure script: the workflow
gathers facts (VER, BASE_VER, RELEASED, LABELED), this script decides.
Notices/refusals ported near-verbatim from box's decide step, de-repo-ified;
design lineage box#96 / rig#47 / cast#111.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 18:59:29 +00:00
codex-bot-andresmgsl
8b27cf61db fix: preserve changelog wrapper CLI contract 2026-07-22 18:56:25 +00:00
Daniel Marin
3d252d2abd
Merge pull request #28 from claude-bot-andresmgsl/build/3-version-lib
feat: lib/version.sh — one version abstraction, two backends
2026-07-22 19:43:21 +01:00
codex-bot-andresmgsl
2b66ecb1ba feat: add canonical changelog section extractor 2026-07-22 18:38:35 +00:00
Daniel Marin
ae91dff603
Merge pull request #27 from codex-bot-andresmgsl/build/10-labels-machinery
feat: centralize labels machinery
2026-07-22 19:35:26 +01:00
codex-bot-andresmgsl
1ff660f539 docs: preserve labels workflow safety rationale 2026-07-22 18:21:11 +00:00
claude-bot-andresmgsl
36fc98bf40 feat: lib/version.sh — one version abstraction, two backends
The seam that lets box/rig/incubator (a VERSION file) and cast
(package.json + lockfile sync) share every other ceremony component
unchanged. Sourced, pure (no git), fail-loud on every unreadable state.

Carries cast's pkg_version discipline (node's parser, never regex) and
its lockfile-only bump incantation; refuses pre-release arithmetic
(-dev/-rc1) per box's prefix-confusion lore. The npm-backed write test
skips locally without npm but CI sets CEREMONY_REQUIRE_NPM so the skip
is a failure there — the case can never quietly stop running.

Closes #3

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 18:19:50 +00:00
codex-bot-andresmgsl
9755f634a0 test: cover labels state machine 2026-07-22 18:19:49 +00:00
codex-bot-andresmgsl
60e417a13c feat: centralize labels machinery 2026-07-22 18:18:18 +00:00
Daniel Marin
79cdbb81aa
Merge pull request #25 from codex-bot-andresmgsl/build/2-scaffold
ci: scaffold test and lint workspace
2026-07-22 18:53:28 +01:00
Daniel Marin
ff7ef6c617
Merge pull request #26 from claude-bot-andresmgsl/feat/entry-templates
feat: entry templates — the pipeline's doors made mechanical
2026-07-22 18:38:44 +01:00
codex-bot-andresmgsl
9c7036e480 fix: use actionlint amd64 release asset 2026-07-22 16:59:13 +00:00
codex-bot-andresmgsl
0b05d6ac37 fix: quote shellcheck file arguments 2026-07-22 16:58:20 +00:00
claude-bot-andresmgsl
516f6d7a45 feat: entry templates — the pipeline's doors made mechanical
Four files under .github/: the new-issue interception (blank issues off,
Discussions link first), the work-order form mirroring TRIAGE.md's issue
contract with stable headings for #18 to parse, the PR template carrying
BUILDER.md's checklist, and light optional-only discussion forms for Ideas
and Q&A. No template applies any label — queue labels stay triage's
explicit act (LABELS.md).

Closes #24

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 16:58:01 +00:00
codex-bot-andresmgsl
dc886f7cb4 ci: scaffold test and lint workspace 2026-07-22 16:56:25 +00:00
Daniel Marin
f5521711e7
Merge pull request #22 from dan-claude-bot/ci/labels-bootstrap
ci: interim labels-bootstrap dispatch — the taxonomy as a job, not a paste
2026-07-22 16:53:26 +01:00
dan-claude-bot
d0a0989a21 ci: interim labels-bootstrap dispatch — the taxonomy as a job, not a paste
Label definitions need write; the agents team is triage on purpose, and
the Actions GITHUB_TOKEN is how the family converges label taxonomies
without granting any agent identity write (box/rig/cast labels.yml
precedent). Deletable the day #10 lands.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 15:52:42 +00:00
Daniel Marin
92fc12ef98
Merge pull request #21 from dan-claude-bot/docs/roster
docs: the roster — five identities, five boxes, recusal by construction
2026-07-22 16:18:26 +01:00
dan-claude-bot
de7135985d docs: the roster — five identities, five boxes, recusal by construction
dan-claude-bot takes triage (the single issue-writer, auditable by
actor); claude/codex split building by terrain (machinery vs mechanical);
grok and kimi review; the panel for any PR is everyone except its author.
One box per identity — the box is the credential boundary, the session
prompt is the role boundary.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 15:03:53 +00:00
Daniel Marin
7624021987
Merge pull request #17 from dan-claude-bot/docs/agent-team-flow
docs: the agent team flow — CONTRIBUTING, LABELS, and the three role files
2026-07-22 15:30:29 +01:00
dan-claude-bot
3e08533981 docs: AGENTS.md — the role router, first file of the vendored set
'You are a reviewer here' becomes a sufficient launch prompt: agent
harnesses auto-load root AGENTS.md (the cross-agent convention); in a
governed repo a thin root stub forwards to the vendored
.ceremony/AGENTS.md, which routes each role to its file and states the
two rules every role shares (only triage mints issues; only humans
merge).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 14:25:42 +00:00
dan-claude-bot
0d49ba4da3 docs: doctrine is a machine-verified mirror, not a pointer
Workflows are consumed by reference because GitHub materializes them at
run time; docs have no runtime — agents read the working tree — so the
agent-facing set (TRIAGE, BUILDER, REVIEWER, LABELS) vendors into each
governed repo at .ceremony/, byte-identical to the pinned ref and guarded
by docs-sync --check in CI (#19). Role files made self-contained for
vendored reading.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 14:22:05 +00:00
dan-claude-bot
d2aa8f1c3b docs: the agent team flow — CONTRIBUTING, LABELS, and the three role files
Discussions are where intent lives; issues are minted only by triage;
builders turn one issue into one PR; reviewers converge on verdicts;
humans decide in the discussion and at the merge. LABELS.md extends the
family taxonomy with the issue-flow labels (needs-triage, ready, claimed,
epic) the new pipeline runs on.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 14:13:48 +00:00
Daniel Marin
232d2bd3e8
Create README 2026-07-22 14:36:51 +01:00