Milestone B1 of issue 1966 (ADR 0595 §10 steps 1, 2 and 4; design 25 § 12). One delivery group with mesh-delivery, mesh-tools and mesh-catalog on branch feat/bus-state.
Contracts only (ADR 0578 §7, ADR 0593 §1): a requires item naming storage decodes into Manifest.BusState (kept off Requires, which names provisions); the storage types, templates, options and ledger effects as names; Membership.Bindings with a ledger's types; the new package buscalls (objects, streams, work queues, ledgers; MetaCall; IndexKey encoding each part); delivery.ManifestAccepted; the bus account kind ledger (ledger.<node>.<module>, own secret ledgers) and LedgerHistorySubject / LedgerSnapshotSubject. Additive: nothing a running module reads changes.
Acceptance: issue 1966 notes 8 and 10 (AC1-AC6, AC23, AC27, AC28).
Test budget: unit tests 607 -> 605 (over the 500 budget before; fell, no new test function).
Milestone B1 of issue 1966 (ADR 0595 §10 steps 1, 2 and 4; design 25 § 12). One delivery group with mesh-delivery, mesh-tools and mesh-catalog on branch feat/bus-state.
Contracts only (ADR 0578 §7, ADR 0593 §1): a `requires` item naming `storage` decodes into `Manifest.BusState` (kept off `Requires`, which names provisions); the storage types, templates, options and ledger effects as names; `Membership.Bindings` with a ledger's types; the new package `buscalls` (objects, streams, work queues, ledgers; `MetaCall`; `IndexKey` encoding each part); `delivery.ManifestAccepted`; the bus account kind `ledger` (`ledger.<node>.<module>`, own secret `ledgers`) and `LedgerHistorySubject` / `LedgerSnapshotSubject`. Additive: nothing a running module reads changes.
Acceptance: issue 1966 notes 8 and 10 (AC1-AC6, AC23, AC27, AC28).
Test budget: unit tests 607 -> 605 (over the 500 budget before; fell, no new test function).
Reviewed-by: reviewer-bus@shanks at f8bd12e4b7b1e32ff01965f5232c27433ad18414
ADR 0595 §1: the typed long form {name, storage, template, options,
configuration} decodes into Manifest.BusState, its name also on Requires;
a key it does not know is set aside and named, never refused (ADR 0578 §3).
The requirements tests are one table.
The words of design 25 § 12.1 and ADR 0597 §1-2 as constants, and a
ledger's types (schema, operations each with its effect, indexes) on the
bus-state entry, so the judge, the bus module and the tool runner read one
contract. No bound and no rule: those are the judge's (ADR 0578 §7).
ADR 0595 §1, §7: the binding travels on the bus module's created and the
grants part writes it into the membership; omitted when empty, so a
membership without bindings encodes byte for byte as before. The two
address tests are one table.
ADR 0595 §9, ADR 0597 §10, design 25 § 12.5: the request and answer types
and method names of the bundle-pipe calls the tool runner serves, apply
naming the tool call it serves (ADR 0597 §7) and answering taken, its
sequence and state behind. It imports nothing of mesh-sdk, so a change
rebuilds only its importers; the package list names it.
ADR 0595 §4, design 25 § 12.2: the bus module hears the accepted verdict
as an event with the entries, never reading the indexer's state; AcceptedOf
builds the body and EventID names it once per digest and judge.
ADR 0597 §9 and the lead's Q1 path: one ledger credential per module
assignment, minted by the vault like every kind; the grants part's copy
of buscompose gains the same kind alike (D5b).
A local name such as records is no provision: on Requires it would send
the placement looking for a provider nothing offers (the lead's ruling on
issue 1966 B1). BusState alone holds the typed entries.
MetaCall, mesh/call: the id ApplyRequest.Call names, so the runner stamps
the caller it proved as the operation's author (ADR 0597 §7; the lead's
ruling on issue 1966 B1).
The grants part grants on them, the tool runner appends and snapshots on
them and the bus module creates the history over them, so the three read
one contract (the lead's ruling on issue 1966 B1; ADR 0597 §8, §9).
The grants part copies them from the manifest-accepted entry, so the tool
runner checks an operation against its type without reading another
part's state (ADR 0596; the lead's ruling on issue 1966 B1).
IndexKey and IndexEntry {instance, sequence}: the owner's watcher and the
tool runner's reindex write the same, so a reindex leaves the index as the
watcher keeps it (the lead's ruling on issue 1966 B1; ADR 0597 §4).
A raw value holding "." collided with a longer path, and a space is refused
by the bus: every byte outside [A-Za-z0-9_-] of a field value or an instance
path part is written =XX (review round 1 of issue 1966 B1).
Deliverynovox/mesh-sdk@f8bd12e4b7b1 — merged since 2026-11-03T15:24:29Z
Source — source.main moved to novox/mesh-sdk@2341e8e983. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (7bbdc38f1f86)
Transitions
2026-11-03 14:35 (new) → proposed (announced): novox/mesh-sdk#164's head announced
2026-11-03 14:36 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-03 15:24 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-sdk@f8bd12e4b7b1` — **merged** since 2026-11-03T15:24:29Z
**Source** — source.main moved to novox/mesh-sdk@2341e8e98377. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `feat/bus-state`: novox/mesh-catalog@34ce2895dd33, novox/mesh-delivery@4bb790bedffe, novox/mesh-sdk@f8bd12e4b7b1, novox/mesh-tools@43d3fba501d3
- composed together: pass — the checker's verdict at the members' heads (7bbdc38f1f86)
**Transitions**
- 2026-11-03 14:35 (new) → proposed (announced): novox/mesh-sdk#164's head announced
- 2026-11-03 14:36 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-03 15:24 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Milestone B1 of issue 1966 (ADR 0595 §10 steps 1, 2 and 4; design 25 § 12). One delivery group with mesh-delivery, mesh-tools and mesh-catalog on branch feat/bus-state.
Contracts only (ADR 0578 §7, ADR 0593 §1): a
requiresitem namingstoragedecodes intoManifest.BusState(kept offRequires, which names provisions); the storage types, templates, options and ledger effects as names;Membership.Bindingswith a ledger's types; the new packagebuscalls(objects, streams, work queues, ledgers;MetaCall;IndexKeyencoding each part);delivery.ManifestAccepted; the bus account kindledger(ledger.<node>.<module>, own secretledgers) andLedgerHistorySubject/LedgerSnapshotSubject. Additive: nothing a running module reads changes.Acceptance: issue 1966 notes 8 and 10 (AC1-AC6, AC23, AC27, AC28).
Test budget: unit tests 607 -> 605 (over the 500 budget before; fell, no new test function).
Reviewed-by: reviewer-bus@shanks at
f8bd12e4b7ADR 0595 §1: the typed long form {name, storage, template, options, configuration} decodes into Manifest.BusState, its name also on Requires; a key it does not know is set aside and named, never refused (ADR 0578 §3). The requirements tests are one table.IndexKey and IndexEntry {instance, sequence}: the owner's watcher and the tool runner's reindex write the same, so a reindex leaves the index as the watcher keeps it (the lead's ruling on issue 1966 B1; ADR 0597 §4).Delivery
novox/mesh-sdk@f8bd12e4b7b1— merged since 2026-11-03T15:24:29ZSource — source.main moved to novox/mesh-sdk@2341e8e983. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
feat/bus-state: novox/mesh-catalog@34ce2895dd, novox/mesh-delivery@4bb790bedf, novox/mesh-sdk@f8bd12e4b7, novox/mesh-tools@43d3fba501Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.