The same gap as restic's in the catalogue: mesh-delivery-pipeline loads nats-server through testbus with neither its
requirement nor its sums; checkermsg loaded nats.go and its requirements with no require line; meshcatalogclient
required klauspost/compress below the version its graph selects. Each now passes go list -mod=readonly -deps -test
against the group's heads with GOPROXY=off, both build tags.
Builds: design 47 G (join 11, the check's shut-off build of the group's modules)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The checker's fetch pins only the zero-version requirements a directory's go.mod names
(mesh-build-go workspace.go goModOf), so a module reached only through another, such as
meshhandacts through meshhandactsclient or mesh-delivery-sdk through meshcatalogclient,
was never downloaded and the shut-off load failed (fetch.go:267). The join's merges had
dropped these indirect requirements that the trunk's go.mod files list.
Builds: design 47 G (join 11, the check's fetch of the group's modules)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The grants part grants a seat verb only to a module that names it in invokes (GR8), so a call missing from a
manifest is refused live. Listed every module's seat-verb calls in code (constant clients, seatlist.HolderOf,
operatorask, buildrun's drops and puts) against its invokes: the teller asks who holds operator-channel
(operatorask.Bucket) and the checker drops asks of the image build seat. Every asker of a build seat names the
queues it asks as seat:<seat>.accept.<queue> (A-231): the runner check and delivery, the assigner check, the
builder delivery, the checker check and recheck; the indexer had its entry. The validator judges that form
through mesh-sdk's catalogue.QueueInvoke against the kinds the seat accepts.
mesh-grants: a consumed seat view whose seat has no holder on record grants nothing instead of refusing the whole
module (TestGrants); TestCallersAndWhyRefused and TestSentStoresRead take §610's class defaults.
Builds: design 47 G §544, §601, §610, §616, A-231, A-179
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The finding pipeline-waits was raised at the wait's bound and nothing cleared
it. It now names the awaited runner fingerprint in one evidence entry,
`awaited <fp>`, written when it is raised (A-276), and the runner's hearing of
the node-engine seat's running clears exactly the findings whose entry names
the fingerprint said healthy (A-218), through its held writer, which holds what
its state findings held at its start: a finding raised before a restart is
cleared too, and one awaiting another fingerprint stands. The summary is never
read for it. A clear that fails has the running heard again.
Builds: design 47 G lead answers A-218, A-276 (join 11 area 3)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
AnswerSeat checks a call's caller against the seat's definition its caller
reads from the seat list it follows (A-186), refusing every caller while the
list is unread. The assigner (mesh-wants input), the builder (mesh-builds
reserved) and the indexer (mesh-catalog input) hand it the definition their
seat list holds once heard; the pipeline runner, which followed none, follows
one over its calls connection and hub, read again once its events are live,
and its manifest invokes seat-definitions and consumes the list's two events.
The runner's and the indexer's integration beds answer the seat list, and the
indexer's input test calls with a caller the bus proved (A-179).
Builds: design 47 G lead answers A-179, A-186 (join 11 area 6)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The join's importers name the delivery repository's moved contracts and sdk
(MV1), node-tools' tests use mesh-sdk's gate, the duplicate node-engine claim
rule of the reader release gives way to G's, and the assigner names its first
watched branch, never a constant. The seat holders' AnswerSeat callers are
area 6's.
Builds: design 47 G join 11 (merge of fix round 11)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The candidate (the pipeline's own revision) against the branch's newest through mesh-catalog's revision; serving parts by the holder of the runner's, catalog's, steps' and composer's seats; acting rules, credentials; grants through grants-for. A read that fails says could not run. Touches steps.go (Hearer.Widens field, say's pipeline-ended), main.go (hearer.Widens), module.json invokes.
Builds: design 47 G §71, §275, §335, §441, A-207, A-215, A-220
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
run writes each member's pipeline at once under the run's random id and its named branch and says
run-started; the candidate run-<id>'s catalog-revision, handed to the runner by meshcatalogclient's
candidates hook, is read whole through the revision verb and places each member's steps and a pipeline
of each entry the members change, saying pipeline-started once each.
Builds: design 47 G §64, §373, §420, A-160, A-180, A-185, A-193, A-199
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The runner hears the builder's stream of build ends (kept last per subject, read whole at its start, A-181: consumes
`mesh-delivery-builder.build.ended.**`) and keeps when each build ended, the stream's own time. wait-held carries it as
`clock-from`, the bound of the wait is armed from it (30 minutes less what passed), and a bound whose build has not ended is armed
when its end is heard, with wait-held said again. A failed end starts no clock.
Builds: design 47 G §266, §269, §703, A-181, A-206
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The pipeline gains `unlogged`: a step's end is written in its key with its step-log entry in one compare-and-set, said as
step-ended, then appended to the step log and cleared; a log that refuses an append ends no step, says full and starts no new
pipeline; at its start the runner appends every unlogged entry in order after reading back the log's last entry of that
pipeline, and once a minute while the log is full. The tools runner_unlogged and runner_unlogged_append (a hand act).
Builds: design 47 G §486, §606, §549
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
A pipeline held for the runner's new version says its wait-held and wait-ended on `runner version`, no longer on `build node`.
Contract (seat.json, regenerated by seatgen) gains the value.
Builds: design 47 G §534, §696, A-206
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
ReleaseExpired says each pipeline it started through the starter's Late, and the process writes the finding pipeline-waits
(scope module, id the pipeline's key `<branch>.<id>.<module>`) naming the awaited runner and since when.
Builds: design 47 G §266, §269, A-206
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
A step keeps the node whose holder said ask-taken; a superseded step's drop is asked of that node's holder, an
untaken ask's of any holder, as kept calls; steps on mesh-builds and mesh-wants are only ended superseded. A
pipeline a publish started says that publish (published), so a newer publish of the package supersedes it.
Builds: design 47 G §31, §119, §350, A-182, A-202
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The seat mesh-pipeline-runner gains the act verb `release` (why; answers how many it started) beside start and ask-again, its
hand act written first through mesh-hand-acts; each released wait ends `released` and its bound is dropped. The tool
runner_release asks the verb. Contract regenerated with seatgen.
Builds: design 47 G §276, §534, A-206 (A-195)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The runner keeps each commit the seat mesh-delivery says a recovery merged in its state recoveries; a pipeline whose commit is
named there has its go, node and image steps asked on delivery.step, ahead of the first round, at its start, its resume and a
rerun; a recovery heard after its pipeline started asks nothing again.
Builds: design 47 G §81, §86, §415, A-207
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The seat gains the events filling, full and room; at each step's end and each start the runner reads the fill of pipelines,
step-outputs, kept and step-log against their caps, says filling past 80 %, full at the cap and room below 70 %, and a start
while a store is full is refused, said in the journal and heard again by the bus.
Builds: design 47 G §366, §181
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The seat's pipeline record gains `held` (since, the fingerprint awaited). A take-in giving the runner's own module a new
fingerprint holds every pipeline it starts, and a later take-in's while any is held; wait-held (step pipeline) is said, the
30-minute bound is a key of the state bounds. The node-engine seat's running of the runner's module at the awaited
fingerprint, healthy, or the bound's expiry, releases them: steps placed and asked, wait-ended and pipeline-started said. A
runner starting at the awaited fingerprint releases at its start. runner_waits lists the held pipelines.
Builds: design 47 G §65, §266, §276, §534, §19 (lead answer A-195)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
Three step-log sequences in the state aged, one per retention (7, 30, 90 days); at each step's end up to 20 entries per
sequence past their retention delete the output and the pipeline (7 days), a kept result not read for 30 days (30 days) and a
passed pipeline (90 days), never a pipeline that is its branch's newest; each delete is a journal line. The step log is
written to and read from the log's stream (design 47 G §470); a log entry names the kept results it wrote or carried and a
kept result its last read.
Builds: design 47 G §330, §410, §470
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
A required step that failed or could not run writes the finding of its commit, owned by the commit's author as the forge
records it (read through the seat git's pull); one with no known author has no owner and says why, written at the next step
end of that commit; a newer revision passing the steps clears it. The runner's finding writer is the held writer.
Builds: design 47 G §33, §540, A-191
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
pipeline-ended carries the module's test counts (the sum of its steps') and over-budget
past 500 unit or 50 integration tests; once every member of a group on a watched branch's
source revision ended, group-ended is said under the group.
Builds: design 47 G §24, §73, §332, §419
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
A step neither the artifact's nor the module's policy names is placed as an optional step
(Status returns optional), no longer no step; a failure of it holds nothing.
Builds: design 47 G §553, §23, §32, §535
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The runner's own writer of its consumer's oldest unacknowledged delivery is
replaced by mesh-sdk's consumer ledger: each message the hub hands a handler is
noted delivered, and applied when the handler acknowledges or ends it; one it
asks again stays unacknowledged. The key form is the same, a key per consumer
by its name in the state consumers. A runner that heard no event yet is healthy.
Builds: design 47 G §76, §468, §495; lead answers A-166, A-176
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
start starts by hand the pipeline of a watched branch's head from the runner's
catalog half, refusing a head already started; ask-again asks a declined
approval once more under an ask of its own, its id following from when it was
asked again so the ask rebuilt for its warrant is the same. Each is recorded in
the hand-act log first; the process answers both beside review, rerun, accept
and cancel.
Builds: design 47 G §30, §39, §306, §36, §394
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The process writes, in its state consumers, when its durable consumer's oldest
unacknowledged message was delivered, at each delivery and acknowledgement; the
bundle's runner_health reads it and the pipelines state, and names a consumer
five minutes or more behind. The process resource's health is that tool.
Builds: design 47 G §76, §468, §495; lead answers A-164, A-166
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The pipelines state is capped at 256 MiB and kept at 128 MiB in the old state
section, the sent store sent-objects is declared at 256 MiB, and the first-view
tools carry the runner's tool prefix.
Builds: design 47 G §469, §85, §477, §533, §539
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The SDK, the assigner, the builder's buildrun, the indexer, the
pipeline, the watchman, mesh-enrolment and mesh-grants (and through the
SDK the checker's checkermsg and mesh-tools' node-tools) imported
packages of modules their go.mod did not require at the zero version;
the placement's go.work over the whole repository hid it, and a build
of the module alone with -mod=readonly refused it. Each now requires
them (beside a relative replace where the module keeps its siblings so),
and the indexer's and watchman's duplicated lines go.
Builds: design 47 G §427 (the group's check builds every importer); delivery review round 1, finding 6
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The delivery repository's contracts and SDK live under modules/ as
mesh-delivery-contracts and mesh-delivery-sdk, their Go module paths
renamed to match the folders (the TypeScript names already did), and
every importer in mesh-delivery, mesh-catalog, mesh-host, mesh-tools
and mesh-sdk follows in the same group: a design as it should be, one
path per module, checked by the group's check building every importer.
Builds: design 47 G §427, §88
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
Item 3: seatgen -check no longer names go/seats/nodebuildimage/acts_test.go (not written by the generator); the
test moves to the domain SDK's buildstep, which already reads the build seats' definitions. mesh-delivery-pipeline
no longer imports meshmoduleassigner.
Builds: design 47 G §324, §397
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
Starts the program, takes a take-in.taken, sees the pipeline placed and its build asked, takes the build's step-ended and
answers a session's review through the seat, the proven caller recorded; the pipeline then ends passed.
Builds: design 47 G §22, §44, §54, §70, §482, A-106, A-107
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
A review ends a placed review step with its proven caller; rerun asks a step again under a new ask saying it is a rerun
and by whom; accept takes a failed optional step; cancel ends a running pipeline cancelled and drops its asks' bounds.
Each writes `pipelines` by compare-and-set, says step-ended, step-started or pipeline-ended, and records its hand act
first, through AnswerSeat.
Builds: design 47 G §22, §70, §482, §30, §325, §394, A-107
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The asking half reads, in one pass for all a pipeline's asks, the kept entries whose package is the artifact's package from
the catalog entry or lies beneath it, and the runner's own toolchain per language, kept in the new state toolchains as
heard from toolchain-agreed.
Builds: design 47 G §25, §416, A-104
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The runner arms, before it puts an ask on a build seat's work queue, a key of its new state bounds (key-ttl) for five
minutes, deletes it when the holder's ask-taken is heard, and ends the step could not run naming the seat when the bus's
marker of the key's expiry is heard: no timer, and no look at the seat list.
Builds: design 47 G §32, §535, §602, §647, A-77, A-104
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
Starter.Resume asks again each running step of a branch's running pipelines under the id it was placed under; the branch
view tells Views.OnReady once when it holds its first half, and the runner resumes that branch then.
Builds: design 47 G §22, §24, §88
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
Only a required step still waiting or running holds endPipeline; a code review nobody gave on an optional policy no
longer keeps the pipeline open. The review verb itself is not built: see the report.
Builds: design 47 G §22, §70, §482, A-104
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The manifest's invokes names seat:mesh-builds.step, seat:mesh-wants.step and each build seat's check.step; the seat's
definition gives rerun, accept and why-carried inputs and the started pipeline's steps the value build, as the result's
step enum has it.
Builds: design 47 G §22, §24, A-97, A-99, A-102
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
Place puts composition running, asked of mesh-wants at its accepted kind step with the pipeline's commit,
fingerprint, revision and source; the hearer takes mesh-wants' step-ended as the build seats' ends.
Builds: design 47 G §22, §24
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
The runner's step enum gains build; Place puts the build first, required whatever the policy names, and asks it of the
seat mesh-builds naming the module's own entry by fingerprint; the hearer takes mesh-builds' step-ended as the other
seats' ends, held to its one entry.
Builds: design 47 G §230, A-91, A-97, A-99
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
A step the module's policy does not name is no step (A-91); a bypassed step is asked of no one; an artifact no
build seat names ends its step could not run naming it; an approval due at the start is asked there. The hearer is
named by the runner's own module, the asker the router's decided names.
Builds: design 47 G §22, §24, §26, §44, §54, §103, §323, §476, A-91
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h