Renumber to 0116: another record took 0115 on main
PR #133 landed a different 0115 while this branch was open. The bus record is now 0116, with every citation in designs 19, 25, 28 and the index following it. Note: cycle.py and records.py both fail on main as merged, on that record — nothing cites it, and it rests on 0112, which is still proposed. Both pre-date this branch and are left for their own change.
This commit is contained in:
+1
-1
@@ -7,7 +7,7 @@ reconstructed: false
|
||||
extends: 02-DECISIONS/0106-the-bus-is-nats.md
|
||||
---
|
||||
|
||||
# 115. The bus is built in five steps, and the protocol moves with it
|
||||
# 116. The bus is built in five steps, and the protocol moves with it
|
||||
|
||||
## Context
|
||||
|
||||
@@ -132,7 +132,7 @@ python3 00-META/checks/index.py fail if stale
|
||||
- **0104** — [A provision may be answered by an adapter to the predecessor](0104-a-provision-may-be-answered-by-an-adapter-to-the-predecessor.md)
|
||||
- **0105** — [The mesh adopts the predecessor's tunnel in place](0105-the-mesh-adopts-the-predecessors-tunnel-in-place.md)
|
||||
- **0106** — [The bus is NATS](0106-the-bus-is-nats.md)
|
||||
- **0115** — [The bus is built in five steps, and the protocol moves with it](0115-the-bus-is-built-in-five-steps.md)
|
||||
- **0116** — [The bus is built in five steps, and the protocol moves with it](0116-the-bus-is-built-in-five-steps.md)
|
||||
|
||||
### Its tiers, from the bottom up
|
||||
|
||||
@@ -198,6 +198,7 @@ python3 00-META/checks/index.py fail if stale
|
||||
- **0112** — [A module definition names no node, no mesh and no path: everything it needs is a requirement the mesh resolves](0112-a-module-definition-names-no-node-mesh-or-path.md) *(proposed)*
|
||||
- **0113** — [The vault makes every shared secret, a provider makes resources and data, and the mesh carries both](0113-the-vault-makes-every-secret.md) *(proposed)*
|
||||
- **0114** — [A credential two parties hold rotates over two credentials; one a single party holds rotates in place, staged; and retiring a credential never removes what it reached](0114-a-shared-credential-rotates-over-two-credentials.md) *(proposed)*
|
||||
- **0115** — [One assignment of a module per node: the module's name is the assignment's identity](0115-one-assignment-of-a-module-per-node.md)
|
||||
|
||||
### How it is built
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ updated: 2026-09-26
|
||||
decisions:
|
||||
- 02-DECISIONS/0095-the-control-plane-is-the-way-to-ask-a-module.md
|
||||
- 02-DECISIONS/0106-the-bus-is-nats.md
|
||||
- 02-DECISIONS/0115-the-bus-is-built-in-five-steps.md
|
||||
- 02-DECISIONS/0116-the-bus-is-built-in-five-steps.md
|
||||
- 02-DECISIONS/0074-the-wire-is-specified-not-the-types.md
|
||||
- 02-DECISIONS/0039-what-the-sdk-holds-and-refuses.md
|
||||
- 02-DECISIONS/0043-a-module-broker-account-is-scoped-by-emits-and-consumes.md
|
||||
@@ -40,7 +40,7 @@ describes current behaviour that is *not yet* specified-and-conformed, it says s
|
||||
>
|
||||
> Rewriting the wire sections onto the subjects and streams of
|
||||
> [design 25](25-the-bus-on-nats.md) §2–§3, and recapturing the fixtures there, is **step 3 of
|
||||
> [ADR 0115](../../02-DECISIONS/0115-the-bus-is-built-in-five-steps.md)**. Until that lands, read
|
||||
> [ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md)**. Until that lands, read
|
||||
> the sections below for what two implementations may not disagree *about*, and design 25 for what
|
||||
> they will disagree about it *on*. A specification that silently described a retired transport
|
||||
> would be worse than an absent one, because it reads as current — hence this note rather than a
|
||||
|
||||
@@ -10,7 +10,7 @@ code:
|
||||
updated: 2026-09-26
|
||||
decisions:
|
||||
- 02-DECISIONS/0106-the-bus-is-nats.md
|
||||
- 02-DECISIONS/0115-the-bus-is-built-in-five-steps.md
|
||||
- 02-DECISIONS/0116-the-bus-is-built-in-five-steps.md
|
||||
- 02-DECISIONS/0074-the-wire-is-specified-not-the-types.md
|
||||
- 02-DECISIONS/0079-the-foundation-seats-are-named-after-their-servers.md
|
||||
- 02-DECISIONS/0100-a-node-in-use-is-adopted-before-it-is-converged.md
|
||||
@@ -237,7 +237,7 @@ message body. A module built today runs on the new runtime without a rebuild —
|
||||
ADR 0039, and it is in §10.
|
||||
|
||||
**The wire underneath it changes completely, and that is a specification, not an implementation
|
||||
detail.** Revision, second review ([ADR 0115](../../02-DECISIONS/0115-the-bus-is-built-in-five-steps.md)):
|
||||
detail.** Revision, second review ([ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md)):
|
||||
an earlier draft of this section said "nothing new" and stopped there, which read as though the
|
||||
change were contained inside the runtime. It is not.
|
||||
[ADR 0074](../../02-DECISIONS/0074-the-wire-is-specified-not-the-types.md) settled that an SDK is an
|
||||
@@ -258,7 +258,7 @@ nothing is added to it here.
|
||||
## 9. Moving from the bus the mesh has: five steps
|
||||
|
||||
Per ADR 0106 the bus moves once. Per
|
||||
[ADR 0115](../../02-DECISIONS/0115-the-bus-is-built-in-five-steps.md) the *build* is five steps,
|
||||
[ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md) the *build* is five steps,
|
||||
each ending at something §10 proves, so that no part of this waits on the whole of it. Dividing the
|
||||
build does not divide the bus: steps 1 to 4 leave every node on AMQP, and step 5 is still one
|
||||
rollout.
|
||||
@@ -382,7 +382,7 @@ to mapping the sdk contract onto subjects exactly as §8 says.
|
||||
|
||||
## 11. Open, for the review
|
||||
|
||||
**Closed by the second revision** (2026-09-26, [ADR 0115](../../02-DECISIONS/0115-the-bus-is-built-in-five-steps.md)):
|
||||
**Closed by the second revision** (2026-09-26, [ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md)):
|
||||
the build was one undivided item (§9 is now five steps, each with its own bed in §10); there was no
|
||||
adoption path for a mesh already running (§9 step 2); and §8 said a module sees "nothing new"
|
||||
without distinguishing the sdk's contract, which does not change, from the specified wire, which
|
||||
|
||||
@@ -4,7 +4,7 @@ status: proposed
|
||||
code: []
|
||||
updated: 2026-09-26
|
||||
decisions:
|
||||
- 02-DECISIONS/0115-the-bus-is-built-in-five-steps.md
|
||||
- 02-DECISIONS/0116-the-bus-is-built-in-five-steps.md
|
||||
- 02-DECISIONS/0106-the-bus-is-nats.md
|
||||
- 02-DECISIONS/0074-the-wire-is-specified-not-the-types.md
|
||||
- 02-DECISIONS/0079-the-foundation-seats-are-named-after-their-servers.md
|
||||
@@ -14,7 +14,7 @@ decisions:
|
||||
|
||||
# 28. Building the bus
|
||||
|
||||
**The work of [ADR 0115](../../02-DECISIONS/0115-the-bus-is-built-in-five-steps.md)'s five steps,
|
||||
**The work of [ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md)'s five steps,
|
||||
in the order its dependencies allow, with what each ends at.**
|
||||
[Design 25](25-the-bus-on-nats.md) is the architecture and stays the authority on *what is built*;
|
||||
this document holds only the order, the sizes and the proofs, and it is wrong the moment it
|
||||
@@ -65,11 +65,11 @@ mirror rather than share (the host imports nothing, by
|
||||
host's link, and the runtime's client. And a search for conformance fixtures finds none anywhere in
|
||||
the four repositories: design 22's Phase 1.2 — the suite — has not been built.
|
||||
|
||||
> **This corrected the record.** ADR 0115 said step 3's fixtures were *recaptured* on NATS. There
|
||||
> **This corrected the record.** ADR 0116 said step 3's fixtures were *recaptured* on NATS. There
|
||||
> is nothing to recapture, so step 3 **builds** the suite, and its first job is to pin the wire the
|
||||
> mesh has before changing it — a suite written only against the new bus certifies whatever the new
|
||||
> bus happens to do. A fact went stale while the decision stood, which is a **progressive insight**
|
||||
> ([`02-DECISIONS/README.md`](../../02-DECISIONS/README.md)): it is marked and dated in ADR 0115
|
||||
> ([`02-DECISIONS/README.md`](../../02-DECISIONS/README.md)): it is marked and dated in ADR 0116
|
||||
> itself rather than left to be discovered here.
|
||||
|
||||
## The order the work actually allows
|
||||
@@ -91,12 +91,12 @@ otherwise would put two beds where they cannot run.** Three edges decide it:
|
||||
So step 1's bed proves *the server, from genesis, configured* — not a mesh living on it. The full
|
||||
genesis bed is step 4's, where it can first run.
|
||||
|
||||
> **This corrected the record too.** ADR 0115 first attributed "a mesh raised on NATS from genesis"
|
||||
> **This corrected the record too.** ADR 0116 first attributed "a mesh raised on NATS from genesis"
|
||||
> to step 1. That bed cannot run until the links exist, and a step whose proof cannot run is the
|
||||
> exact failure the record was written to prevent — so step 1 now ends at the server standing,
|
||||
> correctly configured and carrying nothing, and the full bed is named under step 4. The five
|
||||
> steps, their names, their order and the single rollout are unchanged; only where two beds run has
|
||||
> moved. Marked and dated in ADR 0115 as a progressive insight, with what the record said before.
|
||||
> moved. Marked and dated in ADR 0116 as a progressive insight, with what the record said before.
|
||||
|
||||
```
|
||||
step 1 module, genesis places it ──┐
|
||||
|
||||
@@ -34,10 +34,10 @@ document is written and this one's status becomes `implemented`.
|
||||
| [`22-the-work-ahead.md`](22-the-work-ahead.md) | Everything decided and not yet built, in dependency order, each phase ending at a run | [ADR 0074](../../02-DECISIONS/0074-the-wire-is-specified-not-the-types.md), [ADR 0075](../../02-DECISIONS/0075-two-stores-and-which-provides-what.md), [ADR 0014](../../02-DECISIONS/0014-no-npm-workspace.md) |
|
||||
| [`23-choosing-a-provider.md`](23-choosing-a-provider.md) | Which of several providers of a kind serves a consumer, and when a module carries its own instead | [ADR 0084](../../02-DECISIONS/0084-which-provider-serves-a-consumer.md), [ADR 0027](../../02-DECISIONS/0027-a-provision-names-what-the-consumer-is-coupled-to.md) |
|
||||
| [`24-the-secrets-vault.md`](24-the-secrets-vault.md) | The module that owns a secret — a `secret` provision, and the boundary of what it owns | [ADR 0085](../../02-DECISIONS/0085-a-secret-is-a-provision.md), [ADR 0031](../../02-DECISIONS/0031-the-control-plane-authenticates-nobody.md), [ADR 0048](../../02-DECISIONS/0048-a-provider-creates-the-credential-the-mesh-minted.md) |
|
||||
| [`25-the-bus-on-nats.md`](25-the-bus-on-nats.md) | **Proposed.** The architecture of the mesh's bus on NATS: what rides which subject under which guarantee and whose account, how a node joins, how a person reaches a tool, and how the mesh moves from the bus it has | [ADR 0106](../../02-DECISIONS/0106-the-bus-is-nats.md), [ADR 0115](../../02-DECISIONS/0115-the-bus-is-built-in-five-steps.md), [ADR 0043](../../02-DECISIONS/0043-a-module-broker-account-is-scoped-by-emits-and-consumes.md), [ADR 0083](../../02-DECISIONS/0083-one-push-leaves-the-mesh-consistent.md) |
|
||||
| [`25-the-bus-on-nats.md`](25-the-bus-on-nats.md) | **Proposed.** The architecture of the mesh's bus on NATS: what rides which subject under which guarantee and whose account, how a node joins, how a person reaches a tool, and how the mesh moves from the bus it has | [ADR 0106](../../02-DECISIONS/0106-the-bus-is-nats.md), [ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md), [ADR 0043](../../02-DECISIONS/0043-a-module-broker-account-is-scoped-by-emits-and-consumes.md), [ADR 0083](../../02-DECISIONS/0083-one-push-leaves-the-mesh-consistent.md) |
|
||||
| [`26-the-seats.md`](26-the-seats.md) | **Proposed.** What a mesh can have one of, who fills each, and a seat's holder answering for the provision it delivers — including the `git` seat a build's source can live on | [ADR 0110](../../02-DECISIONS/0110-a-seat-is-a-module-assignment-from-a-closed-set.md), [ADR 0111](../../02-DECISIONS/0111-a-build-source-is-on-the-git-seat-or-external.md), [ADR 0109](../../02-DECISIONS/0109-a-package-registry-seat-is-one-per-ecosystem.md) |
|
||||
| [`27-a-module-requires-the-mesh-resolves.md`](27-a-module-requires-the-mesh-resolves.md) | **Proposed.** One concept for everything a module needs: a requirement with a contract, answered by one of four kinds of provider, resolved at assignment or refused. Retires settings, placeholders, facts and paths in definitions | [ADR 0112](../../02-DECISIONS/0112-a-module-definition-names-no-node-mesh-or-path.md), [ADR 0113](../../02-DECISIONS/0113-the-vault-makes-every-secret.md), [ADR 0114](../../02-DECISIONS/0114-a-shared-credential-rotates-over-two-credentials.md), [ADR 0110](../../02-DECISIONS/0110-a-seat-is-a-module-assignment-from-a-closed-set.md) |
|
||||
| [`28-building-the-bus.md`](28-building-the-bus.md) | **Proposed.** The five steps of the bus work in the order their dependencies allow, each ending at a bed — with the surface measured, so no step's size is a guess | [ADR 0115](../../02-DECISIONS/0115-the-bus-is-built-in-five-steps.md), [ADR 0106](../../02-DECISIONS/0106-the-bus-is-nats.md), [ADR 0074](../../02-DECISIONS/0074-the-wire-is-specified-not-the-types.md) |
|
||||
| [`28-building-the-bus.md`](28-building-the-bus.md) | **Proposed.** The five steps of the bus work in the order their dependencies allow, each ending at a bed — with the surface measured, so no step's size is a guess | [ADR 0116](../../02-DECISIONS/0116-the-bus-is-built-in-five-steps.md), [ADR 0106](../../02-DECISIONS/0106-the-bus-is-nats.md), [ADR 0074](../../02-DECISIONS/0074-the-wire-is-specified-not-the-types.md) |
|
||||
|
||||
## Not yet written
|
||||
|
||||
|
||||
Reference in New Issue
Block a user