From dbc740649039cd758e141c97d93a78738f71c2b1 Mon Sep 17 00:00:00 2001 From: mesh-tools Date: Sat, 17 Oct 2026 18:19:35 +0000 Subject: [PATCH] Playbook 07: a new node-engine key needs the controller's pin moved first, and a release that must merge first has a branch name of its own (issue 1051) Feature owned-paths (issue 1024) planned no controller release for a new key on directory resources, though the controller judges every machine with the node-engine's vendored validator; and the controller's release, on the feature's branch name, joined the catalogue's delivery group and could not merge before it. --- 00-META/process/07-feature-branches.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/00-META/process/07-feature-branches.md b/00-META/process/07-feature-branches.md index 31e2cbb1..d42dab2b 100644 --- a/00-META/process/07-feature-branches.md +++ b/00-META/process/07-feature-branches.md @@ -62,7 +62,8 @@ never into the running one, unless it blocks the running one. ## Phase 0 — Prepare (the lead, larger model) -1. **Name the feature once:** `feat/`, the same branch name in every repository it touches. The +1. **Name the feature once:** `feat/`, the same branch name in every repository it touches (but see the + exception for a new manifest word in phase 3: a release that must merge first has a name of its own). The branch is never protected. **One milestone is one branch per repository** (the operator, 2026-10-17), with one folder `.work//`; never a second name for part of it (`-2`, `-step2`). 2. **Make the worktrees:** one per touched repository under `.work//`, branched off `main` @@ -169,6 +170,12 @@ never into the running one, unless it blocks the running one. **One exception: a catalogue change that uses a new manifest word.** The catalogue's merge check reads manifests with the controller the mesh runs, so the controller's pull request is merged and delivered first; then `mesh-delivery.recheck` the catalogue's and merge it on the new verdict. Such work is two releases, the controller's first, and playbook 04 cuts its milestones that way. +**A new key the node-engine checks is such a word too** (issue 1051): the controller judges every machine with the +node-engine's own validator, vendored at the commit `go.mod`'s `replace` pins, so a key added to the node-engine is +refused by the gate until the controller's pin moves to the delivered node-engine (`go mod vendor`); the feature is +then three releases, the node-engine's, the controller's, the catalogue's. **Every release that must merge before +the catalogue's is on a branch name of its own** (`feat/-node-engine`, `feat/-controller`): on the +feature's name it joins the catalogue's delivery group, and a group merges only whole, so neither merges. The exception ends when milestone 3 of design 47 is delivered (issue 977, ADR 0402, ADR 0403): the group's composed check, judged by the group's controller, is then each member's gate, and the feature is one group.