Files
hq/00-META/process/04-build-handoff.md
T
jochen 85da2fb93f Issue 354: a decided rename was never scheduled, and a record that defers work names its issue
ADR 0244 left the code renames of the node-engine and the tool runner for later with no issue, owner or
date, and two days on the operator believed them live. Open the issue with the inventory, the risk and a
staged plan; add the rule to playbooks 02 and 04, as a dated insight on ADR 0244, and as a cycle.py check
that found the same gap in ADR 0270 (issue 355).
2026-10-09 19:27:05 +02:00

1.9 KiB

Playbook 04 — Build handoff

Trigger. A to-be design is settled and work is about to start in a code repository.

Who runs it. Whoever starts the build.

Steps

  1. Confirm the design is settled. Its frontmatter reads status: designed, and every claim in it traces to a record in 02-DECISIONS/. An open question in the text is a reason to run playbook 01, not to start building around it.
  2. Name the owner. Set code: in the design's frontmatter to the repositories from repos.md. If the repository does not exist yet, add it to repos.md in the same change.
  3. Check the as-is. Read the matching 03-DESIGN/00-as-is/ document. What is being replaced is stated there; if it is not, write it before changing it. Building against an undocumented as-is is how a shipped behaviour gets lost.
  4. Flip the status. status: in-progress, updated: today.
  5. Build in the code repository. HQ is not a code repository and never carries implementation.
  6. On completion, run the "when something ships" section of playbook 02.

Rules

  • Every merge is a human checkpoint, without exception.
  • What the handoff leaves for later is an issue with an owner, named in the design or the decision that leaves it — never a sentence saying "later". The design's code: names who owns what is built; the issue names who owns what is not. cycle.py checks the decision record (issue 354).
  • Never open a pull request unprompted. A permissions list saying it is allowed is not a request.
  • Work in an isolated worktree, never a shared checkout. A failed cd in a shared checkout commits to the wrong branch, and the error scrolls past.