jschoubben
877b09e92b
checker_status names the builds a running check waits on (ADR 0603 §10)
...
Worked out from the builder's builds state at each read, stored nowhere: of each running check, the candidate's builds
that are neither done nor failed.
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:51:09 +01:00
jschoubben
453cdfa607
The check waits on the builder's builds of its candidate before it composes, so it composes with them (ADR 0603 §10)
...
The builder already builds every candidate fingerprint into its own key. The check now watches exactly those keys on the
bus and composes once each is done or failed, within the new setting build-wait-bound (1800 s). A failed build fails the
check, naming it; a build not ended within the bound is named and the check composes without it. A module built by a
build module the change alters (mesh-build-go or mesh-build-node), one standing on a base the change alters, and one the
trunk holds no record of are not waited on, and the composition's warnings name each with why.
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:51:09 +01:00
jschoubben
8f7945a109
Merge round 2 finding C and the check's true words: the new rows fold into existing tests, the check names what it composes from manifests (ADR 0603 §10; test budget)
...
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:36:49 +01:00
jschoubben
2773885600
Merge round 2 findings A and B: only the newest manifest's provisions hold a want, and a wait keeps its first start while it stands (ADR 0603 §8, §9)
...
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:36:49 +01:00
jschoubben
45bd63427f
A wait the watchman mirrors keeps its earliest start while the same mark stands, so a key written again with new words does not start the bound again (ADR 0603 §8)
2026-11-03 17:26:45 +01:00
jschoubben
effa12c4b4
Fold the three new tests into existing ones (test budget); the base note says what the check does
...
The check builds no artifacts and no changed base before its dependents; build_change.go now says only that they are composed from their manifests.
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:26:31 +01:00
jschoubben
9da14440e8
The assigner waits only on the keys of provisions the newest manifest still requires: an older edge's asked or retiring key holds nothing (ADR 0603 §9)
2026-11-03 17:26:30 +01:00
jschoubben
fd638b99d5
Merge D9, D13b, D15 and review round 1 findings 3 and 4: the indexer runs without its graph state, a package inside a module's directory has its publisher (ADR 0603 §3, §4, §10; ADR 0604 §1)
...
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:21:28 +01:00
jschoubben
5c4d770aa1
The check names the modules built with a changed build module or base; rows for D9 and the assigner's integration test (ADR 0603 §3, §4, §10)
...
D13b: the composition's warnings, and so the check's line, name the changed modules built with the Go build module the change alters and those standing on a changed base. D9: builder and verdict rows. D15: the assigner's integration test gets a source revision changing a provider, its new consumer and a build module.
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:21:07 +01:00
jschoubben
b4855f21c3
Test rows: a missing graph state fails no recompute (review finding 3); a recipe change builds a Go module again (D9)
...
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:21:07 +01:00
jschoubben
1387b10e78
Take a missing graph state as no graph yet and a Publisher's directory as the nearest module above it
...
The indexer's recompute and merge failed on listing a graph bucket not yet on the bus, and a package published from inside a module's directory had no publisher, so the dependents of a build module missed what imports its packages (review findings 3 and 4 of L3).
Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
2026-11-03 17:21:01 +01:00
jschoubben
a1814c6571
Assigner row: the newest source revision's provider edge replaces the older one, and only it is waited on (ADR 0603 §9)
2026-11-03 17:19:05 +01:00
jschoubben
92b4307922
The watchman mirrors a want held by a rule, a provision asked and a build queued behind a package as waits with a bound, and raises a finding past it (ADR 0603 §8)
2026-11-03 17:18:36 +01:00
jschoubben
2c37f48f9d
A source revision is delivered over the nodes present: the view leaves out a node the watchman says is away and names it, and the node counts once it runs its wants (ADR 0603 §7)
2026-11-03 17:16:30 +01:00
jschoubben
4a736858b6
Pin mesh-sdk cf5812101b0b, the group's head of feat/l3b-bus with the module graph taken out
2026-11-03 16:56:37 +01:00
jschoubben
3411b91571
The module graph is mesh-delivery's own: a Go module sdk/ with package graph, used by path by the indexer, the view and the checker, and the seat mesh-catalog's answers built from mesh-sdk's contract types (the operator, 2026-11-03: no graph-related code in mesh-sdk, only contracts; research 081 D11, D13)
2026-11-03 16:56:37 +01:00
jschoubben
0ce16ad773
Pin mesh-sdk 18b3eac47c8e, the group's head of feat/l3b-bus rebased onto main 2341e8e9
2026-11-03 16:46:40 +01:00
jschoubben
875d42fe3e
On B1: the ledger test names its tool runner by its manifest's tool-runner, and ShelfWaiting takes B1's old-section counts (rebase onto main c4470f42)
2026-11-03 16:46:40 +01:00
jschoubben
aacdba44e3
The judge's copy of the mesh-catalog seat is the SDK's entry: four optional verbs, so the old module's claim is not outgrown (ADR 0604 §1; F3)
2026-11-03 16:45:06 +01:00
jschoubben
39b3ce3c73
builder_builds_since names the operator's command nox builds as its reader, not mesh-catalog (ADR 0604)
2026-11-03 16:45:06 +01:00
jschoubben
e1d0c9fe03
A merge that leaves a repository no module never deletes a module another trunk holds, and indexer_take_in takes a repository in (issue 1367)
...
dropRemoved hands the module over from the other trunk, read from the forge at the head the source names, so no wait in memory is needed. indexer_take_in with a repository takes in a head with no module.json as a merge that leaves none, and answers by name for a head with modules.
2026-11-03 16:45:06 +01:00
jschoubben
6bc16d74db
Write and take in a merge that leaves no module.json, so a module-less repository's reach is not held for ever and a removed last module is dropped (issue 1126)
...
The forge bridge wrote no merged message for such a merge, so taken.<repo> never moved
and the view held 'the indexer has not yet taken in <head>' (hq #490-#492). The bridge
now writes it with no trees; the indexer drops every module of the repository on it,
after the same order check as any merged message. The view needed no change: with the
taken key moving it reaches the merge, which its new row proves.
Needs mesh-sdk fix/1126-no-module-reach (a merged message may carry no trees).
2026-11-03 16:45:06 +01:00
jschoubben
9f49bc92ad
The seat mesh-catalog's four verbs answered from the indexer's modules, manifests and graph, with the old catalog's field names (captured answers as fixtures); served once the indexer claims the seat, in the release after L3's (ADR 0604 §1, §2)
2026-11-03 16:45:06 +01:00
jschoubben
4f6e1021c6
view_tiers: a source revision's tiers worked out from the module graph at each call, and per module what it waits on now, its build, each node's want and have and each provision it awaits, the nodes offline named away (ADR 0603 §6)
2026-11-03 16:45:06 +01:00
jschoubben
027c445bae
Pin mesh-sdk 182d8757dba9, the group's head of feat/l3b-bus with the graph's ordering edges (ADR 0603 §1, §6)
2026-11-03 16:45:06 +01:00
jschoubben
7ba2668aa8
The check refuses a change whose module graph has a cycle and names it, worked out from the catalogue as the change leaves it; a cycle the trunk already has among the same modules is said, not the change's failure (ADR 0603 §2)
2026-11-03 16:45:06 +01:00
jschoubben
a901b840a0
Pin mesh-sdk acad60547c84, and the indexer's graph nodes take their bases and provision edges from the contract's GraphEdgesOf (ADR 0603 §2)
2026-11-03 16:45:06 +01:00
jschoubben
f70faed5b6
The indexer keeps the module graph as its state graph: each module's build and provision edges written at every recompute when they change, at most 2000 modules, a module's key deleted once the modules state no longer holds it (ADR 0603 §2)
2026-11-03 16:45:06 +01:00
jschoubben
5ee3b4c15f
Pin mesh-sdk 25b371bc8397, the group's head of feat/l3b-bus with the module graph and the seat mesh-catalog's contract (ADR 0603 §2, ADR 0604 §1)
2026-11-03 16:44:47 +01:00
jschoubben
2f387a3f4c
Pin mesh-sdk e7ce86ff62b5, the group's head of feat/l3b-bus (review round 2)
2026-11-03 16:44:47 +01:00
jschoubben
22aedbe97f
A recompute with no merge writes the fingerprint's source revision as not known, so no release's Approve answers a build it never carried, though the source revision is still that release's (ADR 0601 §1; review round 2)
2026-11-03 16:44:47 +01:00
jschoubben
478f0110e9
Pin mesh-sdk 825483043549, the group's head of feat/l3b-bus (review round 1)
2026-11-03 16:44:47 +01:00
jschoubben
6d24922172
The node-engine's witness ping is granted by the tool runner's name its manifest gives, any service's instance on its own node while none says so, never a name in mesh-grants (ADR 0601 §4; review round 1, finding 4)
2026-11-03 16:44:47 +01:00
jschoubben
0fa00d5e6c
The watchman raises what a node keeps of a module as it runs, for a manifest that does not yet say it, from the module's have, and clears it once the have says none (ADR 0601 §4; review round 1, finding 3)
2026-11-03 16:44:47 +01:00
jschoubben
a41d2851c7
A release answers only the build whose fingerprint it moved: the indexer stamps the source revision at which a fingerprint last changed, a recompute with no merge the revision of its moment, and the assigner reads that stamp, never the Src a recompute keeps (ADR 0601 §1; review round 1, finding 1)
2026-11-03 16:44:47 +01:00
jschoubben
ea5be10532
Pin mesh-sdk 09ec82cb3551, the group's head of feat/l3b-bus (ADR 0601)
2026-11-03 16:44:47 +01:00
jschoubben
6b9d211f72
The checker decides a node the sandbox did not judge by the contract's field (composer.Machine.NotJudged, verdict not-judged) and names it with the composer's words, never by a phrase in its reason (ADR 0593 §9; the prepare's seams finding on "not judged")
2026-11-03 16:44:47 +01:00
jschoubben
b342c67b19
The grants part knows the tool runner by what its manifest says, never by its name, and keeps a node's tool runner user as the list in force holds it while no manifest there says it yet, said in the held condition (ADR 0601 §4; the prepare's seams finding on mesh-grants's own name)
2026-11-03 16:44:47 +01:00
jschoubben
daf178c4ca
A release's Approve answers the record ask of a move of the build alone to the build it carries: the assigner reads the release by the build's source revision from the gate's source and merges, and names it in the want; a move that changes a setting or a secret too is asked as before (ADR 0601 §1)
2026-11-03 16:44:37 +01:00
jschoubben
a9aa6d29ea
The assigner moves the bus module by its rules as any module, with no bar and no snapshot of its own, and a person may choose its policy as any module's: its node backs its streams up before it applies (ADR 0601 §1, §2)
2026-11-03 16:44:37 +01:00
jschoubben
ecf96be8ce
The judge's row for a field it does not know names a field mesh-sdk does not know now: core-credentials is one of its manifest words (ADR 0601 §4)
2026-11-03 16:44:37 +01:00
jschoubben
ab3cb1ca9e
The judge knows the tool runner by what its manifest says and keeps the kept streams itself, and this repository's check that no manifest names the ended controller reads them as text: mesh-sdk names no module (ADR 0601 §4)
2026-11-03 16:44:37 +01:00
jschoubben
054f089614
The bus has the upgrade policy its manifest says, as any module: the judge and the assigner rows read it from the manifest (ADR 0601 §1)
2026-11-03 16:44:37 +01:00
jschoubben
6301e49c73
Review round 2: a held module's object reads come from its running manifest; one with none keeps the list in force, said; indexer_judge asks the engine for the running build again (issue 774)
2026-11-03 16:44:37 +01:00
jschoubben
78fe1ce960
Review round 1: the indexer learns its build from the node-engine's seat; a held module's seats and hearings come from its running manifest; indexer_judge; one judge pass at a time (issue 774)
2026-11-03 16:44:37 +01:00
jschoubben
6645ac58c2
A manifest with a field the judge does not know waits instead of being refused; a held module keeps its bus users; tools list and redo the verdicts (ADR 0578 amended, issue 774)
2026-11-03 16:44:19 +01:00
jschoubben
4bb790bedf
Pin the group's mesh-sdk head f8bd12e in place of the local replace (issue 1966)
mesh/check pass 4bb790bedffe on 8f83608503da | unit 6460 run, 262 kept, 27 skipped | integration 6639 run, 264 kept, 35 skipped | over bound: unit, in…
mesh/delivery merged: source.main moved to novox/mesh-delivery@c4470f42dba9
mesh/delivery-group group feat/bus-state merged: every member is merged
2026-11-03 15:35:28 +01:00
jschoubben
aa98729457
The zero rule takes the count of the accepted set the last pass held, and is not applied when it cannot be read (issue 1966 D4)
2026-11-03 15:28:58 +01:00
jschoubben
2fdb0516cd
The checker's judge counts the old sections from the trunk case as the indexer does, so a change adding a section at 0 is refused at the merge check (issue 1966 D4)
2026-11-03 15:14:28 +01:00
jschoubben
28a6858863
The ledger account's subjects come from mesh-sdk's one naming of them (issue 1966 D5)
2026-11-03 15:13:38 +01:00