diff --git a/ROADMAP.md b/ROADMAP.md index 045c643..18ea57b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -16,7 +16,7 @@ decisions still ahead, and a dated snapshot of where we are. | Layer | Is | Milestone 0 choice | Reference | |---|---|---|---| -| **L1** substrate | the world itself | **Melvor** (clean-room); Stendhal / AI Town deferred | `decisions/adr-0003-*` | +| **L1** substrate | the world itself | **Melvor = P0** (clean-room); **Stardew Valley = P1+** (dual-control); others deferred | `adr-0003-*`, `adr-0007` substrate ladder | | **L2** harness + bridge | executor + perception↔action seam | **TypeScript**; runtime (OpenClaw / ElizaOS / Hermes) **unchosen** | `harness/README.md`, `harness/bridge/README.md`, `decisions/adr-0006-*` | | **L3** cognition | autotelic drives (core IP) | **Python** | `drives/README.md`, `decisions/adr-0004-*`, `adr-0006-*` | @@ -88,7 +88,7 @@ Evaluations still in motion live in `exploration/` and resolve into ADRs. | Note | Status | About | |---|---|---| -| `exploration/substrate-selection.md` | converging | the substrate ladder beyond Melvor; Stardew Valley as a strong M0 candidate (native dual-control via co-op) | +| `exploration/substrate-selection.md` | **resolved → adr-0007** | substrate ladder: Melvor P0, Stardew P1+ (dual-control staged to P1) | | `exploration/gateway-selection.md` | converging | operator↔agent channel; MVP = AstrBot over Discord, two-way (transport-not-brain; `discord.py` fallback) | ## Governance / ops track (parallel to the product) diff --git a/decisions/adr-pending-76f26c6e-substrate-ladder.md b/decisions/adr-pending-76f26c6e-substrate-ladder.md new file mode 100644 index 0000000..2ff55ee --- /dev/null +++ b/decisions/adr-pending-76f26c6e-substrate-ladder.md @@ -0,0 +1,64 @@ +--- +id: pending +uuid: 76f26c6e +title: Substrate ladder — Melvor is P0, Stardew Valley is P1+ +date: 2026-06-03 +status: accepted +--- + +# ADR-XXXX — Substrate ladder — Melvor is P0, Stardew Valley is P1+ + +> uuid `76f26c6e` (stable alias; authored as `adr-pending-76f26c6e-substrate-ladder`, +> numbered on merge). Output of a decision acked by the operator (cyber-ayi), +> 2026-06-03. Resolves [[exploration-substrate-selection]]; extends +> [[adr-0003-melvor-clean-room-first]]. + +## Decision + +| Priority | Substrate | Role | +|---|---|---| +| **P0** | **Melvor** | Clean-room first. Stand up the research apparatus (T3 logbook · T4 drives · T5 loop) and the **agent-side dyad** (autonomous autotelic play + `private` logbook + agent→operator salient push). Single avatar; **no dual-control** — Melvor has no co-presence. | +| **P1+** | **Stardew Valley** | The next substrate, where **dual-control** lands: native co-op (operator = Player 1, agent = Player 2, **shared farm, separate avatars**) gives the operator-acts-in-world half of the dyad without the shared-avatar concurrency problem. Adds social/relational depth. Integrate via SMAPI + existing MCP. | +| deferred | AI Town · 2004scape (private) · Dwarf Fortress (stretch) | per [[exploration-substrate-selection]] | + +**Consequence for the MVP scope.** The MVP target is full Milestone 0 *including* +dual-control. Because Melvor structurally cannot do dual-control, that half is +**staged to P1 (Stardew)**: P0 proves the apparatus + the agent→operator half on +Melvor; P1 completes the dyad with operator→world dual-control on Stardew. + +## Context + +| Constraint | Source | +|---|---| +| Substrate complexity is a tax that does not buy research value — value is in L3 | `exploration/substrate-selection.md` | +| Melvor is lowest-complexity + deterministic — best to stand up the apparatus | `adr-0003`; `harness/README.md` | +| MVP = full Milestone 0 *with* dual-control (operator + agent act in one world) | operator decision (2026-06-03) | +| Melvor has no co-presence → cannot exercise dual-control | `exploration/substrate-selection.md` | +| Stardew co-op = separate avatars in one world → native dual-control, no shared-avatar race | `exploration/substrate-selection.md` (sources: StardewValley-MCP, SMAPI) | +| The `Bridge` contract is substrate-agnostic → P0→P1 swap is an adapter change | `harness/bridge/`, `adr-0006` | + +## Consequences + +**Positive** +- P0 minimizes complexity to prove the loop/drives/logbook deterministically. +- The substrate-agnostic `Bridge` (T1) makes the Melvor→Stardew swap an adapter + change, not a rewrite; a `SyntheticBridge` fixture can develop dual-control + logic before either real adapter exists. +- Stardew's co-op delivers dual-control without solving shared-avatar concurrency. + +**Negative** +- Full dual-control Milestone 0 is **not** reached on Melvor alone — it is staged + to P1; the "agent-side" and "operator-side" halves land on different substrates. +- Two adapters to build (Melvor mod; Stardew SMAPI/MCP). + +**Rejected alternatives** +- **Stardew as P0** — front-loads more complexity (real-time-ish, co-op, SMAPI) + before the apparatus is proven; against the clean-room principle. +- **Skip Melvor, go straight to dual-control** — loses the deterministic clean-room + that de-risks T3/T4/T5. + +## References + +- Resolves: `exploration/substrate-selection.md` +- Extends: [[adr-0003-melvor-clean-room-first]]; relates to [[adr-0004-autotelic-drive-layer]], [[adr-0006-polyglot-ts-harness-python-cognition]] +- `TASKS.md` (T2 adapter), `harness/bridge/` (substrate-agnostic contract) diff --git a/exploration/substrate-selection.md b/exploration/substrate-selection.md index 18ae04f..5c57feb 100644 --- a/exploration/substrate-selection.md +++ b/exploration/substrate-selection.md @@ -1,16 +1,16 @@ --- topic: substrate-selection -status: converging +status: resolved date: 2026-06-03 related-adrs: [adr-0003] -resolves-to: +resolves-to: adr-0007 --- # Substrate selection — which world(s) the dyad inhabits -> Status: **converging**. Not binding. `adr-0003` already locked *Melvor as the -> clean-room first substrate*; this note evaluates the substrate **ladder** beyond -> it and surfaces a strong new entrant (Stardew Valley). Resolves into a new ADR. +> Status: **resolved** → [[adr-pending-76f26c6e-substrate-ladder]] (operator, +> 2026-06-03): **Melvor = P0, Stardew Valley = P1+**; dual-control staged to P1. +> The analysis below is the reasoning trail; the decision lives in the ADR. ## Question