Name the design section, not its number; the preparer and playbook 07 place new code the same way (review 1)
mesh/delivery merged: source.main moved to novox/hq@f0c05d1edb84
mesh/check being carried to b525f1059b69 on f0c05d1edb84 | from d4ae72782336

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
2026-11-04 23:20:38 +01:00
parent 69f95f551d
commit b525f1059b
5 changed files with 20 additions and 11 deletions
+5 -3
View File
@@ -17,9 +17,11 @@ against the records, never limits on what you check: a ruling that contradicts a
**What makes it wrong** (a finding):
- it contradicts a decision in force, or does not do what its record's clause says;
- a new exported type, field, constant, package, module or repository placed where the designs do not put it:
check each one yourself against design 20 *Where a seat's code goes* and design 26 (a seat's types in its
contract in the contracts module of its domain; mesh-sdk takes no seat-specific type), whatever the handover says;
- a new exported type, field, constant, package or module placed where the designs do not put it: check each
one yourself against the design section *Where a seat's code goes* (ask the knowledge base where a seat's code
goes): a seat's types in its contract in its domain's contracts module, or in the seat-set package while the seat
is not defined whole; logic over a seat in its client package; mesh-sdk only the runtime and seat-neutral parts,
never a seat-specific type. Check it whatever the handover says;
- an interaction that is not a mesh path: one module naming another, reading another's internals or being
special-cased in another part; a module's name in shared code; state only in memory; a poll or a timer where
an event exists; a new state without a tool that reads it or a new behaviour without a tool that steers it;
+3 -2
View File
@@ -13,8 +13,9 @@ names and anything it missed (`knowledge-base.ask`, `knowledge-base.get` with `r
07 (`00-META/process/07-feature-branches.md`), the glossary and the mesh's instructions
(`/etc/claude-code/CLAUDE.md`). Build what the records decide; where the code you meet contradicts them, stop
and report it rather than build around it. The same holds for the handover: before you add any exported type,
field, constant, package or module, check where design 20 *Where a seat's code goes* and design 26 put it; a
handover that places it elsewhere is reported before you build, never built.
field, constant, package or module, check where the design section *Where a seat's code goes* puts it (ask the
knowledge base where a seat's code goes); a handover that places it elsewhere is reported before you build, never
built.
**Build only mesh paths.** Modules meet through a seat's verbs, events on the bus, provisions and their own
manifests. Never make one module name another, read another's internals, or special-case one module in another
+5 -2
View File
@@ -20,8 +20,11 @@ Code shows what exists, not what was decided: where the code and the records dis
event, which provision (requires and provides), which state on the bus (key-value bucket, stream, object store)
and which module owns it, which field of a module's own manifest. A module that names another module, reads
another's internals, or is special-cased in another part is not a mesh path: name it as a finding and give the
mesh-shaped alternative. Shared code (mesh-sdk) holds only seat contracts and what every module shares, never a
module's name.
mesh-shaped alternative. Where each new piece of code goes is the design section *Where a seat's code goes* (ask the knowledge base where a
seat's code goes): a seat's types in its contract in its domain's contracts module, or in the seat-set package while
the seat is not defined whole; logic over a seat in its client package; mesh-sdk only the runtime every module uses
and seat-neutral parts, never a seat-specific type and never a module's name. Name, for each new exported type,
field, constant, package or module, the line of that section that places it.
**Then the work**, as playbook 07's prepare step says: per repository every file and test the change touches,
by clause of the record; subtasks of about thirty minutes, one change each, with their acceptance; the test
+3
View File
@@ -156,6 +156,9 @@ is a breach the lead names.
3. **For each item of the second answer, what happens to it after the change** (kept as it is, moved to a named seat,
module or verb, replaced by a named part, or dropped and why nothing needs it), **and the test that proves it**: an
acceptance criterion (item 5) at its level, or, for a dropped effect, the search showing no reader is left.
For every new exported type, field, constant, package or module, the answer names the line of the design
section *Where a seat's code goes* that places it (ask the knowledge base where a seat's code goes): where new
code goes is always a design question, never the lead's own choice.
Code starts only when the three answers are complete for every repository: no fixing agent starts on a context file
without them, and an effect found later is the prepare step missed, written into the answer and its issue before the
fix. In the days up to 2026-11-02 the controller was taken apart without this answer: jobs nobody had named (making
+4 -4
View File
@@ -40,11 +40,11 @@ processing power"). Everything before the push is local and fast, and no try is
with what happens to each after the fix. It is a few lines in the issue's note, under `What exists today`, and the
review runs the search again; a reader it finds that the note omits makes the fix wrong. **Where each new piece of
code goes is always a design question, never the lead's own choice:** before any code, ask the knowledge base for the
area (`knowledge-base.ask`) and read the design that places code ([design 20](../../03-DESIGN/01-to-be/20-writing-a-module.md)
*Where a seat's code goes*, and design 26 for a seat's types); the note names, for every new exported type, field,
constant, package, module or repository the fix adds, the design line or decision clause that puts it there. A
area (`knowledge-base.ask`) and read the design section that places code, *Where a seat's code goes* (found by
asking the knowledge base where a seat's code goes); the note names, for every new exported type, field,
constant, package or module the fix adds, the design line or decision clause that puts it there. A
handover to the developer quotes those lines and never decides a placement itself (issue 1748, 2026-11-04: a
retake class placed in mesh-sdk by the lead's handover, against design 26, passed review and its check). If a design question is open, it is settled before any
retake class placed in mesh-sdk by the lead's handover, against that section, passed review and its check). If a design question is open, it is settled before any
code is written: on the issue, through the knowledge base (`knowledge-base.ask` first: what is decided is read before anything is designed), or by the operator. A fix that turns out to
need a second repository, or more than about an hour, stops here and becomes a feature; one that needs a
decision stays a small fix. **The session's own model (the larger) then writes the issue's acceptance