defs.Wait has the fields of a wait (owner, step compose or kept-build, node, on, bound, since, clock-from, words, reason)
and, in the have, ask-at and act; wait-held.<node>.<module> and wait-ended.<node>.<module> are kept last per subject on
the stream running is kept on; the have's value gains wait, waits stays. Generated code waits for K21.
Builds: design 47 G §498, §499, §541, §556, §560, §629
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
capabilities-changed and its body go, the one event of a node's stated capabilities is manifest-reads-changed, which
already carries why. Generated code waits for K21.
Builds: design 47 G §590
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The seat gains item-started and item-ended on <event>.<node>.<module>.<item>, kept last per subject for 7 days,
each with at, and item-ended with outcome (done, failed or put-off), the restore's act it gave way to and an
error, so the recovery module and the backup holder each read the other's start and never overlap. The seat is
of the seat-list grain: nothing is generated and its fixtures are not read, so mesh-sdk's definition reader and
its bootstrapped copy of this file are what read it.
Builds: design 47 G §554, §555, §563, §523
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The node-engine seat's Running gains healthy, a nullable boolean so that a false survives the wire and a running
said by a node-engine of before G, with none, is told apart and reads as healthy; stopped is said only when the
have no longer holds the module. Two fixtures read healthy true and false; the one without it still decodes.
Generated code waits for K21.
Builds: design 47 G §520
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The definition drops held-by-the-engine, so one module's claim of the seat is read as any other. It gains
first-views (read; any person and the healers) and first-view-again (act; the operator and the healers), not
optional, their inputs and answers those of the view's two tools mesh-sdk's runtime serves; a fixture reads
first-view-again's input. Generated code waits for K21.
Builds: design 47 G §508, §422, §204, §400
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
G section 555: the seat node-backup gains nothing for kept data on the bus; its now and restore keep the class act (§405).
Builds: design 47 G §555, §405
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The conflicts in mesh-broker's seat.json and fixtures took origin/main's Binding (list, show and orphans answer each
binding) and the objects field of C8; C8's snapshot-kept, restore-kept, KeptPoint and Aside are not carried over as G
section 555 moves them to the seat mesh-recovery, which mesh-broker does not gain. The generated Go and TypeScript of
mesh-broker are written again by seatgen.
Builds: design 47 G §399, §513, §555
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
create and apply are of class act; recreate and drop of class warrant; all four called by module:nats.
seat-list and seat-list-again name persons, sessions and healers as SeatListCallers does.
Builds: design 47 G §336, §388, §391, §392, §393
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Both verbs are of class act, not optional, and called by holder:node-backup@same-node alone; restore-kept
takes aside-only and discard-aside; the Binding gains objects. The verbs' sibling mesh-broker callers text
(create, apply, recreate, drop) is left as it is: a question is open.
Builds: design 47 G §58, §59, §337, §399, §400, §405, §406
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
now, restore and aside are of class act; discard-aside is the operator's alone; ended and restored carry the
node, module and kept data in their subject and the module, kept data, form, fingerprint and outcome.
Builds: design 47 G §296, §297, §302, §405
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Rewritten from the earlier branch to the final lines: keep as an object, stopped on running, process-builds a
read for persons, sessions and healers and not optional, the compose rule with the step's default bound.
The eleven verbs' callers (§393) wait on a question; the generated Go and TypeScript wait on the generator.
Builds: design 47 G §177, §199, §203, §260, §261, §266, §396, §404, §440
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
mesh-broker list, show, check, orphans and mesh-config renames name invokers; mesh-vault retire names
seat:mesh-config; node-engine seat-list names persons and healers, seat-list-again the operator and the
healers. mesh-broker create, apply, recreate and drop keep their text: the design names no form for them.
Builds: design 47 G §336, §392, §204
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The seat's Binding takes the fields the events carry and the membership holds
(local, storage, template, stream, subject, bucket, object-store, history,
state, indexes, snapshot, types): one form in the events, in list, show and
orphans. Held gains binding, present on an entry the bus holds. Definition,
fixture and generated Go and TypeScript contract.
Builds: design 25 bindings-first-view §2, §7 (hq d0760629, PR 543)
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The store's address is the registry seat holder's listen, so the provision
artifact-store retires; the sweep and the read tools read the store through
list, never by its files or its read side.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
A store that cannot remove a tag alone (another tag names its digest) kept the tag and the holder said
removed, so the builder and every follower believed the tagged version gone while it stayed pullable:
work reported done that was not done. The shared registry part gains the outcome kept: in remove's
answer (kept, the reason shared-digest, the tags still naming the digest) and as its own event, in all
four registry seats. Regenerated with mesh-catalog's seatgen (join-mesh-catalog ccb7eaff); seatgen
-check passes; fixtures for the answer and the event in each seat.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
seatgen writes a string's enum as Go constants, so the sweep names
RemoveInputReasonRetention instead of the literal. release of what is not
held is no error. The package seats' fixtures name a package as design 32
does (git.novox.be/novox/mesh-sdk/go, @novox/mesh-sdk), name says so, and
module equals name for a Go package. Generated with mesh-catalog's seatgen
(wip/registry-a3); seatgen -check passes.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Each change of an artifact's series the checked head makes is {module, artifact, from, to} under series; the
fixture carries one and the regenerated round trip reads it back (seatgen -check clean).
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The lead's ruling (14:2x): the pull waits ENG-9 shows are carried in the engine's have, read through node_haves, as
ENG-9 allows, so the seat serves no verb of its own for them. Regenerated; seatgen -check finds nothing out of step.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The node-engine seat, defined whole by lead-47's L3 (ADR 0618, ADR 0613 §3), is regenerated in A1's layout (ADR 0625 §1,
§3): go/seats/nodeengine a Go module of its own, ts/seats/nodeengine an npm package of its own, and module.json declares
go-nodeengine and ts-nodeengine. seatgen -check finds nothing out of step.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
go-package-registry's published says the module (field module), so a reader fetches the version by its path. The
four registry seats take their events whole from the part registry, which refuses a seat redefining one, so the
field is the part's, optional and empty for every other kind.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The messenger keeps them in its own stream asks (its manifest's streams, design 55 § 11), so they ride that
stream's subjects, as the checker's verdict does.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
Their output schemas replace mesh-sdk's hand-written SignAnswer, EnrolmentTokenAnswer, NodeAccountAnswer and
Signed, on the same wire names; signed's time is RFC 3339 text, as the generator writes every time.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
verdict, tag-wanted and preview.written ride the checker's own streams, renamed, retiring and retired
mesh-config's config-events stream, whose subjects are mesh.stream.<module>.event.<event>.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The lead's ruling of 13:0x replaces 12:5x's said-subject: mesh-broker's events follow every seat, on
mesh.seat.mesh-broker.event.<event> in the shared events stream, 7 days; the bus module keeps a longer history on a
stream of its own module. So every seat family is that stream filtered to the seat's subjects: a definition says 7
days and no cap of its own, and the reader refuses anything else.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The lead's ruling of 12:5x (design 25 § 12.3): mesh-broker's events ride the bus module's own stream, 30 days,
on mesh.seat.mesh-broker.said.<event>, outside the shared events stream's mesh.seat.*.event.>, so the bus never
refuses the two as overlapping.
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
The seat's area changes in this milestone, so it moves whole into its contracts (ADR 0613 §3): the eleven verbs it serves
get their answers as the engine writes them, asked, done and refused their body, and the seat serves the optional verb
manifest-reads (ADR 0618 §3) and says manifest-reads-changed (§4). Each event is published per node, the node's name its
last token (by-caller), and kept with the seat's events for seven days. compose-candidate's input is a boolean, as the
engine and the checker read it. Fixtures for every event, compose-candidate's input and three answers.
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn