Commit Graph
363 Commits
Author SHA1 Message Date
jschoubben 0b0f879e86 E-4: a misspelt event name is refused, not waited on for ever (issue 1966)
Before it subscribes, mesh_wait checks each name's emitter against the catalog
half the tool runner holds (its seats' definitions and its modules' entries),
refusing one neither knows and naming the half and its revisions; a known
emitter's undeclared event is waited on and its timed-out answer says so; while
the half is not yet read the answer says the names were unchecked. The first
views answer the halves by branch for it.

Builds: design 34 every-event §14, §19 (rows of the table of refusals)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 05:11:52 +01:00
jschoubben 662ab2a3b1 E-3: mesh_wait takes any event name (issue 1966)
waitAnswer no longer reads the membership: each name becomes its subjects
through buscompose.EventSubjects, optionally narrowed by from (seat, module or
stream), at most 16 names, a subject once; the heard event is named by
buscompose.EventName with its namespace and its own time, and a decided event
says the operator's answer is read only with claude_code_answer. WaitIssued and
Membership.Waits go; the refusals are one table.

Builds: design 34 every-event §13, §15, §17, §19, §26

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 05:06:36 +01:00
jschoubben cb47de8517 E-2: a heard event keeps its own time, and a refused wait is never a hot loop (issue 1966)
HearFirst reads the event's x-time as Published, notes a subscription the bus
refuses while the others go on waiting, and answers a wait refused whole only
after its timeout, in words naming the grants part's grant of every event
subject; mesh_wait lists the refused subjects in its answer.

Builds: design 34 every-event §12, §16, §18, §19 (bus/wait_test.go)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 05:03:13 +01:00
jschoubben 3f89c96d20 E-1: the tool runner's manifest names no waits and keeps its approvals (issue 1966)
module.json drops waits and its five families, uses operator-channel for the
asks of marked waits, and keeps the per-machine state approvals (48 hours) in
its old state section; the manifest test holds each change.

Builds: design 34 every-event §11, §19 (the manifest test); design 46 7-approval-mark §7, §13 (manifest entry)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 05:00:03 +01:00
jschoubben 5bf7a4b656 Fix 9.4d: the tool runner's catalog half uses the follower's Ready and lists the entries by fingerprint in its first views
Builds: design 47 G A-103, §614

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:12:29 +01:00
jschoubben 22bff8198c Merge branch 'feat/47-G-recover-readers' into feat/47-G-join8 2026-11-12 00:14:30 +01:00
jschoubben 3501164f4b W16.6: the tool runner reads which modules exist and their manifests from the catalog half through meshcatalogclient's branch follower on its own consumer (milestone 47/G)
firstview adopts the shared branch follower over a wiring of its own consumer (views held with the assigner's, findings through its
held writer, events routed to each adopted view); the console's Source gives Modules from the catalog entries, the manifest an entry
carries whole; the indexer's modules and manifests first views and their consumes are removed, the registrations and the gate's
source-moved are consumed.

Builds: design 47 G §196, §594, §614; lead answers A-5, A-27, A-103

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:40:23 +01:00
jschoubben 4a614cae26 G sessions: the runner answers mesh/capabilities and drops a bundle's sessions when its channel closes
Builds: design 47 G §576, §518, §622, A-49
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:41:24 +01:00
jschoubben 99c36d8ddf G sessions: the runner serves a bundle's put and get sessions and states put-sessions
A value over buscalls.ChunkBytes is put by mesh/objects.put-chunk (written into the module's store as each chunk is
taken, sealed on the last, dropped at its bound or a disorder) and got by mesh/objects.get-chunk after a chunked answer,
for a state's object and a sent object alike; the 8 MiB BundleObjectMost cap is gone with the stateobjects constant.

Builds: design 47 G §518, §345, §457, §490, §620, §622, A-21, A-25
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:39:04 +01:00
jschoubben 4bfae38a73 G findings: the runner's first views write their unanswered finding through one held writer over its own connection
bus.Conn gains its one JetStream accessor; firstview keeps the runner's own consumer and its four followers and writes and clears each follower's first-view-unanswered finding with the contract's Finding.

Builds: design 47 G A-27, A-28, A-16, A-29
2026-11-11 22:23:44 +01:00
jschoubben 1176df0cd2 T-8: the 8 MiB cap holds on a bundle's runtime call only; the console reads a larger sent object whole (af0ba22, taken)
Builds: design 47 G §69, §62, §407

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 14:47:35 +01:00
jschoubben 60c432838b T-8: the console reads an answer sent as a reference for the person asking (5bcf68d, taken)
Builds: design 47 G §69 (the console reads whole), §62, §407

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 14:41:05 +01:00
jschoubben 78e5de538b T-6: the tool runner reads a sent object by its reference, under the bus state capability
mesh/objects.sent-get reads a sender's sent store only; refused: a state's objects, a reference that is none, an object over a bundle's channel.

Builds: design 47 G §347, §59, §462

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:06:40 +01:00
jschoubben a5b8ae1a72 T-1: the tool runner's manifest says 0.1, the finding stream and the keeper's findings-asked, and follows catalog-revision
Builds: design 47 G §368, §387, §196 (consumes catalog-revision; views.modules goes with T-2's first view)
Held: waits (§426) goes with the every-event part, which removes the code reading it.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:04:32 +01:00
mesh-tools 447a8d0359 Merge pull request 'The tool runner settles a seat ask with a delay and states seat-settle-delay (issue 1748; group fix/1748-transport-retry)' (#68) from fix/1748-transport-retry into main 2026-11-09 22:58:39 +00:00
jschoubben 62dce9fec7 T1: the seat settle applies a delayed nak with the bus's own delay (ADR 0664 §1, issue 1748)
mesh/delivery merged: source.main moved to novox/mesh-tools@447a8d035935
mesh/delivery-group group fix/1748-transport-retry merged: every member is merged
mesh/check checking 62dce9fec7a4 on 447a8d035935 | novox/mesh-tools#68 in group fix/1748-transport-retry
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-09 22:53:21 +01:00
jschoubben 7e4f86253e T2: the tool runner states the capability seat-settle-delay (ADR 0664 §5, issue 1748)
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-09 22:53:21 +01:00
mesh-tools 20979201eb Merge pull request 'The tool runner ends and restarts a bundle that writes an over-long line, and says an unanswered call and a refused answer (issue 1966 S8)' (#67) from fix/1966-s8-runner-frozen into main 2026-11-09 17:55:17 +00:00
jschoubben 4ee3cc0c7f Runner: the line cap is read once in Start, not per line from a goroutine (issue 1966, review round 3)
mesh/delivery merged: source.main moved to novox/mesh-tools@20979201eb56
mesh/check being carried to 4ee3cc0c7f4c on 20979201eb56 | from 2ea4f019e594
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 13:59:13 +01:00
jschoubben a25c2b4d89 Launch test: the restart is heard as a second start line in the log, not polled from a file (issue 1966, review round 2)
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 13:59:13 +01:00
jschoubben 312e29478e Tool runner: the cap's reason fails the call; the test proves the ending; the refused-answer limit keys on the caller's prefix and forgets old entries (issue 1966, review round 1)
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 13:59:13 +01:00
jschoubben f3a9cc276e Tool runner: a bundle's over-long line ends the bundle and is said; an unanswered call and a refused answer are logged (issue 1966)
The reader of a bundle's stdout stopped at a line over 16 MiB without a word and the bundle's next write
blocked for good: every call of the module then timed out, unheard of. Now the line is said, the bundle ended
and started again by the exit path. A call the bundle does not answer in time is logged with tool and caller,
and a refused publish of an answer (to a caller's inbox) is said once per subject per minute.

Quick fix: only the bundle that met it (mesh-hand-acts' answer is cut by its own module). Thorough fix, chosen:
the runner guards every bundle, so the kind (a silent freeze of a module runtime) cannot recur for any module.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 13:59:13 +01:00
mesh-tools 2ea4f019e5 Merge pull request 'Issue a key-value entry asked in requires as a state, by its local name (issue 1966, recovery)' (#66) from fix/1966-requires-state into main 2026-11-09 12:56:37 +00:00
jschoubben 8052fd14f4 Issue a key-value entry asked in requires as a state, by its local name
mesh/delivery merged: source.main moved to novox/mesh-tools@2ea4f019e594
mesh/delivery-group group fix/1966-requires-state merged: every member is merged
mesh/check checking 8052fd14f4fd on 2ea4f019e594 | novox/mesh-tools#66 in group fix/1966-requires-state
A bundle's state call on a key-value entry its module asks for in requires
(ADR 0595 §1) was refused "keeps and reads no state called", because the
tool runner read the old state list alone (issue 1966). It now reads mesh-sdk's
one rule, membership.StateIssued.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 12:39:04 +01:00
mesh-tools 9f61975c50 Merge pull request 'Gate record of mesh-tools' forge-made merges (issue 1966, recovery)' (#65) from fix/1966-forge-made-merge into main 2026-11-09 08:45:59 +00:00
jschoubben b82054d930 Record this repository's forge-made merges in the delivery gate, so the indexer takes them in (issue 1966, recovery)
mesh/delivery merged: source.main moved to novox/mesh-tools@9f61975c50a0
mesh/delivery-group group fix/1966-forge-made-merge merged: every member is merged
mesh/check checking b82054d9300a on 9f61975c50a0 | novox/mesh-tools#65 in group fix/1966-forge-made-merge
Merges made on the forge directly since 2026-11-09 07:04 UTC have no gate merge record,
and the indexer holds them; an empty merge through the gate covers this repository's head.
Second of its kind: the group's mesh-delivery member removes the need (the forge bridge
reads a forge-made merge's pull request from the forge).

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 09:17:01 +01:00
mesh-tools 164547645a Merge pull request 'The runtime answers a page of a kept state in one request, bounded by time (issue 1966, recovery)' (#64) from fix/1966-views-page-time into main 2026-11-09 08:13:13 +00:00
jschoubben 2135fed6cf A node's bucket opens under its own deadline, so a per-node page is ended by its budget too (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-tools@164547645aed
mesh/delivery-group group fix/1966-views-page-time merged: every member is merged
mesh/check checking 2135fed6cf1f on 9f61975c50a0 | novox/mesh-tools#64 in group fix/1966-views-page-time
Review round 3: the open on the first key of a node ran on the listing's context,
whose deadline is spent before the page's budget.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 09:04:39 +01:00
jschoubben aba2c11a27 A page's gets each have their own deadline, so its budget always ends it; a node's bucket is bound once (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 09:02:34 +01:00
jschoubben 568140f667 A page reads the bucket bound once and stops at its time budget, one value at least; an unknown verb is told by its code (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 09:00:20 +01:00
jschoubben 1a9190774d The runtime answers a bulk read of kept state: the values after a key in one request (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 08:51:19 +01:00
mesh-tools 27710ccabd Merge pull request 'The runtime says a bundle's state or log operation that failed or timed out, with its time (issue 1966, recovery)' (#63) from fix/1966-hand-acts-answers into main 2026-11-09 07:03:42 +00:00
jschoubben 634c77f90f The runtime says no lost compare-and-set as a failed operation, and its test waits on a channel, never a sleep (review round 1)
mesh/delivery merged: source.main moved to novox/mesh-tools@27710ccabd53
mesh/check checking 634c77f90f98 on 27710ccabd53
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 02:21:55 +01:00
jschoubben 1fc006b7dd The runtime says a state or log operation of a bundle that failed or timed out, with its time (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 02:17:35 +01:00
mesh-tools f4b4fb908f Merge pull request 'The console passes arguments to a seat verb whose definition it does not hold (issue 1966, recovery)' (#62) from fix/1966-seat-reads-bootstrap into main 2026-11-08 03:45:19 +00:00
jschoubben 7572627aff The console passes a seat verb's arguments on when it holds no definition of the seat (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-tools@f4b4fb908f37
mesh/delivery-group group fix/1966-seat-reads-bootstrap merged: every member is merged
mesh/check failed (2): mesh-delivery-checker: no published of the tagged version of go-sdk of mesh-delivery…; and 1 more | 7572627affde on f4b4fb908f37
A seat verb whose holder announced an empty schema was judged as taking
nothing: shanks' tool runner refused "mesh-module-assigner.propose takes no
argument changes, why — it takes nothing". The console now judges such a
call by the verb's input in the seat's definition this runner holds; where
it holds none (it waits for the seat list, holding only the bootstrapped
definitions), the arguments go to the holder, which judges its own input,
and mesh_describe says the definition is not held instead of showing an
empty schema.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 02:45:30 +01:00
mesh-tools d184862b1a Merge pull request 'Registry milestone: mesh-tools (issue 1966)' (#61) from feat/registry-milestone into main 2026-11-07 14:19:59 +00:00
jschoubben 6c05e42626 gofmt the files the group try listed
mesh/delivery merged: source.main moved to novox/mesh-tools@d184862b1ad3
mesh/delivery-group group feat/registry-milestone merged: every member is merged
mesh/check checking 6c05e4262641 on d184862b1ad3 | novox/mesh-tools#61 in group feat/registry-milestone
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-06 01:38:43 +01:00
jschoubben 91a4f1b0ad Take tidy's go.mod whole: mesh requirements at the zero version only, unused ones dropped
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-06 00:52:18 +01:00
jschoubben b4affb3efd Complete go.mod and go.sum for the externals each module builds with
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 fb31cc4e99 The console reads the assigner's state assignments and imports the contracts' new paths (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 22:02:06 +01:00
jschoubben bd555e6014 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 c3754e48c8 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 a00c780352 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 5bbe669cfb Merge b6/registry into the registry milestone's join: the console reads through the assigner's client, with the seat name mesh-module-assigner (issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:39:17 +01:00
jschoubben c55b1bcf38 First views: the integration test reads the views families of the manifest's consumes, not the seat list's events (T-3; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:37:17 +01:00
jschoubben 6965119bce Tool runner: the grants part's membership bucket and key are membership's, which the SDK keeps (ADR 0635 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:36:18 +01:00
jschoubben 387f547346 Tool runner: the console, its test bed and the provider read placement, the catalogue's keys and the provisions through the seats' clients, not go/delivery, go/provider or go/provisions (T-1, ADR 0634 §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-05 15:31:22 +01:00
jschoubben fce9189579 First views: a finding's times are times, as the conditions client types them (issue 1966) 2026-11-05 15:26:49 +01:00
jschoubben a2402c4873 Merge branch 'b6/registry' into feat/registry-milestone 2026-11-05 14:54:25 +01:00