Commit graph

63 commits

Author SHA1 Message Date
codex-bot-andresmgsl
561b7a99ec fix: read linked issues through GraphQL 2026-07-23 10:31:15 +00:00
codex-bot-andresmgsl
8174080c9d feat: reconcile the issue work queue 2026-07-23 10:31:15 +00:00
Daniel Marin
2f0d3c65af
Merge pull request #54 from claude-bot-andresmgsl/build/51-needs-ruling
feat(labels): `needs-ruling` — the label, the doctrine, and the reconciler's exclusion rule (#51)
2026-07-23 02:23:03 +01:00
Daniel Marin
af2f83a2a7
Merge pull request #53 from claude-bot-andresmgsl/build/13-consumers-feedback
docs: CONSUMERS.md — the rig conversion's lessons (#13)
2026-07-23 02:01:47 +01:00
claude-bot-andresmgsl
ded7f9ac04 docs: needs-ruling doctrine — LABELS row + D5–D9 rationale, escalation mechanics in TRIAGE/BUILDER/REVIEWER, changelog (#51)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:49:21 +00:00
claude-bot-andresmgsl
6db45587ed test(labels): needs-ruling contract — exclusion not latch, never a blocker, sweep-proof, stale-exempt (#51)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:47:59 +00:00
claude-bot-andresmgsl
bd215b06f2 feat(labels): needs-ruling — bootstrap row, decide_state exclusion, staleness skip (#51)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:44:16 +00:00
claude-bot-andresmgsl
bd7670703a docs: CONSUMERS.md carries rig's conversion lessons — labels.conf takes no comments, machinery test files go whole, stale doc pointers swept (#13)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:34:26 +00:00
github-actions[bot]
4cfa3319ec chore: bump main to 0.1.1-dev — a dev install must not impersonate 0.1.0 2026-07-23 00:12:30 +00:00
Daniel Marin
24ed9ad05b
Merge pull request #49 from claude-bot-andresmgsl/build/11-ceremony
release: 0.1.0
2026-07-23 01:12:15 +01:00
Daniel Marin
682d80eddb
Merge pull request #48 from claude-bot-andresmgsl/build/12-docs-doctrine
docs: README doctrine + CONSUMERS.md adoption guide
2026-07-23 01:11:07 +01:00
claude-bot-andresmgsl
55d0384c22 docs: pin bumps update every ceremony reference; decide table is six rows
Round 1 (PR #48): codex-bot flagged the release-only bump described as a
one-line uses change while the same-tag rule two bullets up requires every
reference on one tag — a release-only setup has four (release caller +
three guards), so a one-line bump splits the consumer across versions.
The bump bullet and the pin-bump procedure now both require every ceremony
uses: reference updated together. Also the README called lib/decide.sh a
5-state table; the spec comment and rendered table have six rows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:46:31 +00:00
claude-bot-andresmgsl
79261aa793 docs: CONSUMERS.md — prerequisites, bootstrap and convert checklists, pinning, changelog rule, team-flow adoption (#12)
Extends the existing release-workflow / artifact-hook / labels sections
(from #27 and #39, kept intact) with the remaining adoption guide: the
greenfield bootstrap path, the box/rig/cast conversion checklist, the
exact-tag pinning policy, the portable changelog contributor rule, and
the agent-team-flow adoption checklist with the pin-bump procedure
(docs-sync documented from #19's contract).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:46:31 +00:00
claude-bot-andresmgsl
4363f5ad22 docs: README.md — the doctrine, moved here once (#12)
What a release is (the three stamps, box#108's two-edit rule), the two
doors, the decide table rendered for operators, the three guards with
their incidents, the drill doctrine, the verbatim refusal catalog with
cause and remedy, and the design lineage. Condensed from the box/rig/cast
CONTRIBUTING essays per #1 D8; every workflow-behavior claim links the
line or the spec issue.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:45:07 +00:00
claude-bot-andresmgsl
bb3bbf150a chore: README → README.md — the doctrine document gets its real name
Issue #12 writes the doctrine into README.md; the extensionless
placeholder was the 12-byte stub triage's readiness note called out.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:45:07 +00:00
claude-bot-andresmgsl
af48581973 drill: the 0.1.0 record, and the first-release caveat in the doctrine
drills/0.1.0.md — six probes plus (g), run on the disposable scratch repo
against the candidate SHA, every refusal checked for droppings; the pin
deviation (fork ref, CEREMONY_SELF_REF -> candidate SHA in both carriers)
recorded under its own heading per triage's ruling on #11. drills/README.md
gains the first-release caveat that ruling asked for: the first drill can
never take the pure pinned consumer path, and must not fix that by putting
a tag-shaped branch in the canonical ref namespace.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:40:38 +00:00
claude-bot-andresmgsl
ff00a9cbcd release: 0.1.0
The ceremony PR — two edits, per the amended #11: VERSION 0.1.0-dev -> 0.1.0,
and the changelog stamp with the re-arm in the same edit (## Unreleased ->
## 0.1.0 — 2026-07-22, an empty ## Unreleased put back on top — box#108).
No third stamp: both CEREMONY_SELF_REF carriers already read "0.1.0", and
self-ref-check's bare-tree rule wants exactly that. drills/0.1.0.md follows
once the rehearsal runs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:27:56 +00:00
Daniel Marin
dbf857a94a
Merge pull request #43 from claude-bot-andresmgsl/build/19-docs-sync
feat: actions/docs-sync — vendored doctrine, machine-verified
2026-07-23 00:18:28 +01:00
Daniel Marin
6305827a7d
Merge pull request #44 from claude-bot-andresmgsl/build/11-dogfood
feat: dogfood bootstrap — ceremony adopts its own ceremony
2026-07-23 00:17:16 +01:00
claude-bot-andresmgsl
9782687bd7 feat: dogfood bootstrap — ceremony adopts its own ceremony (#11)
VERSION at 0.1.0-dev, the armed CHANGELOG.md, drills/README.md (what a
drill means here), the self-callers (self-release.yml, self-labels.yml —
local uses:, the one form consumers must never copy), .github/labeler.yml
for the scope job, and the three self-guards in CI. labels.yml gains the
self-consumption bypass (release.yml's twin) so the label bootstrap can run
before any release tag exists; action-exercise's armed/drill-recorded
scratch steps move to self-guards per their own eviction note.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 22:19:50 +00:00
claude-bot-andresmgsl
85d4eb3770 fix: refuse non-regular nodes everywhere; machine-verify the mirror README
Round 1 (PR #43): codex-bot + kimi-bot reproduced cp writing through a
committed symlink and cmp/find resolving through or skipping link nodes —
both modes now refuse any non-regular node (.ceremony itself, anything
under it, the root AGENTS.md incl. dangling links and non-file nodes)
before touching the tree. kimi-bot also found .ceremony/README.md was
machine-written but never machine-verified: --check now cmps it against
the generated text (missing or drifted -> red). 22 regression rows; every
symlink row asserts the victim untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:59:37 +00:00
Daniel Marin
91863259f9
Merge pull request #42 from claude-bot-andresmgsl/build/7-drill-recorded
feat: actions/drill-recorded — a release carries its evidence
2026-07-22 22:47:23 +01:00
claude-bot-andresmgsl
77f195a6ae ci: docs-sync-exercise job + CONSUMERS.md doctrine-mirror section
The fixture consumer is the workspace root (a uses: step cannot cd);
ceremony rides a subdirectory checkout serving as both the local action
ref and the --source override. CONSUMERS.md gains the wiring, bootstrap,
and pin-bump procedure (#12's section, amended in the same cycle).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:42:01 +00:00
claude-bot-andresmgsl
40fa216e8b test: docs-sync contract suite — 37 rows, offline via --source
Fake source trees (not the real five docs) so a hardcoded list fails;
consumer trees per pin shape, including the commented-pin row ceremony's
own release.yml header motivates. Also fixes the EXIT-trap exit-status
clobber the smoke run surfaced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:40:49 +00:00
claude-bot-andresmgsl
dde67a95db feat: actions/docs-sync — manifest, script, composite wrapper
The materialization machinery for doctrine (issue #19): docs are vendored
into consumers at .ceremony/, machine-written (--fix) and machine-verified
(--check), keyed on the single release.yml pin line.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:38:53 +00:00
claude-bot-andresmgsl
71c45b7fe5 feat: actions/drill-recorded — a release carries its evidence
Port box's drill-recorded.sh (the origin of the three copies) as a
composite action on the #5 pattern: version read through lib/version.sh,
one file per version under drills/, whitespace-only records refused.
Keyed on the tree's version — -dev trees pass with a notice that says
why nothing was asserted; bare trees must show drills/<version>.md with
at least one non-whitespace character.

Closes #7

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:28:06 +00:00
Daniel Marin
093656adbe
Merge pull request #41 from claude-bot-andresmgsl/build/6-changelog-monotonic
feat: actions/changelog-monotonic — shipped release headings are append-only
2026-07-22 22:23:06 +01:00
Daniel Marin
e2828f5413
Merge pull request #39 from claude-bot-andresmgsl/build/9-release-workflow
feat: the reusable release workflow — both doors, one implementation
2026-07-22 22:22:48 +01:00
claude-bot-andresmgsl
a0bea573a1 ci: exercise changelog-monotonic with a real containment run
The action-exercise job commits a scratch base, marks it as an in-job
fixture branch, commits an insert-above edit, and runs the composite
action against that history — proving the wiring AND a genuine
merge-base comparison, not just an action.yml parse. Base ref passed
explicitly: the shallow PR checkout has no origin/main to resolve.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:12:44 +00:00
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