Commit Graph
179 Commits
Author SHA1 Message Date
jschoubben 1d3f24250c A3e item 1: operatorchannelclient implements the gate's channel and re-exports its Kept
Builds: design 47 G §677, §700, lead answers A-219, A-224, A-228

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 06:25:56 +01:00
jschoubben 33d9b28869 A3d item 1: operatorchannelclient re-exports mesh-sdk's act and its digest, one form
Builds: design 47 G §677, lead answers A-198, A-219

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 06:09:18 +01:00
jschoubben 49e26f5d27 Kept: the operator-channel client keeps an asked call's act, arguments and recorded mark
An asker that asks for a call (the tool runner's approval gate) keeps beside the ask the
act its options bind, the call's whole arguments, and whether its run is in the hand-act
log; Take keeps all three as it marks the ask.

Builds: design 46 7-approval-mark §13

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 05:00:12 +01:00
jschoubben 74c157284f Merge branch 'feat/47-G-fix9-recovery' into feat/47-G-join10 2026-11-12 02:39:12 +01:00
jschoubben 5503882d55 Merge origin/main (licence-put, issue 1409) into feat/47-G-join9
The vault's seat definition keeps retire's class act (G) beside main's licence-put; the
TypeScript contract is regenerated with join 9's seatgen (seatgen -check clean).

Builds: design 47 G §610

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:46:17 +01:00
jschoubben 630de8babc G A-129: the seat mesh-recovery's kept-points answers unrestored
The asides whose record ended at removed with no running act holding them, which the recovery
module's health check fails on, are listed in the answer the tool and the check read.

Builds: design 47 G A-129, §554, §657

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:29:07 +01:00
jschoubben e3520750d5 G A-124: the seat mesh-recovery's aside says names, a list of the bus names it was live under
Builds: design 47 G A-124, §516, §560

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:17:22 +01:00
mesh-tools 29ec1c3df3 Merge pull request 'The vault's seat gains licence-put, so the licence manager keeps its grants in the vault (issue 1409)' (#6) from feat/39-licence-switch into main 2026-11-12 00:13:01 +00:00
jschoubben b58c4e6b14 G A-117: the seat mesh-recovery's ended and restored events gain why, the hand act's words for a cancel
Builds: design 47 G A-117, §560
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:06:05 +01:00
jschoubben 30389b2ed9 Merge branch 'feat/47-G-recover-host-contracts' into feat/47-G-join8 2026-11-12 00:11:50 +01:00
jschoubben ed8914974f Merge branch 'feat/47-G-recover-runner' into feat/47-G-join8 2026-11-12 00:11:50 +01:00
jschoubben 97b5f9684e Merge branch 'feat/47-G-placement6' into feat/47-G-join8 2026-11-12 00:11:50 +01:00
jschoubben 8f70f1c5ee Merge branch 'feat/47-G-cond6' into feat/47-G-join8 2026-11-12 00:11:50 +01:00
jschoubben 2ae0c67930 G A-92: the node-engine's seat definition gains the state bounds, key <what>.<id>, in its old section
Builds: design 47 G §560, §557, §627, A-77, A-92

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:44:36 +01:00
jschoubben e5b3a89430 A-91: the operator-channel contract's asks value carries the ask's warrant
Builds: design 47 G §700, A-91; the router's record carries its warrant

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:27:37 +01:00
jschoubben 3eba6b8299 V-1/B1: the vault's seat definition gains licence-put
mesh/delivery merged: source.main moved to novox/mesh-contracts@29ec1c3df312
mesh/delivery-group group feat/39-licence-switch merged: every member is merged
mesh/check checking 3eba6b8299e0 on 29ec1c3df312 | novox/mesh-contracts#6 in group feat/39-licence-switch
The licence manager hands the vault a licence's grant and access token through a verb of
the seat mesh-vault; the manifest validator refuses a seat verb the definition does not
serve, so the definition carries it, and the generated Go and TypeScript follow.

Builds: design 39 bus-and-switch §15, B1, B4, B5

Claude-Session: https://claude.ai/code/session_01NcbgfHb9d4T9nq5Q6WqdiJ
2026-11-11 23:07:44 +01:00
jschoubben b0be30c267 Contract: the seat mesh-module-assigner gains the read verb placement
Builds: design 47 G A-62 (§704, §402)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:58:13 +01:00
jschoubben c5cf0126f9 K27 (owner change): the seat mesh-conditions' condition-changed gains the change value owner
Builds: design 47 G §540, §685, A-58 (findings-stated's kinds, §580, and attempt-changed, §541/§665, were built by K13 and K12; seatgen -check clean)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:46:44 +01:00
jschoubben cf5590c759 bus5 K27 (§681): mesh-broker's snapshot-get, snapshot-restore, snapshot-restore-cancel, snapshot-remove and snapshot-restored; the format's verb word chunks
Builds: design 47 G §681, §691, A-44
2026-11-11 22:37:57 +01:00
jschoubben 3658ceb1b6 K26 (D-34): the definition format takes a state's view field, and the assigner's assignments and seat-holders carry it
Builds: design 47 G §699 (§616; ADR 0571 §6)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:36:41 +01:00
jschoubben 78e61c9437 K25 (D-33): the node-engine's first-views answers entries and wants, and the seat gains entry-again
Builds: design 47 G §698 (§683, §422)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:36:34 +01:00
jschoubben b76e52d30a K24 (mesh-recovery's hand verbs): take, restore, retry, aside, discard-aside and expire-points, asker and why on every hand verb, one answer form with cancel
Builds: design 47 G §682, §691 (§516, §554, §566, §656, §681)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:45:56 +01:00
jschoubben 0ccac1d42a K11 (no named callers): no seat definition names a callers, and the verbs that had one keep their class
Every verb takes its class's default (read: invokers, persons, sessions; act and warrant: operator, sessions, invokers); resync and
retire, which named a caller beside the operator or a seat, are of class act.

Builds: design 47 G §610 (§391, §392, §394, §405, §555, §554, §659, §681, §393, §422, §579)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:45:23 +01:00
jschoubben bd038b15a3 K23 (owner and waiting-on of a condition): the seat mesh-conditions' condition and its events carry them
Builds: design 47 G §685 (§451, §540, §678)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:44:03 +01:00
jschoubben b2cc72b4a3 K22 (finding helpers gone): meshconditionsclient keeps what concerns conditions, and heard builds the seat's generated finding
The helpers CheckFinding, FindingFor, FindingWriter, FindingState, FindingVersion, Observation, EncodeFinding, DecodeFinding, Says,
FindingBucket, FindingsBucket, Raise, Clear and CallUnanswered go; mesh-sdk's writer is the one writer and checks. Importers
outside this repository move in G's change (named in the line).

Builds: design 47 G §689 (§461, §503, §640, §660)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:43:22 +01:00
jschoubben 74b6162807 K21a (regenerate, in between): the generated Go and TypeScript follow the definitions so far
The conditions developer reads kinds, attempt-changed, wait-held and wait-ended from it. K21 regenerates last. The client
meshconditionsclient does not build against the findings state's new layout until the question on it is answered.

Builds: design 47 G §341, §523, §580, §541, §499

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:55 +01:00
jschoubben 9243f8c44f K7, K8, K9 (the seat mesh-recovery): its verbs, its events and its place in the module
The seat is defined whole in scope mesh: snapshot-kept, restore-kept, kept-points, restore-aside and cancel (the verbs
of the four forms §516 gives and §566 names; take, restore, retry, aside, discard-aside and expire-points wait for D-19),
events ended, restore-started, restored, set-aside, aside-discarded, point-removed (<module>.<kept>) and expiry-ended,
each kept 90 days and last per subject but expiry-ended, which has no parts and so no last-per-subject. The four acts
that a process answers say by-caller; no verb names callers. The artifacts go-meshrecovery and ts-meshrecovery are in
module.json, the seat in seats/index.json. Generated code waits for K21; the generator reads a verb's by-caller only
once mesh-sdk's reader release (§621) knows it.

Builds: design 47 G §516, §517, §523, §551, §554, §560, §563, §566, §567, §656, §659

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:03 +01:00
jschoubben 9cefd47223 K18 (asker hears refused): Take answers Refused with the router's words for a refused ask
The ask is closed as any ended ask is, then the asker's request ends with why.

Builds: design 47 G §570, §638

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:03 +01:00
jschoubben 6beae382b3 K17 (refused said): the asks record says when an ask ended
decided already names ask, outcome refused, words and at; the record gains at beside state refused and answer.
Generated code waits for K21.

Builds: design 47 G §570, §638

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:03 +01:00
jschoubben a16cf80bd6 K19 (caps in list): mesh-broker's list answers the sum of the caps and the limits
Builds: design 47 G §661, §547

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:03 +01:00
jschoubben 86a5dcc93a K20 (adapter goes): meshconditionsclient/findings is deleted
mesh-sdk's writer is the one place a finding is written; seatgen -check is clean for health-and-repair but for the
generated code K21 writes.

Builds: design 47 G §461, §503

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:03 +01:00
jschoubben 68b0c97079 K15 (findings state): the state findings is keyed <scope>.<id>.<kind> and holds the Finding body
Builds: design 47 G §660, §461, §437, §439

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:03 +01:00
jschoubben 22911c3644 K12 (healers attempts): mesh-healers says attempt-changed, keyed by condition and attempt
attempt-changed.<condition>.<attempt>, kept last per subject, 7 days and 16 MiB, its body the attempt's value whole with
until, or removed. Generated code waits for K21.

Builds: design 47 G §541, §665

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:31:03 +01:00
jschoubben a5cf2c5df1 K4, K5 (node-engine waits): the seat says wait-held and wait-ended, and the have carries its wait
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
2026-11-11 20:31:03 +01:00
jschoubben 7d730a4a75 K6 (one capabilities event): the node-engine seat says manifest-reads-changed alone
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
2026-11-11 20:26:26 +01:00
jschoubben c65628de23 K1b (format): a verb may say by-caller
Builds: design 47 G §554, §621, §656

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:25:41 +01:00
jschoubben f4d0d58619 K14 (owner forms): a finding's owner and waiting-on are one of three forms
owner and waiting-on carry the pattern of the three forms (session who@node, a seat's name, forge:<account>) in the layout
and the state value, and the fixtures read two forms. mesh-sdk's writer is what refuses another. Generated code waits for K21.

Builds: design 47 G §678, §540, §451

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:24:46 +01:00
jschoubben a090a447d3 K16 (notify every channel): notify may ask a message sent on every channel
operator-channel's notify takes every-channel, which the router sends on every channel's send, as a break-glass
act is announced; the teller tells widens, recovery-merged and forge-made through it. A fixture reads the input.
Generated code waits for K21.

Builds: design 47 G §514

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 15:56:39 +01:00
jschoubben b3526b762c K13 (stated kinds): a findings statement names the kinds it states
FindingsStated gains kinds, the finding kinds the stating bundle owns; a statement deletes only keys of those kinds
and one with none covers every kind, as before. A body of bodies yields its type alone, so no fixture reads it here:
mesh-sdk's writer is what reads and tests it. Generated code waits for K21.

Builds: design 47 G §580

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 15:55:58 +01:00
jschoubben 24d58f0786 K10 (backup items): node-backup says when each item starts and ends
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
2026-11-11 15:54:17 +01:00
jschoubben 5e8dce621b K3 (running healthy): running says the health of the build that runs
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
2026-11-11 15:51:53 +01:00
jschoubben 3ccc3cc3cb K2 (node-engine verbs): the seat is claimed as one module, and its first views are seat verbs
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
2026-11-11 15:50:06 +01:00
jschoubben 37a906ed4e K1 (format): an accepted kind names its stream, and a verb naming no class is a read
The format's accepted kind gains stream (check or delivery), so the build seats' step on both streams and run on
check validate against it; the class description says a verb that names no class takes read, on main or added in
G, and that nothing refuses it.

Builds: design 47 G §455, §456

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 15:47:44 +01:00
jschoubben 2f680c661e Take out C7: node-backup's aside, discard-aside, ended and restored, and the kept, form and fingerprint arguments
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
2026-11-11 14:40:11 +01:00
jschoubben a7ab33028f Merge origin/main (#5): mesh-broker's Binding is the wire form; restore-kept and snapshot-kept taken out, the binding names its objects
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
2026-11-11 14:40:11 +01:00
jschoubben 9068aac406 C14 (regenerate): mesh-conditions' finding body types, no hand-kept tsconfig.json, the watchdogs client's artifact
Regenerated by seatgen at mesh-catalog b5aebbbe (bodies types, design 47 G section 452, 454); the eight hand-kept
tsconfig.json files are deleted (the generator writes none, section 341); health-and-repair/module.json names the
artifact go-meshwatchdogsclient its client check asks for.

Builds: design 47 G §439, §452, §454, §341
2026-11-11 11:33:06 +01:00
mesh-tools 5fd0bf86f1 Merge pull request 'Registry recovery: mesh-broker's list, show and orphans answer each binding (issue 1966)' (#5) from fix/1966-bindings-first-view into main 2026-11-11 10:32:31 +00:00
jschoubben 0167b24b95 mesh-broker's fixtures take a keeper ledger plan's binding with a type and an index, so types survive the round trip
mesh/delivery-group group fix/1966-bindings-first-view merged: every member is merged
mesh/delivery merged: source.main moved to novox/mesh-contracts@5fd0bf86f120
mesh/check checking 0167b24b9564 on 5fd0bf86f120 | novox/mesh-contracts#5 in group fix/1966-bindings-first-view
Builds: design 25 bindings-first-view §2

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:54:37 +01:00
jschoubben 5f7610f521 C5 (answer): the node-engine's verbs name their class
hand-over and access-act are warrants, compose an act, the other six without callers reads.

Builds: design 47 G §391, §393, §447

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:45:58 +01:00
jschoubben e529c372d0 C14: the generated Go and TypeScript of every seat follow the definitions
Written by seatgen at c62650e4 (GEN3) with mesh-sdk b19fc7fa (reader release): the seat mesh-grants new,
every TypeScript contract as index.js with index.d.ts, events with subject and stream. mesh-watchdogs gains
its family, which a definition with events needs. Written with the reader as it is: the field needs-approval
(node-login-shell) and the section bodies (mesh-conditions) are unknown to it, so they were laid aside for
the run; nothing generated carries either.

Builds: design 47 G §339, §341, §261, §389

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:45:30 +01:00