Commit Graph
3551 Commits
Author SHA1 Message Date
jschoubben 572a2b3a4b mesh-recovery: the seat's verbs, answered by the process with the proved caller
Builds: design 47 G §516, §554, §656, §682, §691, A-107, A-115
Each acting verb answers one of accepted, busy or error; arguments are read afresh per call and refused when unknown (local-name, from, aside-only, discard-aside) or without why; restore takes exactly one of snapshot and request (request is refused until built); the hand-act log names the proved account and the asker.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:18:43 +01:00
jschoubben 2dd02da76e mesh-recovery: aside sets the live data aside from the placement's entry, names as a list
Builds: design 47 G §516, §554, §566, A-123, A-124
aside takes the bus names from the catalog entry of the fingerprint the node-engine's placement runs, takes the aside whole and checked, removes the live objects, says set-aside; restore-aside puts it back.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:17:41 +01:00
jschoubben 0ebabf7174 mesh-recovery: restore, set aside, put an aside back, cancel, retry, kept-points, the repair at a start
Builds: design 47 G §516, §554, §560, §562, §563, §564, §566, §567, §682, §691, A-117
restore says restore-started, waits for the dump, finds the point (or has the backup holder bring it back), checks its digests against the bus, sets the live data aside whole and checked, removes it, restores the point and its consumers, and puts the aside back when a step after the removal fails; cancel ends a waiting act failed/cancelled with the hand act's words; at a start it clears temporary points, puts an aside back and ends a cut-off act failed/stopped.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:16:29 +01:00
jschoubben 7d755c8f08 mesh-recovery: take a restore point, list the points, expire them, one act at a time
Builds: design 47 G §516, §551, §554, §560, §564, §567, §517
Accept writes the hand-act log first, answers accepted/busy/error at once and writes the act before it answers; take writes each stream under a temporary name, its digests on the bus before ended; the cap is refused before anything is written; expiry never removes the newest point.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:13:58 +01:00
jschoubben b43c57f43b mesh-recovery: the module, its manifest and its claim of the seat mesh-recovery
Builds: design 47 G §554, §656, §657, §633, §564, §557, A-107, A-115
The seat claimed once for the mesh with every verb of its definition; a process answering them (serves beside bus), a tools bundle, the data item points, the state digests (§567), the findings of §561, the four settings.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:13:13 +01:00
jschoubben 7b16e195ee Join 8: mesh-config and mesh-provisioner keep no builder package (recover-readers), version 0.1 (judge5)
Builds: design 47 G join of rounds 4-8
2026-11-12 00:28:21 +01:00
jschoubben 4b749286bd Merge branch 'feat/47-G-recover-readers' into feat/47-G-join8
# Conflicts:
#	modules/mesh-config/module.json
#	modules/mesh-provisioner/module.json
#	modules/mesh-self-check/module.json
2026-11-12 00:14:26 +01:00
jschoubben ebaa4c9946 Merge branch 'feat/47-G-recover-small' into feat/47-G-join8 2026-11-12 00:14:17 +01:00
jschoubben 231975bce6 Merge branch 'feat/47-G-buildfix6' into feat/47-G-join8 2026-11-12 00:14:17 +01:00
jschoubben 35fb415f7b Merge branch 'feat/47-G-issues6' into feat/47-G-join8 2026-11-12 00:14:17 +01:00
jschoubben 14d1a919cc Merge branch 'feat/47-G-judge5' into feat/47-G-join8 2026-11-12 00:14:17 +01:00
jschoubben 20e92dacd5 Merge branch 'feat/47-G-cond6' into feat/47-G-join8 2026-11-12 00:14:16 +01:00
jschoubben 605c583ab4 bus5 B6 (A-109): snapshot-get's chunks go on a core publish to any caller; no grant check
grantedBy is dropped: any caller of snapshot-get gets the chunks, a protected snapshot never.
The chunks are a transfer on the core bus, published with a core publish and kept on no stream.

Builds: design 47 G A-109 (G-20-lead-answers), §681

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:57:09 +01:00
jschoubben 44cb7ad449 bus5 B5 (A-107): the keeper's process answers mesh-broker's snapshot verbs itself through AnswerSeat
snapshot-get, snapshot-restore, snapshot-restore-cancel and snapshot-remove are answered by
the keeper's process with the proved caller; it publishes snapshot-get's chunks and hears
their acks on its own subscription, and acts at once with no hand-over through requests
(the record of a running restore is written before it runs). The tools bundle keeps its
tools, nats_snapshots among them. The protected refusal and the whole test's case (send,
restore in place, removal) stay.

Builds: design 47 G A-107 (G-20-lead-answers), §681

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:56:06 +01:00
jschoubben e0428bd874 W16.2: mesh-config's whole test says the catalog-revision event on the branch's part, as the bus says it
Builds: design 47 G §532, §614; lead answer A-101

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:34:51 +01:00
jschoubben da5bbe0a17 W16.2: mesh-config reads which modules exist, their manifests and a build's manifest from the catalog half through meshcatalogclient's branch follower (milestone 47/G)
Builds: design 47 G §196, §594, §614; lead answers A-5, A-15

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:34:28 +01:00
jschoubben 7278e509f4 W16.5: claude-code reads which modules exist and their manifests from the catalog half through meshcatalogclient's branch follower (milestone 47/G)
Builds: design 47 G §196, §594, §614; lead answers A-5, A-15

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:25:52 +01:00
jschoubben 0098960b5a W16.3: mesh-provisioner reads modules and manifests from the catalog half through meshcatalogclient's branch follower (milestone 47/G)
Builds: design 47 G §196, §594, §614; lead answers A-5, A-15

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:24:35 +01:00
jschoubben c41a84ee95 A-C5: mesh-build-node builds against the latest published SDK, the toolchain pins none
Recovered from cfee5f2d (feat/47-G-buildmods).
Builds: design 47 G §571 (the build writes a mesh package's lock entry from the latest published version), A-56

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:23:44 +01:00
jschoubben ff07c3a668 K-A2: mesh-config asks every proposal; the router holds the oldest back
Recovered from 71370afc (feat/47-G-asks).
Builds: design 47 G §40; design 46 §6 Limits, batching, history

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:23:44 +01:00
jschoubben 7df879b367 K-A1: claude-code asks every question and proposal; the router holds the oldest back, the slot keys go
Recovered from 90d70b83 (feat/47-G-asks).
Builds: design 47 G §40; design 46 §6 Limits, batching, history (no ask hidden or refused for its asker's count)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:23:44 +01:00
jschoubben 095e23ecda W16.4: mesh-self-check reads which modules exist and their manifests from the catalog half through meshcatalogclient's branch follower (milestone 47/G)
Builds: design 47 G §196, §594, §614; lead answers A-5, A-15

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:21:31 +01:00
jschoubben 8f3c810fc3 §600: mesh-build-go's ask workers filter both forms of the accept subject
Builds: design 47 G §600, §483

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:05:30 +01:00
jschoubben c854373840 ISSUES: mesh-issues reads git.pull, git.contains and the runner's list and show, not mesh-delivery.checks and the forge's tools
Pull request facts come from seat git's pull, ancestry from contains, the review time from the runner's review step,
and get shows one pipeline row per module (no run where the runner's list answers none).

Builds: design 47 G §654, A-75

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:05:28 +01:00
jschoubben 49bace0073 A-72: no @novox/mesh-* package counts as beyond the SDK in mesh-build-node
Builds: design 47 G G-20 A-72

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:02:50 +01:00
jschoubben e4c5108306 JUDGE: the module tests that read a manifest follow the manifests' new forms (version 0.1, findings in requires, the foundation's old sections)
sudo and localization expect version 0.1; distribution and gitea read the old objects and state sections; mesh-build-go, mesh-knowledge, mesh-provisioner and mesh-self-check expect the findings asked in requires and the keeper's ask consumed. Each assertion failed against the changed manifest before it was changed.

Builds: design 47 G §368, §529, §584, A-30

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 23:00:47 +01:00
jschoubben a9dfe77b1d bus5 B4 (A-64): snapshots-filling has scope module and id nats.snapshots
Builds: design 47 G §681, A-64
2026-11-11 22:56:49 +01:00
jschoubben caa350f350 bus5 B4 (§529): nats go.mod requires the meshconditions contract it imports (requiredmodules check)
Builds: design 47 G §529, A-30
2026-11-11 22:55:28 +01:00
jschoubben 673b9d075a HEAL2 (the healers' findings in requires): the manifest test holds the state and the stream asked by their templates
The healers' manifest already asks findings (template state) and finding-events (template events, the three finding events,
7 days, 16 MiB) and declares no old stream or findings state, and their writer reaches the state by its local name (built in
76be864b and the join); this adds the test that holds it.

Builds: design 47 G §529, §577, A-30

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:54:43 +01:00
jschoubben 47aaee122c bus5 B3 (§681, A-44, A-45, A-59): the bus module serves snapshot-get, snapshot-restore, snapshot-restore-cancel and snapshot-remove through its tools bundle, sends the chunks, hands the work to the keeper through requests; nats_snapshots; the whole test covers send, restore in place and removal
Builds: design 47 G §681, ADR 0675, lead answers A-44, A-45, A-59
2026-11-11 22:54:35 +01:00
jschoubben 22b50c88a9 HEAL1 (attempt-changed): the healers say each attempt they write, and every attempt kept at their start
The seat mesh-healers' attempt-changed carries the attempt whole with until (a week from its write), on the subject keyed by
the condition and the attempt, each escaped as a key's name is. The event is the seat definition's; the manifest's emits stays
empty as for healer-acted.

Builds: design 47 G §541, §665

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:54:18 +01:00
jschoubben 265d3b83b2 COND8 (haves and attempts as events): the keeper hears what a node runs and the healers' attempts, and reads neither state
The node-engine's composed, running, wait-held and wait-ended make the have the hold compares with the wants; the healers'
attempt-changed makes an attempt, dropped at its until on the keeper's own clock (a bound with its own time to live) or when
removed. The manifest's reads are gone and its consumes gain the five events.

Builds: design 47 G §541, §665, §556, §499, §434

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:53:09 +01:00
jschoubben 72ccb75c1b COND10 (stated kinds, both subject forms): the keeper clears only conditions of the kinds a statement covers
A findings-stated carrying kinds sets the keeper's view of that observer, node and set of kinds, and clears only the
conditions of those kinds it does not name; no kinds covers every kind. The finding events are taken from either form of the
part's finding stream, the observer and node read from the subject.

Builds: design 47 G §580, §529 (A-30), §383, §384

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:50:17 +01:00
jschoubben 790b5aac7d bus5 B4 (§681, A-29, A-40, §529): the bus module writes snapshots-filling through mesh-sdk's held writer over its state findings; nats-findings declared in the foundation form
Builds: design 47 G §681, §529, A-17, A-29, A-30, A-40
2026-11-11 22:49:07 +01:00
jschoubben b15c511528 COND7 (the condition's owner): a condition carries the finding's owner and waiting-on; a failed head is the operator's two hours after its since
The keeper copies owner and waiting-on from the finding at raising (and into a condition kept from before G at its next
change), hands a pipeline-failed to operator-channel after the setting owner-handover-seconds (default two hours, timed
from the finding's since as a bound with its own time to live), says each change as the change owner, and the tool
conditions_owner sets an owner now, written in the hand-act log.

Builds: design 47 G §540, §685, §678, §557, A-58 (seed-waits: the indexer sets the finding's waiting-on; no kind rule here)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:48:54 +01:00
jschoubben d4e29a07b2 LOCKS (A-56): the locks check counts the mesh's own @novox/mesh-* packages as it counts the SDK
A module naming only the mesh's packages beyond typescript and the types needs no lock (gitea names the contracts' git and mesh-catalog packages); a row in the first test fails without the change, as does the catalogue's own run.

Builds: design 47 G A-56, ADR 0469 §5

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:46:08 +01:00
jschoubben d627400cf1 bus5 B2 (§681): the keeper restores a snapshot in place (verify, names live, 60-minute bound, cancel, partial stream removed, snapshot-restored); requests keeps records 91 days (A-53)
Builds: design 47 G §681, ADR 0675, lead answers A-45, A-53
2026-11-11 22:45:56 +01:00
jschoubben 41567adee0 JUDGE (§584, A-54): distribution, a foundation part, keeps its bus state in its old sections
incoming goes to the old objects section; transfers, idle (key-ttl), holds, windows, mirrors and findings to the old state section; the stream events becomes the old stream distribution-events (A-54, EVENTS being the mesh's own stream).

Builds: design 47 G §584, A-54, ADR 0619 §2

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:45:40 +01:00
jschoubben f5ce980808 GATE (A-42, §592): the gate's approval-carried-open has scope delivery
FindingScope is delivery, the scope the mesh already uses for the delivery's findings; the test names the literal (it failed with gate).

Builds: design 47 G §592, A-42

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:45:09 +01:00
jschoubben 0bd978f4ee JUDGE (ADR 0348 §5, §557): the keeper's two settings are marked runtime, and mesh-conditions requires the catalog client it imports
ask-bound-seconds and view-waits-seconds are read by the keeper's own code at its start (settings.go ReadSettings, stdio.Config), so the manifest marks them runtime: true; go.mod requires meshcatalogclient at the zero version, which cmd/mesh-conditions/branches.go imports (the requiredmodules check).

Builds: design 47 G §557

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:44:29 +01:00
jschoubben af978cc559 JUDGE (§584): gitea, a foundation part, keeps its bus state in its old sections
transfers, idle (key-ttl), failed-steps (history 1) go from requires entries to the old state section and incoming to the old objects section, as §584 has the forge module keep every state in its old sections.

Builds: design 47 G §584, ADR 0619 §1

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:44:29 +01:00
jschoubben 6e343831c9 JUDGE (A-30, §529, §387): a part that is no foundation part asks its findings state and its finding-events stream in requires, and consumes findings-asked
claude-code, mesh-build-go, mesh-provisioner and mesh-self-check drop their old state findings and stream <module>-findings for the requires entries findings (state) and finding-events (events: the three finding events, 7 days, 16 MiB); mesh-knowledge gains finding-events and the consume. The manifest forms follow mesh-watcher's. The judge refused each for the old form (§529, §577) or for the missing stream or consume (§387).

Builds: design 47 G §387, §529, §577, A-30

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:44:28 +01:00
jschoubben 5b4b201558 bus5 B1 (§681): the keeper records its snapshot (path, size, digest, protected) before it touches live data, holds it to snapshots-cap, removes it after snapshot-keep-days, tells snapshots-filling
Builds: design 47 G §681, ADR 0675
2026-11-11 22:41:36 +01:00
jschoubben f509c61b50 VERSION (A-46, §368, §411): every manifest of the catalog says its version MAJOR.MINOR
mesh-delivery-builder.builder_versions answered no numbered version for any name asked (mesh-sdk go and ts, mesh-host, node-tools, mesh-delivery-builder, mesh-conditions), so every module takes 0.1, the floor §368 gives a module with none published: all 144 manifests (141 from "1", distribution, mesh-provisioner and mesh-provisioner-client from "2", which carries nothing over, §583).

Builds: design 47 G §368, §411, §583, A-46

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:38:45 +01:00
jschoubben 469763547c Merge branch 'feat/47-G-findings4b' into feat/47-G-dev4-join 2026-11-11 22:25:53 +01:00
jschoubben 9aae6244d5 Merge branch 'feat/47-G-findings4' into feat/47-G-dev4-join 2026-11-11 22:25:53 +01:00
jschoubben 6a612c58cb G findings: mesh-config, gitea and distribution declare their finding events in the foundation form, the stream <module>-findings in streams
Builds: design 47 G A-30, §529, §577
2026-11-11 22:24:58 +01:00
jschoubben d03ffa8038 G findings: mesh-config's and mesh-vault's owner views are followed by the reader (Follow), not adopted: they hear the owner's own views event
Adopt subscribes a seat's event with further parts (<seat>.<event>.>), which never matches the plain views event of an owner; the reader's Follow hears it and asks again on a gap. Also the distribution whole test counts its own two events by subject, as the writer's are said beside them.

Builds: design 47 G A-28, A-26, A-30
2026-11-11 22:22:24 +01:00
jschoubben f06dd01bfe GATE A-39, A-29, A-37, A-30, A-40, §592: the gate's findings go through one held writer over its own findings state, approval-carried-open is written for each approval carried and cleared by the seat git's pull-merged and pull-closed
Builds: design 47 G A-39, A-29, A-37, A-30, A-17, A-40, §542, §592

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:19:53 +01:00
jschoubben c81915b039 G findings: distribution-tools and package-registry make the held writer at once and start it after Serve, as it seeds at Start
Builds: design 47 G A-40, A-32
2026-11-11 22:19:22 +01:00