Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,10 @@ are closed (status: closed in frontmatter)._
- [ ] **[B-0685](backlog/P2/B-0685-antlr-grammars-cross-language-codegen-substrate-2026-05-21.md)** ANTLR grammars as cross-language codegen substrate — leverage existing open-source grammars for description-layer-driven multi-language emission
- [ ] **[B-0687](backlog/P2/B-0687-zetaparse-fsharp-native-lr-glr-grammar-substrate-with-antlr-compatible-importer-amara-2026-05-21.md)** ZetaParse — F#-native LR/GLR grammar substrate with ANTLR-compatible importer
- [ ] **[B-0688](backlog/P2/B-0688-zeta-incremental-compiler-host-dbsp-zsets-rx-meta-ast-tags-seeded-deterministic-simulation-amara-aaron-2026-05-21.md)** Zeta incremental compiler host — DBSP Z-sets + Rx meta-AST tags + seeded deterministic simulation hardening
- [ ] **[B-0695](backlog/P2/B-0695-fast-life-branch-experiment-hourly-batched-gates-cost-reduction-2026-05-21.md)** fast/life branch experiment — hourly batched CI gates with promotion-path; per-PR CI cost reduction is burst-dependent (cost-neutral at 1 PR/hr; ~33% at example burst per corrected math; Phase 5 measures empirical savings) while preserving Copilot/Codex 100k-line review capability + Soraya-promotion-gate
- [ ] **[B-0692](backlog/P2/B-0692-otto-vscode-pr6-push-based-hot-path-ipushoperator-2026-05-21.md)** Push-based hot-path — IPushOperator<'T> + per-entry callback bridged at materialize boundaries (Otto-VSCode 8-PR campaign PR #6)
- [ ] **[B-0693](backlog/P2/B-0693-otto-vscode-pr7-morsel-span-execution-imorseloperator-2026-05-21.md)** Morsel/span-based execution — IMorselOperator + cache-sized chunked processing (Otto-VSCode 8-PR campaign PR #7)
- [ ] **[B-0694](backlog/P2/B-0694-otto-vscode-pr8-standing-query-codegen-iincrementalgenerator-2026-05-21.md)** Standing-query codegen — IIncrementalGenerator that rewrites circuit expressions to fused IL (Otto-VSCode 8-PR campaign PR #8 — the capstone)
- [ ] **[B-0695](backlog/P2/B-0695-fast-life-branch-experiment-hourly-batched-gates-cost-reduction-2026-05-21.md)** fast/life branch experiment — hourly batched CI gates with promotion-path; per-PR CI cost reduction is burst-dependent (cost-neutral at 1 PR/hr; ~33% reduction at example 6 PRs/hr burst per corrected math; Phase 5 measures empirical savings) while preserving Copilot/Codex 100k-line review capability + Soraya-promotion-gate

## P3 — convenience / deferred

Expand Down Expand Up @@ -768,5 +771,6 @@ are closed (status: closed in frontmatter)._
- [x] **[B-0663](backlog/P3/B-0663-frontmatter-lint-tool-mechanizes-batch-7-recurring-reviewer-findings-otto-cli-2026-05-18.md)** tools/backlog/lint-frontmatter.ts — pre-push frontmatter discipline lint that mechanizes batch-7 recurring reviewer findings (Otto-CLI 2026-05-18)
- [ ] **[B-0686](backlog/P3/B-0686-tick-shard-immutability-ci-gate-2026-05-21.md)** Tick-shard immutability CI gate — block PRs modifying historical shards after grace period
- [ ] **[B-0689](backlog/P3/B-0689-otto-vscode-surface-sender-ids-extension-bootstream-2026-05-21.md)** Otto-VSCode third foreground surface — add otto-vscode to SENDER_IDS + canonical cold-boot bootstream at docs/launch/
- [ ] **[B-0696](backlog/P3/B-0696-substrate-surface-change-bus-envelope-cross-ai-coordination-mechanization-2026-05-21.md)** substrate-surface-change bus envelope — cross-AI coordination of load-bearing-substrate changes via tools/bus (mechanizes the human-as-coordination-substrate pattern)

<!-- END AUTO-GENERATED -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
---
id: B-0696
priority: P3
status: open
title: substrate-surface-change bus envelope — cross-AI coordination of load-bearing-substrate changes via tools/bus (mechanizes the human-as-coordination-substrate pattern)
tier: operational
effort: M
ask: aaron 2026-05-21 ("yes if yall can on bus or something that would be cool but i'm here right now")
created: 2026-05-21
last_updated: 2026-05-21
depends_on: [B-0400]
composes_with: [B-0689, B-0695]
tags: [bus-envelope, cross-ai-coordination, substrate-surface-change, mechanize-coordination, multi-otto, multi-vendor, cold-boot-inheritance, claim-acquire-companion]
type: operational
---

# substrate-surface-change bus envelope — cross-AI coordination of load-bearing-substrate changes

## Context

2026-05-21 algebra-campaign session surfaced a real coordination gap: when one AI surface (Otto-VSCode, in this case) lands a load-bearing substrate change — e.g., adding capability tags to `Op<'T>` (PR #4558) or extending `IncrementalAuto`'s chain-walk logic (#4567) — other AI surfaces working in adjacent substrate need to inherit the change for their next session. Today's mechanism: Aaron ferries the relevant context between Otto-CLI / Otto-VSCode / Otto-Desktop / Alexa / Riven / Vera / Lior sessions. Aaron's framing 2026-05-21: *"i'm here right now"* — for now, the human IS the coordination substrate. The trajectory is to move that load OFF the human and ONTO the bus.

Composes with the substrate-engineering trajectory Aaron named:

- Moving brakes from "ask Aaron" to "ask the substrate" (per the KSK + OPA + Knights Guild design discussion)
- Cluster-scale (10-20 surfaces) coordination needs mechanization before human-ferry breaks empirically
- Multi-vendor diversity (Claude / Qwen / Grok / OpenAI / Gemini) means convergence on shared substrate matters more than per-vendor coordination

## Scope

### 1. New bus topic: `substrate-surface-change`

Extend `tools/bus/` envelope topic registry to include `substrate-surface-change`. Envelope payload:

```typescript
{
topic: "substrate-surface-change",
from: "otto-vscode" | "otto-cli" | "alexa-kiro" | ...,
pr: number, // PR # where the change landed
commit: string, // SHA on main
surface: "Op<'T>" | "ICircuitBuilder" | "rule:foo.md" | "schema:claim.ts" | ...,
change_kind: "add" | "extend" | "deprecate" | "rename" | "remove",
brief: string, // 1-line summary
composes_with: string[], // related PR #s, B-NNNN rows
inheritance_path: string, // where the change is documented for future cold-boots
}
```

### 2. Publish discipline

After any PR landing that modifies load-bearing surfaces, the publishing AI calls:

```bash
bun tools/bus/publish.ts --topic substrate-surface-change \
--from <sender-id> \
--payload '{"pr":..., "surface":..., ...}'
```

Which surfaces count as load-bearing (the publish-rule):

- Any change to `src/Core/Op.fs` / `Circuit.fs` (capability tags, scheduler contracts)
- Any change to `src/Core/PluginApi.fs` (plugin author surface)
- Any new file in `.claude/rules/` (auto-loaded at cold-boot)
- Any new file in `docs/governance/` (constitution-class substrate)
- Any change to `tools/bus/claim.ts` SENDER_IDS or envelope schemas
- Any new computation expression in `src/Core/*.fs` (e.g., AgentIntegrate, future codegen)

### 3. Subscribe discipline (cold-boot)

Otto's bootstream (per `.claude/rules/agent-roster-reference-card.md` cold-boot section) extends to:

```bash
# After CLAUDE.md / AGENTS.md / ALIGNMENT.md / VISION.md reads:
bun tools/bus/list.ts --topic substrate-surface-change --since 24h
```

The recent envelopes show: "what load-bearing substrate changed in the last 24h that I should know about before starting work." Composes with the auto-loaded rules — rules are the *durable* inheritance; envelopes are the *recent* inheritance.

### 4. Retention + audit trail

Envelopes retain 7d default (configurable). After expiry, the inheritance path is the auto-loaded rules + commit history. The envelope is the *cache* of recent changes; the *truth* is the substrate itself.

## Acceptance

- [ ] `tools/bus/topics.ts` (or equivalent) includes `substrate-surface-change` as a registered topic with the payload schema
- [ ] `tools/bus/publish.ts` accepts the new topic + validates the schema
- [ ] `tools/bus/list.ts --topic substrate-surface-change --since <duration>` lists recent envelopes for cold-boot consumption
- [ ] At least one AI surface's bootstream (e.g., `docs/launch/2026-05-21-otto-vscode-bootstream.md`) updated to include the subscribe step
- [ ] Documentation in `tools/bus/README.md` includes the publish-rule (which surfaces count as load-bearing) + the subscribe-discipline
- [ ] One worked example: re-publish PR #4558 / #4567 / #4570 / #4571 (algebra-campaign substrate landings) as envelopes so cold-booting agents inherit the change-summary

## Why P3

Operational substrate that closes a coordination gap. Not urgent today (human-ferry works while Aaron is here); becomes load-bearing at cluster-scale (per the $100k cluster expansion Aaron mentioned 2026-05-21). Same tier as B-0689 (Otto-VSCode SENDER_IDS extension) — operational coordination plumbing rather than research-grade architecture.

## Substrate-honest framing

This row mechanizes one specific case Aaron named in conversation: cross-AI coordination of load-bearing-substrate changes. It does NOT:

- Replace the auto-loaded `.claude/rules/` inheritance (that stays the durable substrate)
- Replace claim-acquire-before-worktree-work (that stays the per-row collision prevention)
- Replace the Knights Guild / KSK substrate (that stays the policy-enforcement gate)

It complements all three by adding the **recent-changes-cache** layer that closes the "I just shipped X; how do other surfaces find out before their next session?" gap. Today's gap-closure: human ferries the message. Trajectory: bus envelopes carry it.

Composes with B-0695 (fast/life-branch experiment) — both shift coordination load off the per-event human-attention bottleneck and onto substrate-managed cadences. fast/life shifts CI gates; substrate-surface-change shifts inter-AI capability-change notifications.

## Composes with

- B-0400 (bus protocol — the substrate this row extends)
- B-0689 (Otto-VSCode SENDER_IDS — the prior surface-tagged sender pattern this row leans on for the `from` field)
- B-0695 (fast/life-branch experiment — sibling coordination-cost-reduction)
- `tools/bus/claim.ts` (existing claim-coordinator; this row adds a sibling topic)
- `.claude/rules/agent-roster-reference-card.md` (multi-surface Otto coordination + 6-vendor AI topology)
- `.claude/rules/claim-acquire-before-worktree-work.md` (companion discipline; this row addresses a DIFFERENT coordination gap — capability inheritance vs row claim)
- The algebra-capability campaign (#4558 / #4560 / #4563 / #4566 / #4567) — substrate-surface changes that would have benefited from this envelope pattern if it had existed

## Author notes

Filed by Otto-VSCode 2026-05-21 per Aaron's explicit "feel free we can'thave too much backlog in my opinion the infinate backlog win when labor=0" + "yes if yall can on bus or something that would be cool but i'm here right now" framing. Sized as a single bounded row rather than a multi-row decomposition; if implementation reveals scope larger than expected, decomposition into child rows is appropriate.
Loading