Issue 1966, a release before design 47's milestone G, on the operator's word (Telegram 2026-11-09 19:38 UTC, "Reader first").
G extends the seat-definition format: an event's dotted name and subject with parts, keep last per subject, an event's own stream with age and cap, and a seat's acting rules (acts). The running manifest validator refuses fields it does not know, so ADR 0633 §6's trunk case would fail G's check. This teaches go/seatdef and go/catalogue the fields first; the running indexer reads them once rebuilt on it. A definition without the new fields reads as before; each new field is validated.
Quick fix: G's check builds only at the group's heads (against ADR 0633 §6). Thorough fix (chosen): the reader learns the format ahead, so the trunk case judges G as the rules say. The kind (a format extension the running reader cannot read) was met before (finding F10).
Tests: rows in seatdef_test.go and catalogue/delivery_seat_test.go; all 53 of G's seat definitions parse; each check removed makes cases fail.
Reviewed-by: mesh-code-reviewer@shanks at 9e61f75d3b
Issue 1966, a release before design 47's milestone G, on the operator's word (Telegram 2026-11-09 19:38 UTC, "Reader first").
G extends the seat-definition format: an event's dotted name and subject with parts, `keep` last per subject, an event's own stream with age and cap, and a seat's acting rules (`acts`). The running manifest validator refuses fields it does not know, so ADR 0633 §6's trunk case would fail G's check. This teaches go/seatdef and go/catalogue the fields first; the running indexer reads them once rebuilt on it. A definition without the new fields reads as before; each new field is validated.
Quick fix: G's check builds only at the group's heads (against ADR 0633 §6). Thorough fix (chosen): the reader learns the format ahead, so the trunk case judges G as the rules say. The kind (a format extension the running reader cannot read) was met before (finding F10).
Tests: rows in seatdef_test.go and catalogue/delivery_seat_test.go; all 53 of G's seat definitions parse; each check removed makes cases fail.
Reviewed-by: mesh-code-reviewer@shanks at 9e61f75d3b46703998b255bc24c0ce9b9ad41d31
https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The seat git's events (pull.updated, forge.status) and design 47's events with parts
(owed.<repository>.<number>, running.<node>.<module>, milestone.<milestone>.asked) could not be
written in a definition: an event's name was one word and its subject the name. An event now takes
dotted words and an optional subject whose words are its name with parts among them; the seat list
says it by its subject with * for each part, so a consumer naming it is heard as the seat's.
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The node-engine's running.<node>.<module> is kept last per subject with no age limit, which the shared events stream cannot say; the reader takes keep last-per-subject.
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
The seat mesh-delivery's and mesh-delivery-checker's owed events are kept on each owner's stream owed, 7 days and at
most 64 MiB (design 47, What the gate owes the forge); the format could only keep an event last per subject.
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
A definition carrying acts was refused as an unknown field by every reader (design 47, What ADR 0656 leaves to this
design). seatdef reads acts at either grain: each rule's step one of the seven, on every or a language, a bound as a
duration, one step on one language once; ActsOn and Wait give a rule's match and its bound, the step's default when it
names none. W1.2: the node-engine copy follows mesh-contracts a6c5eaa6 (its compose rule).
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Deliverynovox/mesh-sdk@9e61f75d3b46 — merged since 2026-11-09T20:01:56Z
Source — source.main moved to novox/mesh-sdk@fb2c601303. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-09 19:47 (new) → proposed (announced): novox/mesh-sdk#178's head announced
2026-11-09 19:47 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-09 20:01 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@9e61f75d3b46` — **merged** since 2026-11-09T20:01:56Z
**Source** — source.main moved to novox/mesh-sdk@fb2c601303d2. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-09 19:47 (new) → proposed (announced): novox/mesh-sdk#178's head announced
- 2026-11-09 19:47 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-09 20:01 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.
Issue 1966, a release before design 47's milestone G, on the operator's word (Telegram 2026-11-09 19:38 UTC, "Reader first").
G extends the seat-definition format: an event's dotted name and subject with parts,
keeplast per subject, an event's own stream with age and cap, and a seat's acting rules (acts). The running manifest validator refuses fields it does not know, so ADR 0633 §6's trunk case would fail G's check. This teaches go/seatdef and go/catalogue the fields first; the running indexer reads them once rebuilt on it. A definition without the new fields reads as before; each new field is validated.Quick fix: G's check builds only at the group's heads (against ADR 0633 §6). Thorough fix (chosen): the reader learns the format ahead, so the trunk case judges G as the rules say. The kind (a format extension the running reader cannot read) was met before (finding F10).
Tests: rows in seatdef_test.go and catalogue/delivery_seat_test.go; all 53 of G's seat definitions parse; each check removed makes cases fail.
Reviewed-by: mesh-code-reviewer@shanks at
9e61f75d3bhttps://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
Delivery
novox/mesh-sdk@9e61f75d3b46— merged since 2026-11-09T20:01:56ZSource — source.main moved to novox/mesh-sdk@fb2c601303. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.