Commit Graph
26 Commits
Author SHA1 Message Date
jschoubben 935a0c7753 Each generated TypeScript package gets its lock, its package.json without dependencies and its type-check config (ADR 0634 §8, F7; issue 1966) 2026-11-05 14:14:32 +01:00
jschoubben 211bdcaa5e Regenerate the domain contracts; hand-acts and conditions clients; operator-channel client moves; the seat-set package ends (ADR 0634, ADR 0635; issue 1966)
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-05 13:19:37 +01:00
jschoubben 4d7b2a3778 Registry seats: no seat delivers artifact-store, and the two store seats serve list (ADR 0632 §2, §3; issue 1966)
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
2026-11-04 20:52:15 +01:00
jschoubben 859da7b1ce Registry seats: remove answers and says kept when a tagged version shares its digest
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
2026-11-04 18:12:34 +01:00
jschoubben 7d8f090b75 Registry seats: the removal reasons are constants, a release of nothing held answers released false, packages carry their own language's names
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
2026-11-04 16:32:15 +01:00
jschoubben d9af39256e J4 (A2j finding 2): the checker's verdict event names each series change, so a reader never loses one to a cut status line
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
2026-11-04 14:52:52 +01:00
jschoubben 4afce1aac8 Drop node-engine's optional verb pull-waits: no record gives the seat that verb
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
2026-11-04 13:52:54 +01:00
jschoubben 652606f59a Join lead-47's node-engine seat whole into the registry milestone, in its own Go module and npm package
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
2026-11-04 13:46:05 +01:00
jschoubben a6f859de3f ADR 0625 §1: each seat defined whole is an npm package of its own, declared in module.json
One @novox/mesh-contracts would rebuild every TypeScript user at any seat's change, since the indexer
counts the npm package a lock resolves. Generated by seatgen c1fdd7c; ts/ keeps the seat list alone.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 13:40:54 +01:00
jschoubben 3368a055a4 SD-M2c (A2d): a registry outcome names the Go module path a Go package is fetched under
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
2026-11-04 13:32:24 +01:00
jschoubben 4ce5dec682 SD-M2d: operator-channel's offered and closed are on the router's stream asks, mesh.stream.<holder>.event.*
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
2026-11-04 13:31:16 +01:00
jschoubben 1bcb18d1c7 SD-M2d, ADR 0627 §1: the vault's sign, enrolment-token and node-account answers and its signed event are typed
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
2026-11-04 13:29:47 +01:00
jschoubben cc2d3aafdb SD-M2b, SD-M2d: the checker's and mesh-config's events kept in their own streams are mesh.stream.<holder>.event.*
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
2026-11-04 13:17:26 +01:00
jschoubben 323e6a6be2 SD-M2a: mesh-broker's Held says the entry's state and why, so show says why an entry is in its state
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 13:15:18 +01:00
jschoubben f32ea4ba75 SD-M2d: the checker's tag-wanted names the pull request's branch
The lead's ruling of 13:0x: the builder removes the tag when the branch ends, so it needs the branch.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 12:53:49 +01:00
jschoubben 96b7eeeaf7 SD-M2b: mesh-broker's events on the shared events stream, 7 days
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
2026-11-04 12:53:19 +01:00
jschoubben 87412fd307 SD-M2d: operator-channel's decided kept 7 days, on the shared events stream
The lead's ruling of 12:5x: no record fixes 30 days; decided rides the shared events stream, 7 days, as on the bus today.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 12:42:35 +01:00
jschoubben f31de828e9 SD-M2b: mesh-broker's events on mesh.seat.mesh-broker.said.<event>
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
2026-11-04 12:42:16 +01:00
jschoubben 7498d689e2 The node-engine seat whole: every verb's answer, its events' bodies, and ADR 0618's manifest-reads and manifest-reads-changed
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
2026-11-04 12:39:56 +01:00
jschoubben f3a9cd17d6 SD-M2b: mesh-broker's events carry the binding and the verdict's revision (the lead's ruling, 12:4x)
The binding a module receives is one named type, Binding, the provision's form and each event's binding.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 12:35:30 +01:00
jschoubben e9c97f9e9f SD-M2a, SD-M2b: the registry and broker verbs are optional until their holders serve them (design 33 §7)
The deciding parts built with this seat list judge the running nats and gitea before their new builds are delivered;
a required verb they do not serve yet would refuse them as the seats' holders (mesh-host's composition and the grants
part's last-holder rule, read in their suites). The mark goes once every holder serves the verbs.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 12:33:59 +01:00
jschoubben 88972faf08 SD-M2a: a publish-part chunk is at most 760 KiB, so its message stays under the bus's 1 MiB with its fields
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 12:26:44 +01:00
jschoubben 5b4239e6d9 SD-M3: the node-engine seat's read-only verb pull-waits (design 51, A7's ENG-9)
Optional until every engine serves it; answers each failed pull waiting on a store's holder.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 12:19:52 +01:00
jschoubben 7f0b0f3b42 SD-M2c: retire takes ask
The ask's id beside the warrant (the hand act's id), as own-retired carries it (A4's request).

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 12:01:18 +01:00
jschoubben a6e3b3bb4f SD-M2a, SD-M2b: keep the record that made npm-package-registry and mesh-broker seats as their decision
Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 11:55:32 +01:00
jschoubben c7fb8d6689 SD-M3: the Go and TypeScript generated from the definitions (design 26 *The generator*)
go/seats the seat list every reader compiles and every seat's name; a package per whole seat with its names, subjects,
types and a test of its fixtures; ts/ the same as a TypeScript package. Written by seatgen, never by hand.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
2026-11-04 11:50:54 +01:00