Graduates research 028 (the operator, 2026-10-06: "merge it and graduate it into a decision").
ADR 0234 (accepted): the mesh tells and asks its operator over two kinded benches, channel and intake (the second sort of bench, decided here against ADR 0223), with capabilities from channel-capabilities/1; the router orders by capability, then work context, never lowering the bar; asks of six kinds with a full lifecycle; authorising asks held by the controller, proven by a TOTP code it verifies or a verified Telegram sender (a security key optional, never required); every tier completable on the away channel; no agent authorises; a desk click alone never authorises. Rejected options recorded; a "How it is checked" table.
Four resolutions the operator approved (second commit), each with its rule, rejected options, checks and build phase:
A: factor recovery: ten hashed one-time recovery codes at enrolment (each one P2, once), factor recover announced on every channel, self-check warns at three or fewer, root-local factor enrol --break-glass refused over the bus, no P2 tier before recovery codes exist.
B: operator messages are addressed (@name or thread), otherwise go to the responder (@mesh, part of the router, read verbs only); never silence; a register of agents; messages kept for agents not running, refused for unknown names.
C: machine names allowed in words; domains, addresses, paths and secrets not; references opened with detail only on private channels and the console (Telegram shows the label); refusals name the offending part to the sender.
D: only the controller's identity list makes the operator; envelopes stamped trusted from the controller, never the holder; untrusted input never answers, authorises or reaches an agent as the operator's words, and is data, not instructions.
To-be 46 (designed): seats, who counts as the operator, operator messages and the responder, asks, vocabulary with contract tests, routing and presence, references, the controller's authorise verbs, tiers and recovery, D1–D10, owners, six build phases.
To-be 45 §5 amended; ADR 0227 gains a dated mechanism note (an amendment, not a supersede).
Research 028 → graduated. Glossary: kinded bench, channel / intake, ask, operator message / input, reference.
Number 0234 taken because 0233 is reserved for the in-flight "modules declare their data" record.
Checks: records.py, index.py, cycle.py all pass.
Graduates research 028 (the operator, 2026-10-06: "merge it and graduate it into a decision").
- **ADR 0234** (accepted): the mesh tells and asks its operator over two kinded benches, `channel` and `intake` (the second sort of bench, decided here against ADR 0223), with capabilities from `channel-capabilities/1`; the router orders by capability, then work context, never lowering the bar; asks of six kinds with a full lifecycle; authorising asks held by the controller, proven by a TOTP code it verifies or a verified Telegram sender (a security key optional, never required); every tier completable on the away channel; no agent authorises; a desk click alone never authorises. Rejected options recorded; a "How it is checked" table.
- **Four resolutions the operator approved (second commit)**, each with its rule, rejected options, checks and build phase:
- A: factor recovery: ten hashed one-time recovery codes at enrolment (each one P2, once), `factor recover` announced on every channel, self-check warns at three or fewer, root-local `factor enrol --break-glass` refused over the bus, no P2 tier before recovery codes exist.
- B: operator messages are addressed (`@name` or thread), otherwise go to the responder (`@mesh`, part of the router, read verbs only); never silence; a register of agents; messages kept for agents not running, refused for unknown names.
- C: machine names allowed in words; domains, addresses, paths and secrets not; references opened with `detail` only on `private` channels and the console (Telegram shows the label); refusals name the offending part to the sender.
- D: only the controller's identity list makes the operator; envelopes stamped `trusted` from the controller, never the holder; untrusted input never answers, authorises or reaches an agent as the operator's words, and is data, not instructions.
- **To-be 46** (designed): seats, who counts as the operator, operator messages and the responder, asks, vocabulary with contract tests, routing and presence, references, the controller's authorise verbs, tiers and recovery, D1–D10, owners, six build phases.
- **To-be 45 §5** amended; **ADR 0227** gains a dated mechanism note (an amendment, not a supersede).
- Research 028 → graduated. Glossary: kinded bench, channel / intake, ask, operator message / input, reference.
Number 0234 taken because 0233 is reserved for the in-flight "modules declare their data" record.
Checks: records.py, index.py, cycle.py all pass.
Research 028 graduates: the mesh needs to ask as well as tell, over
channels that are seats rather than code inside one notifier, and an
action a person must approve cannot rest on a desk click an agent can
forge. TOTP verified by the controller is the proof; a key stays optional.
Amends to-be 45 section 5 as ADR 0227 left it to.
The operator found four gaps that would bite on first use: a lost phone
locked the mesh's only person out, an operator message had no addressee,
asks could not name the specifics they need, and the operator was a
holder's flag. Each is now a rule with its check and its build phase.
Deliverynovox/hq@3f62e2bcc120 — held since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/hq#140 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@3f62e2bcc120` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/hq#140 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `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.
Graduates research 028 (the operator, 2026-10-06: "merge it and graduate it into a decision").
channelandintake(the second sort of bench, decided here against ADR 0223), with capabilities fromchannel-capabilities/1; the router orders by capability, then work context, never lowering the bar; asks of six kinds with a full lifecycle; authorising asks held by the controller, proven by a TOTP code it verifies or a verified Telegram sender (a security key optional, never required); every tier completable on the away channel; no agent authorises; a desk click alone never authorises. Rejected options recorded; a "How it is checked" table.factor recoverannounced on every channel, self-check warns at three or fewer, root-localfactor enrol --break-glassrefused over the bus, no P2 tier before recovery codes exist.@nameor thread), otherwise go to the responder (@mesh, part of the router, read verbs only); never silence; a register of agents; messages kept for agents not running, refused for unknown names.detailonly onprivatechannels and the console (Telegram shows the label); refusals name the offending part to the sender.trustedfrom the controller, never the holder; untrusted input never answers, authorises or reaches an agent as the operator's words, and is data, not instructions.Number 0234 taken because 0233 is reserved for the in-flight "modules declare their data" record.
Checks: records.py, index.py, cycle.py all pass.
Delivery
novox/hq@3f62e2bcc120— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.