Commit Graph
2805 Commits
Author SHA1 Message Date
jschoubben 4a6395feae pacman falls back to the controller's mirror for every node when the engine's state cannot be read, and says the engine's error (ADR 0565 clause 6, review round 2)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:54:07 +01:00
jschoubben 1db0181920 pacman reads the node-engine's packages first and the controller's mirror per node until the lease write; compare counts only an indexer that was read, and a forge not heard is said in the row (review round 1)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:54:07 +01:00
jschoubben 8c07d2ef67 claude-code records its warrant through the hand-act seat, and the group's modules pin mesh-sdk at 8311ecb
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:54:07 +01:00
jschoubben a673fc52a7 mesh-config compare: leave out merged or closed pull requests' candidates and a module with no manifest and no mirrored keys, so compare can come out empty (issue 1953 L5d, L5e)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:54:07 +01:00
jschoubben b0dc7e08de mesh-provisioner recomposes a node when one of its haves changes, and pins mesh-sdk at 8311ecb
ADR 0580 clause 2 as revised: the holder hears haves by watch as it hears resolved values, so a have's change recomposes
its node from the copy it already holds.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:54:07 +01:00
jschoubben aa4a4253ad mesh-provisioner composes from one watched copy of its reads, not key by key
Composing one node read every placement, have, module and resolved key one at a time and took past 30 s with the bus
local (ADR 0580 clause 2): the holder now reads them from mesh-sdk's watched copy, its watch handlers queue the nodes a
change touches after the copy took it, and a resolved value's change recomposes its node. mesh-sdk pinned at ba8b8f2.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:54:07 +01:00
jschoubben cd7582a0f2 mesh-config and mesh-healers record into the hand-act seat alone, and gitea consumes no event of the controller (ADR 0565 clause 11, ADR 0571 clause 13, issues 1953 and 1955)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:53:59 +01:00
jschoubben 1d3e2b8aca pacman reads the node-engine's packages, not the controller's declared-packages mirror (ADR 0565 clause 6, issue 1953)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 09:53:59 +01:00
mesh-tools 462bcfe451 Merge pull request 'Catalog readers decode instead of judging; mesh-build-go builds against the asked package versions (ADR 0578, 0573 §2)' (#585) from feat/judge-once into main 2026-11-01 07:54:14 +00:00
jschoubben 432326264f artifact-store-tools: date the sweep test's builder log on the real clock
mesh/delivery merged: source.main moved to novox/mesh-catalog@462bcfe4510e
mesh/delivery-group group feat/judge-once merged: every member is merged
mesh/check checking 432326264f6c on 4b16c193f0fb | novox/mesh-catalog#585 in group feat/judge-once
The test copies aMesh's log, dated from 2026-10-01 for a fixed clock, but runs the holder on time.Now; since
2026-10-31 every entry fell outside the log's 30 days, so the sweep rightly kept every copy as unrecorded and the
mirror act was missing. The sweep is right; the fixture is shifted to now (issue 1955, L7a).

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 03:40:56 +01:00
jschoubben 3e08301b27 Pin every module to the group's mesh-sdk head after the gofmt fix
mesh/delivery-group group feat/judge-once rejected: composed together: the checker's verdict at the members' heads (5c42ba1fb5f3): integration: artifactstoreto…
mesh/delivery closed: a newer head of the same pull request
mesh/check failed: integration: artifactstoretools/cmd/artifa… | 3e08301b27ea on 4b16c193f0fb | judged by the candidate's mesh-build-go at 8dd51540f73a
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 03:30:59 +01:00
jschoubben c4406da4a3 Pin every module to the group's mesh-sdk head after review round 1
mesh/delivery-group group feat/judge-once checking: 6 of 6 member(s) ready
mesh/delivery closed: a newer head of the same pull request
mesh/check checking c4406da4a3fe on 4b16c193f0fb | novox/mesh-catalog#585 in group feat/judge-once
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 03:17:47 +01:00
jschoubben c19edac804 Pin every module that names mesh-sdk at the group's final head, without the judge (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:50:43 +01:00
jschoubben fcd7df5356 Build Go modules against the package versions an ask names
ADR 0573 §2 and §4 have a build take the latest published version of
each mesh package, or a group's own head, whatever go.mod names (issue
1585, S15). The fetch writes each asked version into the directory's
temporary modfile before downloading: a trunk commit is required at its
Go version with its checksums for go mod verify, a pull request's head
is placed as a pin on a head is, a newer go.mod version is kept and
said, and the answer and the log name each.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:46:04 +01:00
jschoubben 9fa7f7b535 mesh-provisioner builds on the mesh-sdk without the judge (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben eed6e08000 mesh-delivery-gate builds on the mesh-sdk without the judge (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben 84264b4fd0 mesh-conditions builds on the mesh-sdk without the judge (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben e1799f3534 only-office builds on the mesh-sdk without the judge (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben baa2d93310 mesh-build-image builds on the mesh-sdk without the judge (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben 5b09353484 mesh-build-go builds on the mesh-sdk without the judge (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben fa88633427 mesh-build-node tests decode their manifest instead of judging it (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben 762982dee7 checks/manifests, credentialform and health build on the mesh-sdk without the judge
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben 021e641840 checks/sdkjudge lets the composer's placeholder and template refusals stay, and the real tree pass (ADR 0578 §5)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:40:56 +01:00
jschoubben d2b852c224 mesh-provisioner takes the indexer's verdicts through mesh-sdk, so a refused module is held, not fatal (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben 2d9ba73221 mesh-delivery-gate tests decode their manifest instead of judging it (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben d8e2f9f6a6 mesh-conditions tests decode their manifest instead of judging it (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben 7239b3e3dd only-office tests decode their manifest instead of judging it (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben a924397765 mesh-build-image decodes the manifest it builds from and judges none (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben 9b12dfaf21 mesh-build-go decodes the manifest it builds from and judges none (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben 7a143d1f22 Refuse a manifest judge in mesh-sdk beside a catalogue change: problem functions and allow-list tables (ADR 0578 §4)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben 0bccd9f9e9 checks/health counts resources from decoded manifests instead of judging them (ADR 0578 §3)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben 349a5774cd checks/credentialform stops judging credential forms, the checker's judge runs that rule (ADR 0578 §2)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
jschoubben 376d0211e9 checks/manifests decodes manifests and judges none, the checker's judge does (ADR 0578 §2)
Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 02:29:48 +01:00
mesh-tools 4b16c193f0 Merge pull request 'disk-load watches the node-engine's data items instead of composing them, and each round says how far it got (ADR 0577)' (#584) from feat/data-items into main 2026-11-01 00:03:14 +00:00
jschoubben 0c46f47ae5 disk-load retires the readings of a module whose key went while its watch was down (review round 2)
mesh/delivery merged: source.main moved to novox/mesh-catalog@4b16c193f0fb
mesh/delivery-group group feat/data-items merged: every member is merged
mesh/check pass 0c46f47ae57e on 444c2903af7b | unit 4510 run, 4259 kept, 49 skipped | integration 4589 run, 4361 kept, 51 skipped | over bound: unit, …
A key deleted while disk-load was not watching (a restart, a reboot, a machine asleep) never
arrives as a delete. Once the watch has handed over every current key, the readings of modules
with no key are retired once; an empty set is skipped and said, since the engine has not written.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 00:30:39 +01:00
jschoubben 6fe0ef321d disk-load retires a reading only on its module's key, and measures as soon as its watch catches up (review round 1)
A round no longer retires readings missing from the watched set, which may be empty or partial;
a module's readings are retired when its key of mesh-host_data is deleted or names fewer items.
A round refused before the watch caught up runs once it has, not an hour later. disk_round reads
this machine's key alone, as its grant allows.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 00:28:29 +01:00
jschoubben 357a53d9ac Add disk-load's watched items, their test and its whole test, which the binary's ignore line hid
The ignore line `disk-load` matched the directory cmd/disk-load, so new files there were never
added; it now names the built binary alone.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 00:15:27 +01:00
jschoubben b712123f2b disk-load measures the items the node-engine keeps for its node, and composes nothing (ADR 0577)
It watches its node's keys of mesh-host_data instead of composing every module's items from
about 370 resolved keys per round, so a round no longer takes 30 to 45 minutes across the tunnel
and a manifest its mesh-sdk cannot judge no longer silences it. A changed key measures its module
at once; each round writes how far it got to the per-node state rounds, said by disk_round.
Pins mesh-sdk feat/data-items.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-11-01 00:15:14 +01:00
mesh-tools 444c2903af Merge pull request 'disk-load builds on the current mesh-sdk, so it accepts nats manifest again (issue 1952)' (#583) from fix/disk-load-sdk into main 2026-10-31 22:18:26 +00:00
jschoubben 7e5980ff17 artifact-store-tools keeps its pin: it does not read other modules' manifests, and its sweep test fails on main as well (issue 1955)
mesh/delivery merged: source.main moved to novox/mesh-catalog@444c2903af7b
mesh/check being carried to 7e5980ff17e0 on 444c2903af7b | from 19714898986c
The check on 654d90a2 failed on TestTheSeatSweepsAtABuildsEndOnARealBusOnceTheLeaseIsAway, which fails the same
way at main's pin (2 hand acts recorded where 3 are expected; reproduced locally in 0.1 s). Not this change's.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-10-31 23:10:58 +01:00
jschoubben 654d90a211 disk-load and artifact-store-tools build on the current mesh-sdk, so they accept nats's manifest again (issue 1952)
mesh/delivery closed: a newer head of the same pull request
mesh/check failed: integration: artifactstoretools/cmd/artifact-store-tools.TestTheSeatSweepsAtABuildsEndOnARealBusOnceTheLeaseIsAway: the hand acts r…
Since 2026-10-30 disk-load on every machine refused each round ("nats's tools bundle tools's bus removes
"ASSIGNMENTS", which is not one of ..."): its mesh-sdk copy (2da0de75) predates the allowance for removing
the ASSIGNMENTS stream (process_bus.go RemovesAssignmentsStream). No machine was measured, novox kept no
readings, and the controller's stale data-quiet on novox's jetstream kept mesh-conditions.compare apart,
refusing the L4 take-over. artifact-store-tools composes from the bus on the same copy and gets the same
pin. Same kind as mesh-catalog #580 for mesh-build-go; the thorough fix (every module on the latest
published mesh-sdk) is issue 1585.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-10-31 22:50:41 +01:00
mesh-tools 1971489898 Merge pull request 'The self-check judges D13 from watched state, findings are saved, and bus-upgrade-failed ends with the controller (issue 1952)' (#582) from fix/l4-quick into main 2026-10-31 21:33:59 +00:00
jschoubben bbd02004b8 Let the health take-over's compare come out empty (issue 1952)
mesh/delivery merged: source.main moved to novox/mesh-catalog@19714898986c
mesh/delivery-group group fix/l4-quick merged: every member is merged
mesh/check pass bbd02004b863 on 3d7830cfdc4f | unit 2729 run, 4570 kept, 16 skipped | integration 2975 run, 4493 kept, 25 skipped | over bound: unit, …
The self-check's D13 read every reading, good night, indexer module and
manifest one key at a time through the runtime and never finished
within its 30 s; it now keeps those states by watching them and judges
from memory, and reads the setting `probes` once a run. Findings name
their key's last part `ref`, since the runtime refuses a field named
`token`; the self-check, the healers and the keeper are pinned to the
mesh-sdk that reads it and lets a carried holder say its seat's events.
The controller's own bus.nats.upgrade-failed ends with its lease, as
the operator approved on 2026-10-31, so compare lists it apart.

Quick vs thorough: quick, these fixes for L4's take-over now; the
thorough fix (research 032 / ADR 0240's health view extension) is
decided later.

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
2026-10-31 21:35:59 +01:00
mesh-tools 3d7830cfdc Merge pull request 'The provisioner composes route contributions with the machine port (issue 774)' (#581) from fix/route-ports into main 2026-10-31 12:56:51 +00:00
jschoubben 841fd26a2a Pin mesh-provisioner to the mesh-sdk that carries an unassigned bare port as the machine publishes it, so influxdb's and unifi's plans are not held (issue 774, research 072 row 34)
mesh/delivery merged: source.main moved to novox/mesh-catalog@3d7830cfdc4f
mesh/delivery-group group fix/route-ports merged: every member is merged
mesh/check failed: integration: mesh-vault/cmd/mesh-vault.TestTheVaultWholeMintsOnTheBusWhoeverHoldsTheLease: never: the account minted under the cont…
2026-10-31 13:22:00 +01:00
jschoubben 4ab6f65ad8 Pin mesh-provisioner to the mesh-sdk whose plans carry machine-assigned ports, so route-proxy dials where a module listens (issue 774, research 072 row 34)
Hand pin to fix/route-ports in mesh-sdk, for this group one last time (ADR 0573, issue 1585).
2026-10-31 13:09:25 +01:00
mesh-tools 2ff7ef3a52 Merge pull request 'Build mesh-build-go against the group mesh-sdk, so a manifest removing ASSIGNMENTS is accepted and the catalogue members of feat/072-moves build (issue 774)' (#580) from fix/build-go-sdk-assignments into main 2026-10-31 11:18:52 +00:00
jschoubben b8f62cd2ac Build mesh-build-go against the group's mesh-sdk acbf80a, so it accepts a manifest that removes the ASSIGNMENTS stream and the catalogue's modules of feat/072-moves build (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-catalog@2ff7ef3a52d8
mesh/check checking b8f62cd2accb on 2ff7ef3a52d8
The build module checks every manifest with the mesh-sdk compiled into it. At a37181261c24 that copy did not know
the removal ASSIGNMENTS, so nats's manifest was refused at 11:45 and 11:48 and the catalogue's members of the group
(the vault, the provisioner and the rest) never built. A hand pin, allowed for this group one last time; issue 1585
makes every dependent follow a published mesh-sdk.
2026-10-31 12:09:35 +01:00
mesh-tools bcbff9de36 Merge pull request 'The vault the only issuer, placement read per node and module, hand acts copied once, routes only from the provisioner's plans (issue 774)' (#579) from feat/072-moves into main 2026-10-31 10:31:01 +00:00
mesh-tools 65fad0ae1c Merge pull request 'The knowledge base retracts a wrong decision or clause on the operator's Approve, instead of adding a correcting record' (#578) from fix/knowledge-retract into main 2026-10-31 09:31:32 +00:00