49b307a46d
Route a call key naming its machine after '@', and refuse a malformed key before publishing
jschoubben2026-11-02 11:22:50 +01:00
8295207077
Remove the controller's seat, the lease verbs and placement's adopt and hand-back; refuse any manifest naming the controller
jschoubben2026-11-02 11:20:28 +01:00
4a4fac090e
Merge pull request 'The enrolment seat and node-login rotation contract: a joining machine's first tunnel, add-node and remove-node, two logins per node (issue 774)' (#157) from feat/l3-enrol into main
mesh-tools2026-11-02 07:56:24 +00:00
dff0ce2abb
Say why LeaseHandedAway and LeaseCut are two fields: the cut precedes the holder's write and outlasts it at a hand-back (issue 774)
jschoubben2026-11-02 01:41:46 +01:00
c816666f83
Name the enrolment an address is reserved for, from its ask, and the issued event's id in one place
jschoubben2026-11-02 01:24:32 +01:00
2d717777b1
Carry the machine's tunnel key on its enrolment, so the holder places it on the operator's yes
jschoubben2026-11-02 01:15:12 +01:00
f913918a60
Take the tunnel key at issue and place a joining node on the operator's yes, so the hub peers it before redeem
jschoubben2026-11-02 01:08:49 +01:00
38a0bbca44
Let enrolment-token take the first tunnel, so the token the vault makes carries it as today
jschoubben2026-11-02 00:57:45 +01:00
79ad8b539c
Name the expired enrolment's issued event by its id, and carry a node's login fall back in its health report
jschoubben2026-11-02 00:56:56 +01:00
90a5fc5797
Let placement take an add-node with its enrolment's warrant, so one Approve lets a machine join
jschoubben2026-11-02 00:25:40 +01:00
362dddae40
Compose mesh-enrolment's grants: its bucket written by it alone, the vault's enrolment verbs called by it alone
jschoubben2026-11-02 00:24:07 +01:00
9169830210
Grant an enrolling node's user the seat's redeem alone, so from the lease write no token reaches the controller
jschoubben2026-11-02 00:22:19 +01:00
8c2ce57eee
Compose a node's two logins from the vault's node-logins, so a rotation can switch with both loaded
jschoubben2026-11-02 00:21:05 +01:00
69270a30d5
Add the vault's rotation verbs and the state node-logins, so a node's account rotates over two logins on one contract
jschoubben2026-11-02 00:19:11 +01:00
d7a00e1f26
Add the vault's enrolment verbs to its seat, so mesh-enrolment asks the vault to mint and sign and holds nothing
jschoubben2026-11-02 00:17:08 +01:00
2ee75954ad
Move the joining token's shape into mesh-sdk, so the vault that makes it, mesh-cli and the engine read one type
jschoubben2026-11-02 00:16:06 +01:00
959f57294a
Add the contract of the enrolment state and of redeem, so the holder, the grants part and the engine read one shape
jschoubben2026-11-02 00:15:08 +01:00
59b4c7910b
Add the seat mesh-enrolment: six verbs and five events, so the module that joins a machine has a role the judge knows
jschoubben2026-11-02 00:13:46 +01:00
5758e9fb57
Merge pull request 'The lease write's contract: the seat mesh-grants, the lease cut, processes follow their membership from state alone (issue 774)' (#156) from feat/l3-removal into main
mesh-tools2026-11-02 00:35:20 +00:00
c21d8fd969
Fold the seat mesh-grants' test into the seat-verb test, within the test budget
jschoubben2026-11-02 00:50:37 +01:00
bbfda29b49
The watchman hears the lease write's events and the stream ASSIGNMENTS deleted
jschoubben2026-11-02 00:37:04 +01:00
3ed41f02d5
The keep list holds the three kept to the write, since this delivery drops every other read of the controller
jschoubben2026-11-02 00:33:34 +01:00
09a5eb5783
Delete PlacementProposalChange.BeforeLease: the assigner no longer keeps the controller's assignments in step
jschoubben2026-11-02 00:32:13 +01:00
a4ed4e6742
Stop hearing mesh.assignment: a process follows its membership from the grants part's state alone
jschoubben2026-11-02 00:19:15 +01:00
d7a008bee5
Move the controller-dependence judge into mesh-sdk, so three repositories run the same lease-write check
jschoubben2026-11-02 00:17:13 +01:00
feadebd331
Let the lease key name its ask and time, and the user-list key say the lease is handed
jschoubben2026-11-02 00:15:20 +01:00
6f483725e9
Compose the lease write's cut, so a controller started after the write fails on the lease
jschoubben2026-11-02 00:14:44 +01:00
fdbb3d5784
Add the seat mesh-grants, so the grants part can claim the lease write as a seat verb
jschoubben2026-11-02 00:12:08 +01:00
ea8c50136c
Merge pull request 'Work out a node's declared packages and compose a node once over one read (ADR 0565 §6, ADR 0580; issues 1953, 1954)' (#155) from feat/node-packages into main
mesh-tools2026-11-01 17:02:22 +00:00
b2a27ed5ce
Merge branch 'feat/compose-once' of /home/jochen/projects/novox/mesh-sdk-compose into feat/node-packages
jschoubben2026-11-01 16:19:45 +01:00
5d26c658f5
Compose a node's plans once per read, resolving each machine once (issue 1954)
jschoubben2026-11-01 16:18:44 +01:00
621984614d
Merge pull request 'Agree a toolchain by strict majority; a node on another version sits out (ADR 0584, issue 1578)' (#154) from fix/toolchain-majority into main
mesh-tools2026-11-01 15:04:07 +00:00
0ef7c0caa4
Work out a node's declared packages and their difference with the mirror in the SDK, so each engine writes its own key (ADR 0565 clause 6, issue 1953)
jschoubben2026-11-01 16:02:06 +01:00
67354f8e01
Name the agreed toolchain in a check ask and decline it on a node off that toolchain (ADR 0584, issue 1578)
jschoubben2026-11-01 15:33:43 +01:00
71be15f530
Decline a build ask for another toolchain instead of failing it (ADR 0584 clause 2, issue 1578)
jschoubben2026-11-01 15:24:13 +01:00
a6c6d936d5
Agree a toolchain by strict majority and name the nodes that sit out (ADR 0584, issue 1578)
jschoubben2026-11-01 15:20:26 +01:00
cad8250aaa
Merge pull request 'A watched reader of bus states; the hand-act recorder records only through mesh-hand-acts (ADR 0580, design 47 L5)' (#153) from feat/l5-l7-main into main
mesh-tools2026-11-01 13:53:07 +00:00
790d1c82d0
A follower joining a watched state hears its current values, and a templates archive is fetched once
jschoubben2026-11-01 03:51:53 +01:00
8696aa9ba4
The hand-act recorder records through the seat alone, and the watched reader's reads are proved
jschoubben2026-11-01 03:33:17 +01:00
db4eb3bbf4
One watched copy of the states a module reads, and the composer's reader over it
jschoubben2026-11-01 03:29:05 +01:00
da41823855
Merge pull request 'mesh-sdk keeps the manifest contract and a lenient decoder; the judge leaves it (ADR 0578, 0579, 0573 §2)' (#152) from feat/judge-once into main
mesh-tools2026-11-01 07:53:58 +00:00
c77d17fb42
A follower joining a watched state hears its current values, and a templates archive is fetched once
feat/l5-l7
jschoubben2026-11-01 03:51:53 +01:00
8311ecb849
The hand-act recorder records through the seat alone, and the watched reader's reads are proved
jschoubben2026-11-01 03:33:17 +01:00
ba8b8f28a3
One watched copy of the states a module reads, and the composer's reader over it
jschoubben2026-11-01 03:29:05 +01:00
8af6e72669
Format streams.go as gofmt writes it, which the group's check refused
jschoubben2026-11-01 03:22:06 +01:00
62cddf4efc
Refuse a manifest judge in mesh-sdk's own check, and never end the data items' read on one module (ADR 0578 §3, §4)
jschoubben2026-11-01 03:07:50 +01:00
19c204273b
Let a verdict warn of what a stricter judge found in a manifest it accepted before (ADR 0579 §1)
jschoubben2026-11-01 02:43:10 +01:00
a20bdf7952
Carry mesh package versions in build asks and fingerprints
jschoubben2026-11-01 01:57:26 +01:00
68aaf235d4
Take the judge out of mesh-sdk: it is mesh-delivery's now (ADR 0578 §4, §7)
jschoubben2026-11-01 02:36:24 +01:00
25a2cecd98
Let the tree readers decode, give the judge the manifest's data it reads, and stop judging outside the catalogue (ADR 0578 §3, §4)
jschoubben2026-11-01 02:33:19 +01:00
7cab079e2e
Merge the set-aside field's three tests into one, so the judge work adds no test to the budget
jschoubben2026-11-01 02:20:31 +01:00
9904a03b51
Let the merge preview and the provided manifest decode instead of judging (ADR 0578 §3)
jschoubben2026-11-01 02:18:56 +01:00
7b09de1e55
Let the composer take each manifest's verdict from its input instead of judging (ADR 0578 §5)
jschoubben2026-11-01 01:57:36 +01:00
7631a7d5de
Hold a refused manifest in the bus reader instead of ending the whole read (ADR 0578 §3)
jschoubben2026-11-01 01:57:36 +01:00
a343557554
Give the indexer's verdicts on manifests a contract readers take (ADR 0578 §1, §3)
jschoubben2026-11-01 01:57:36 +01:00
ccb367e68c
Decode a manifest leniently, so a field a reader does not know never leaves its module out (ADR 0578 §3, §6)
jschoubben2026-11-01 01:57:36 +01:00
ff5e00f1f8
Merge pull request 'The contract of the node-engine's data items, so disk-load reads what the engine composed (ADR 0577)' (#151) from feat/data-items into main
mesh-tools2026-11-01 00:03:10 +00:00
c28c645ca4
Name the node-engine's data items state, so mesh-host writes and disk-load reads one shape (ADR 0577)
jschoubben2026-11-01 00:05:38 +01:00
5ae69df8cc
Merge pull request 'A finding's reference is ref, not token, and a held seat carries its own events (issue 1952)' (#150) from fix/l4-quick into main
mesh-tools2026-10-31 21:33:56 +00:00
cbbfbf3d2d
Let observers' findings and a carried holder's seat events reach the bus (issue 1952)
jschoubben2026-10-31 21:30:31 +01:00
fea48f19ce
Merge pull request 'A contribution carries the machine port of its endpoint, so a provider serving from plans dials what the module binds (issue 774)' (#149) from fix/route-ports into main
mesh-tools2026-10-31 12:56:48 +00:00
bb01a656d0
Carry an unassigned port as the declaration publishes it, refusing only a port a module does not listen on (issue 774, research 072 row 34)
jschoubben2026-10-31 13:21:37 +01:00
b611022457
Carry the machine-assigned port in a plan's contribution, so a provider serving from plans dials where the module listens (issue 774, research 072 row 34)
jschoubben2026-10-31 13:08:35 +01:00
fbbfae7629
Merge pull request 'Placement keyed per node and module, no ASSIGNMENTS stream, and plan entries carrying a consumer's contribution (issue 774)' (#148) from feat/072-moves into main
mesh-tools2026-10-31 10:30:57 +00:00
acbf80ad91
Carry what a consumer contributes in its plan entry as one opaque payload, so a provider serving from the seat's plans reads it with its own contract and the provisioner knows no provision's fields (issue 774, research 072 row 34)
jschoubben2026-10-31 09:35:59 +01:00
de8e82c06f
Say what the controller's lease turns now that the vault mints whoever holds it: grants' consumers, the grant source, retirement and rotation (issue 774)
jschoubben2026-10-31 09:34:27 +01:00
085f17e935
Let a node composing itself hand a module exactly when the vault judged its plan handed, through one rule (catalogue.AssignmentHands), so the vault and the node never judge postgres's secrets two ways again (issue 774)
jschoubben2026-10-31 09:29:32 +01:00
2d1d8def75
Take the plan entry's Given and ConsumerAt back out: route-proxy's seat defines its own contract and the provisioner's plan stays generic (the operator, 2026-10-31; issue 774). process.Conn.Read stays.
jschoubben2026-10-31 09:29:17 +01:00
98d5306d6b
Say which machines are inside the private network from placement, for route-proxy, whose membership read goes with the assignments stream (issue 774, research 072 rows 33 and 34)
jschoubben2026-10-31 09:28:15 +01:00
a4e7629742
Carry each contribution, composed, and the consumer's address in its plan entry, and let a process read another module's state, so route-proxy serves routes from the seat's plans alone (issue 774, research 072 row 34)
jschoubben2026-10-31 09:17:20 +01:00
a320f8e2cd
Keep placement.<node> in step after each commit, so a reader of the form before alone follows every write and the delivery's members need no order (issue 774, research 072 row 37)
jschoubben2026-10-31 09:26:17 +01:00
7a9c8570cb
Stop declaring and reading the ASSIGNMENTS stream: a runtime reads its membership from the grants part's state, and the stream is deleted at the lease write and must not be made again (issue 774, research 072 row 33)
jschoubben2026-10-31 09:21:04 +01:00
4c54aec972
Keep the seat mesh-placement's state as one key per module and node, so a node watches its own keys and a change writes only the modules it moves (issue 774, research 072 row 37)
jschoubben2026-10-31 09:21:04 +01:00
d352fe51b4
Let the bus module's tools delete the stream ASSIGNMENTS at the lease write, the only stream a bus account may delete (issue 774, research 072 row 33)
jschoubben2026-10-31 09:12:31 +01:00
712ec9481b
Merge pull request 'A node-engine answers any verb of its own node, so a new engine verb needs no grants release (issue 774)' (#147) from fix/engine-seat-any-verb into main
mesh-tools2026-10-31 00:30:54 +00:00
50ea6f748e
Merge pull request 'A node says when it composes again, says what a long pass waits on, and composes on request (issue 774)' (#146) from fix/compose-retries-transient into main
mesh-tools2026-10-31 00:21:31 +00:00
748543c35f
Grant a node's engine any verb and event of its node seat on its own node, so a verb added to the contract needs no grants release first (issue 774)
jschoubben2026-10-31 01:05:57 +01:00
dfd5d8295e
Add the node-engine verb compose to the seat's contract: compose now, the recovery of a failed composition (issue 774)
jschoubben2026-10-31 00:52:35 +01:00
dec3bfe7a8
Merge pull request 'A held module keeps what it contributes, a have stuck at waiting-yes clears, and the node-engine shows a composition (issue 774)' (#145) from fix/held-keeps-contributions into main
mesh-tools2026-10-30 23:52:51 +00:00
8ed3b872e0
Leave out a held module's contribution whose grant is not issued, so a provider never applies a stand-in (issue 774, review round 1)
jschoubben2026-10-31 00:34:39 +01:00
6bce1fb0d2
Add the node-engine verb composition to the seat's contract, and the resources two compositions differ in (issue 774)
jschoubben2026-10-31 00:23:42 +01:00
409c56685d
Keep a held module's contributions when only its own secret is missing, and say a provider's move as consumers joining or leaving (issue 774)
jschoubben2026-10-31 00:20:01 +01:00
b9ef1e4fcb
Merge pull request 'One rule for whether a plan hands its module, so no part reads a provisions-only plan as handed (issue 774)' (#144) from fix/plan-hands into main
mesh-tools2026-10-30 23:18:58 +00:00
17fc9b9b81
Say whether a plan hands its module in one rule, Plan.Hands, so no reader takes a plan naming provisions alone for a handed module (issue 774)
jschoubben2026-10-30 23:50:09 +01:00
125bb91771
Merge pull request 'One rule for which provisions a module waits for, so the assigner, the plans and the provisioner agree and grafana gets its route (issue 774)' (#143) from fix/one-rule-for-provisions into main
mesh-tools2026-10-30 22:33:49 +00:00
6c5a8ef893
Test that the composition marks a need its provider's helper answers, so the consumer's plan keys it (issue 774)
jschoubben2026-10-30 21:41:29 +01:00
91aa7b78fc
Key provisions by one rule the plan, the seat and the assigner share (issue 774)
jschoubben2026-10-30 21:34:38 +01:00
b74e23f973
Merge pull request 'A module held for a missing secret gets no runtime of its own, so it never refuses its node's whole composition (issue 774)' (#142) from fix/held-module-and-assigner-contract into main
mesh-tools2026-10-30 21:17:38 +00:00
eff81f1220
Never refuse a node for a held module's stand-in by its own runtime's rules (issue 774)
jschoubben2026-10-30 21:18:06 +01:00
6a71d29b33
Merge pull request 'A module's bus account not issued yet is foreseen in a node's answer, so a new module can be assigned; a refusal leads with each held module's first reason (issue 774)' (#141) from fix/kept-read-and-foreseen-account into main
mesh-tools2026-10-30 19:49:12 +00:00
4e9621edd6
Lead a refusal of a held module's stand-in with why the module was held, so its first reason is never hidden (issue 774)
jschoubben2026-10-30 20:33:54 +01:00
0cdbdca139
Foresee a bus account not yet issued in a composition asked ahead of the Approve, so a module with its own account can be placed (issue 774)
jschoubben2026-10-30 20:33:05 +01:00
14de8dadb4
Merge pull request 'A build not done yet holds its module, never every module of a node, and a refusal names what was held (issue 774)' (#140) from fix/build-not-done-holds-one-module into main
jschoubben2026-10-30 18:53:04 +00:00
9685990a15
Compose a module at the build its want names and hold a running one whose build is not done, so the runtime never loses its bundle (issue 774)
jschoubben2026-10-30 19:45:32 +01:00
d539d7e4eb
Take the runtime as a culprit only where its stub composes, so node-tools is never held for an error that names it (issue 774)
jschoubben2026-10-30 19:44:08 +01:00
c1bc21c35f
Say what a node held on the way when it is refused whole, so a held module's own refusal is never hidden (issue 774)
jschoubben2026-10-30 19:43:46 +01:00
16932c93d6
Merge pull request 'A manifest the mesh refuses holds only its own module, never every node's composition (issue 774)' (#139) from fix/one-bad-item-holds-one-module into main
jschoubben2026-10-30 18:30:53 +00:00
754edfae69
Hold only the module whose manifest the mesh refuses, so one bad item no longer fails every node's composition (issue 774)
jschoubben2026-10-30 19:23:21 +01:00