Commit Graph
114 Commits
Author SHA1 Message Date
jschoubben ed12ffb387 mesh-broker's Binding is the wire form and Held carries it, so list, show and orphans answer the binding
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
2026-11-11 10:14:55 +01:00
mesh-tools f5d76e84ca Merge pull request 'The node-engine seat's client asks a node once more when an event came while an ask ran, never dropping it (issue 1966 note 170; group with mesh-delivery)' (#4) from fix/1966-engine-reads-asked-again into main 2026-11-10 10:45:49 +00:00
jschoubben c9ffed7042 S1-S3: the node-engine seat's client asks a node once more when an ask came while one ran, and shows when the event was heard (issue 1966 note 170)
mesh/check checking c9ffed70421a on f5d76e84ca71 | novox/mesh-contracts#4 in group fix/1966-engine-reads-asked-again
mesh/delivery merged: source.main moved to novox/mesh-contracts@f5d76e84ca71
mesh/delivery-group group fix/1966-engine-reads-asked-again merged: every member is merged
An event of manifest-reads-changed heard while an ask of the same node ran was dropped
without a line, so a restated engine could stay read at its first statement (ace,
2026-11-10 07:36). Every reader goes through Keeper.AskNode, so the assigner, the
builder and the indexer are fixed at once (ADR 0668 §4: the caller hears it and calls
again; ADR 0634 §1: the seat's client).

- AskNode: an ask while one runs is asked once more after it, one follow-up however
  many came, said in one line (1966/AC170-1, AC170-3). The asks of one node so run one
  after another, and take keeps the last answer, as before (no rule on the engine's
  clock: review round 1).
- Statement.EventAt (event-at): when the node's event was last heard, read by the
  parts' engine-reads tools; forgotten with the node's key.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 11:42:05 +01:00
mesh-tools 7fbfd77a76 Merge pull request 'Engine reads keep the last answer and say an unanswered node; operator-channel asks and watchdogs presence declared (ADR 0668; issue 1966; group fix/1966-call-made-once)' (#3) from fix/1966-call-made-once into main 2026-11-10 07:20:28 +00:00
jschoubben bb16f99e2d C7: the node-engine seat's client keeps the wait of every caller's kept manifest-reads calls, ReadsCalls beside Keeper.Unanswered, its bound's end asking once whether the machine is heard (issue 1966, ADR 0668 §3, ADR 0634 §1, ADR 0596 §2; review round 3, findings 1 and 2)
mesh/check checking bb16f99e2d5e on 7fbfd77a76cb | novox/mesh-contracts#3 in group fix/1966-call-made-once
mesh/delivery merged: source.main moved to novox/mesh-contracts@7fbfd77a76cb
mesh/delivery-group group fix/1966-call-made-once merged: every member is merged
The assigner, the builder and the indexer share it instead of two copies; it names no other seat's client (the client check), so each caller writes its finding in mesh-conditions' layout through Raise, stamped with ReadsCalls' clock.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 04:54:06 +01:00
jschoubben 11a36eb88c C6: the watchdogs seat declares presence's answer: with machine, that machine's online and since; without, the keys of the state presence (issue 1966, ADR 0596 §2, ADR 0668 §3; review round 3, finding 1)
The builder and the indexer ask whether a node's machine is heard through this verb instead of reading the watchman's state; regenerated with seatgen, whose -check names nothing new.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 04:52:53 +01:00
jschoubben 0ae7cb7a76 C5: the operator-channel seat declares its verb asks' input (key, state, since, bound) and answer (asks with key and state, cut, matched), as the router serves it (issue 1966, ADR 0668 §4; review round 1, finding 5)
The assigner's read at its consumer's bind calls the verb with them; regenerated with seatgen, whose -check passes.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 04:20:04 +01:00
jschoubben c6689bfdb3 C4: a statement keeps since when its engine is unanswered, and the keeper names each node unanswered past a bound while heard (issue 1966, ADR 0668 §3; review round 1, finding 4)
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 04:15:01 +01:00
jschoubben c584f4570b C3: the engine-reads keeper keeps the fallback or the last statement at the first fault while the kept call asks on (issue 1966, ADR 0668 §3; review round 1, finding 1)
A part whose node answers nothing waited out busretry.Bound (30 s) before it acted on the node's record: Once asks the verb once, and its fault is taken at once.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 04:11:07 +01:00
jschoubben e1303f1542 C2: the finding kind call-unanswered of the seat mesh-conditions (issue 1966, ADR 0668 §3)
A kept call still unanswered past five minutes is said in the caller's findings, keyed call.<id>.call-unanswered.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 02:54:44 +01:00
jschoubben 5c29bea0b3 C1: the engine-reads keeper calls every node again at its part's consumer bind (issue 1966, ADR 0668)
A manifest-reads-changed said before the part's consumer existed was never heard (note 155), and the
statement taken while an engine restarted stood. AtBind is registered on the hub's OnBound.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 02:54:44 +01:00
mesh-tools 66e0c611bf Merge pull request 'Record a merge through the merge gate (issue 1966, bootstrap)' (#2) from fix/1966-gate-record into main 2026-11-07 20:19:51 +00:00
jschoubben 1aa5dee992 Record a merge through the merge gate so the new indexer reads this repository's seat definitions on its merge (issue 1966, the operator's bootstrap)
mesh/delivery merged: source.main moved to novox/mesh-contracts@66e0c611bf83
mesh/delivery-group group fix/1966-gate-record merged: every member is merged
mesh/check pass 1aa5dee99226 on 66e0c611bf83 | carried from 08580d25d2dc, mesh-networking 5af7189cad82 | unit 14 run, 270 kept | integration 0 run, 27…
2026-11-07 21:13:54 +01:00
mesh-tools 08580d25d2 Merge pull request 'Registry milestone: mesh-contracts (issue 1966)' (#1) from feat/registry-milestone into main 2026-11-07 14:19:16 +00:00
jschoubben b77560786a Complete go.mod and go.sum for the externals each module builds with
mesh/delivery merged: source.main moved to novox/mesh-contracts@08580d25d2dc
mesh/delivery-group group feat/registry-milestone merged: every member is merged
mesh/check checking b77560786a6a on 08580d25d2dc | novox/mesh-contracts#1 in group feat/registry-milestone
A check's tests run without network, so each module must carry every external module it builds with.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-06 00:51:22 +01:00
jschoubben 76de6889fc The assigner's seat says assignments throughout: the type, the events and the defs; the legacy key form placement.<node> leaves the client (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 21:57:16 +01:00
jschoubben fdcec5d384 The Placement domain goes: the module assigner and the four node seats move to the Core place, the assigner's state and verb placement become assignments, mesh-wants goes to mesh-delivery (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 21:39:56 +01:00
jschoubben 07ec4b1f31 Regenerate the contracts' TypeScript: the key parsers name their parameter apart from the parts (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 21:24:07 +01:00
jschoubben f0ed2d9b12 No client names the holder of the seat mesh-provisioner: each reader keeps its own constant, held to its manifest (ADR 0625 section 4, issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 19:36:21 +01:00
jschoubben bc7763a9c0 Merge branch 'b9j/registry' into feat/registry-milestone 2026-11-05 19:26:06 +01:00
jschoubben 276e5e2aef The delivery SDK's enginereads, findings and heard leave for the clients of their seats (ADR 0634 sections 1 and 2, issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 19:22:05 +01:00
jschoubben 828b5b1d38 No client names a holder: each reader keeps its own constant, held to its manifest (ADR 0625 section 4, issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 18:37:28 +01:00
jschoubben 70fe186d7f Move node-service-manager, node-package-manager, node-container-runtime and node-environment to mesh-placement-contracts: their domain is Placement (ADR 0635 §2, ADR 0636 §5; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 18:23:43 +01:00
jschoubben a2a321dfa2 Require the external packages a module's build reaches (issue 1966)
Versions are the ones the workspace already resolves, with their go.sum lines.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 18:11:56 +01:00
jschoubben 036f39a5a5 Require every mesh package of the group at the floor version (ADR 0573 sections 2 and 4, issue 1966)
A member's go.mod names the oldest version a module accepts; the check builds the group's own heads whatever it names. go.sum lines of mesh packages are left out.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 16:56:39 +00:00
jschoubben 6b8c6e2721 Conditions client: Observation, Raise, Clear, Says, EncodeFinding and DecodeFinding raise and clear an observer's finding in the seat's layout, goldens from go/health's output (B5l; ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 16:46:25 +01:00
jschoubben 396ccc0e11 Operator-channel client: the bench shapes tested against their written wire, with no mesh-sdk channel import (B6j; ADR 0634 §5; issue 1966) 2026-11-05 16:45:22 +01:00
jschoubben 70da0dd17e Watchdogs client: the keys, check and codec of presence, pulse and stuck over the seat mesh-watchdogs, goldens from go/delivery's output (B7n2; ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 16:21:28 +01:00
jschoubben 311654f224 node-engine client: RootContract, the contract from which an engine judges an account's root (B5g; ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 16:02:42 +01:00
jschoubben 2e0563e983 mesh-config seat: the state kept typed (an approved held value, under owner.repository.number.node.module.key), a fixture from the holder's test values, regenerated; a client meshconfigclient with the keys and the check the checker and the assigner share (B2f; ADR 0565 §5, ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 16:02:00 +01:00
jschoubben 9c80664492 Wants client: the keys, check and codec of a want, a node's own want and a hold over the seat mesh-wants, goldens from go/delivery's output (B7h; ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:58:13 +01:00
jschoubben d8d319e3ff node-engine client: the adoption handing's two ends (HandAccounts, OpenHanded, HandedAccount, KeyFingerprint, IsBcrypt) over the seat's AccountsHanded (B5f; ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:54:21 +01:00
jschoubben bb2140c236 Module assigner client: the operations of a proposal's change and the states of an open proposal, for its holder and for the enrolment that builds add-node (B7f finding 4; ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:43:25 +01:00
jschoubben 5f8b8edd20 node-engine client: a candidate's composition key is its own, over mesh-sdk keys; the client no longer imports go/delivery (ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:35:17 +01:00
jschoubben 71c8b9f964 Merge branch 'b4/registry' into feat/registry-milestone 2026-11-05 15:35:02 +01:00
jschoubben 54a42db4ec Module assigner client: the placement and seat-holders states by name, and the machines a placement names (ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:28:18 +01:00
jschoubben 57dd579234 Wants seat: the backup answer of a want is again or skip (ADR 0634; issue 1966) 2026-11-05 15:27:08 +01:00
jschoubben 6d5fe4572d Placement seat: the tunnel found on a node is a typed record, not a free object (ADR 0634 §1; issue 1966) 2026-11-05 15:25:57 +01:00
jschoubben 8e51d93c2f node-engine seat: a node's windows, busy, strays and filters are lists, as the engine writes them (the contract said objects and refused every real value; ADR 0634; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:19:03 +01:00
jschoubben 8c5f85e86b node-engine client: the node key of the have, the codecs of the health report and of the data items (ADR 0634 §1, §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:16:39 +01:00
jschoubben 82b02ff099 The Connectivity folder leaves mesh-contracts for mesh-connectivity-contracts, which holds the same seven definitions (ADR 0636 §5, §6; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:14:57 +01:00
jschoubben ed7cf77659 The Delivery domain's seats leave mesh-contracts for mesh-delivery-contracts: the 13 definitions, the registry part, the four registry clients, the checker's generated packages (ADR 0636 §5; ADR 0634; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:14:57 +01:00
jschoubben db2a6da471 node-engine client: the codec and the comparison of the have and the node's facts, and the phases and healths a have names (ADR 0634 §1, §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:14:16 +01:00
jschoubben 181441e91b The generated contracts write date-time as time.Time (seatgen of B5d); the conditions and vault clients follow (ADR 0634; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:06:14 +01:00
jschoubben 25da1f8879 node-engine client: the exported fingerprint key part is mesh-catalog's client's, the codec checks the field's form itself (a client imports no other seat's client; ADR 0625 §4, ADR 0634 §2; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:05:08 +01:00
jschoubben cd2615f094 operator-channel: the times of the bench events are date-time, so the generated types are time.Time (B5d; ADR 0634; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:01:57 +01:00
jschoubben 29dc84a38b operatorchannelclient: the bench subjects and words the router and the channels share (B5d; ADR 0634 §1; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 14:56:40 +01:00
jschoubben 35aa61f4d9 operator-channel: the state asks typed to the router's projection; mesh-node-enroller: redeem's answer typed, with a fixture and a client test (ADR 0634 §6; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 14:53:24 +01:00
jschoubben ce9d39d3f0 node-engine client: the codec, the digest and the comparison of a composition, in the field order its first writer used (ADR 0634 §1, §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 14:51:46 +01:00
jschoubben f00aac3847 node-engine: typed layouts for the states have (both forms), composed (both forms, wire names), data and health, with fixtures; Candidates typed as CandidateAnswer (ADR 0634 §1, §6; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 14:50:04 +01:00