README doctrine + docs/CONSUMERS.md adoption guide #12
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:docs
scope:guards
scope:labels
scope:release-flow
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/ceremony#12
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #1. Blocked by #9 (content), ideally lands with #11. Blocks #13 — the pilot conversion must be executed from this guide alone (that's the guide's acceptance test).
Goal
Two documents. After them, someone who has read none of box/rig/cast can (a) understand why the ceremony is shaped the way it is, and (b) convert a repo or bootstrap a new one without asking anyone anything.
1.
README.md— the doctrineThe long "Releases" essays in box CONTRIBUTING (and rig/cast's equivalents) move here, once. Structure:
X.Y.Z, nov).2.
docs/CONSUMERS.md— adoption and migrationreleaselabel existence (bootstrap via labels dispatch (#10) or create by hand).VERSIONatX.Y.Z-dev(never bare — the first-release edge, cast#111), armedCHANGELOG.md,drills/README.mddefining the repo's drill, the three caller stubs (release.yml verbatim from #9's contract; ci.yml guard steps incl. thefetch-depth: 0requirement; labels.yml from #10, optional),.github/labels.conf, optional.github/actions/release-artifact/.uses:actions; delete.github/scripts/{release-notes.sh|release-lib.sh,changelog-monotonic.sh,drill-recorded.sh,changelog-armed.sh,labels-reconcile.sh}; extractlabels.conf; trim the repo test suite to repo-specific tests (install channels stay, machinery tests go — they live here now); shrink CONTRIBUTING's release section to a pointer plus repo-specifics (drill meaning, artifact notes).RELEASE_ASSETS_DIR, failure semantics and recovery, the cast (tgz) and incubator (image) examples once they exist.## Unreleased; insert above the heading below, never type over it (the monotonic guard's reason); one line, surface not mechanism, cite the PR/issue,BREAKING:prefix for breaks.docs-sync --fix(#19) to materialize.ceremony/{AGENTS,TRIAGE,BUILDER,REVIEWER,LABELS}.mdat the pinned ref plus the rootAGENTS.mdstub it scaffolds, add thedocs-sync --checkguard step to CI, and commit the mirror with the callers; reduce tool-specific files (CLAUDE.md, …) to a pointer at rootAGENTS.md; add the short header to the repo's CONTRIBUTING pointing agents at.ceremony/(agents never leave the working tree to read the rules); name the repo's review panel roster; bootstrap the issue-flow labels (via #10's dispatch, or the LABELS.md hand commands); state the single-writer rule for issues in the repo's own docs. Document the pin-bump procedure: one PR = the pin line + the re-synced mirror, and the guard makes a half-done bump unmergeable. Mark the flow optional per repo and separable from the release ceremony — a repo can adopt release-only (incubator's initial posture, #16) and take the team flow later.Acceptance criteria
This issue is
blocked, but its body has no parseableBlocked by #Ndeclaration. The sweep will not guess the dependency.Triage:
blocked→ready. This one was not on the poll's list; I caught it while verifying #11's clause and it is the same situation.This issue's dependency line reads "Blocked by #9 (content), ideally lands with #11." Only #9 is a blocker — it is closed (completed) and shipped in #39, and
.github/workflows/release.ymlis onmain. "Ideally lands with #11" is a sequencing preference, not a dependency: #11 is nowreadytoo, so both can be built in parallel, which is what that phrase was asking for in the first place. Per LABELS.md,blockedmeans the issue is waiting on something named inBlocked by— nothing here is waiting any more, so the label had started to lie.Calling this out explicitly because it is a judgment call on prose, not a mechanical read, and it is worth a second opinion: I treated "ideally lands with" as non-blocking. If the intent was that the README doctrine must describe an already-cut 0.1.0 rather than the policy for one, say so and I will put
blockedback.Two notes for whoever builds it:
docs/CONSUMERS.mdalready exists onmainand is partially written — #27 and #39 each added their own section (release workflow, artifact hook, labels automation). This is an extend, not create: the remaining sections are prerequisites, the bootstrap/convert checklists, version-pinning policy, the changelog contributor rule, and the agent-team-flow adoption checklist.README.mdis still a 12-byte placeholder, so the doctrine document is greenfield.The
docs-sync(#19) subsection describes a tool still in flight in #43. Its contract is fully specified in #19, so document it from the spec; if #43 lands a different shape, that is a docs fix in the same cycle, not a reason to hold this.Claiming — starting now. Plan:
README.mddoctrine document (greenfield, per triage's note) + extend the existingdocs/CONSUMERS.mdwith the remaining sections (prerequisites, bootstrap/convert checklists, artifact-hook pointer, pinning policy, changelog rule, agent-team-flow adoption). Refusal catalog will be grepped verbatim from the scripts in-tree. Draft PR follows shortly.