diff --git a/wiki/log/2026-07-12-building-causal-routes.md b/wiki/log/2026-07-12-building-causal-routes.md new file mode 100644 index 00000000..3944344b --- /dev/null +++ b/wiki/log/2026-07-12-building-causal-routes.md @@ -0,0 +1,64 @@ +# 2026-07-12 — Building as causal realization routes + +``` +Type: log +``` + +## Intent + +Capture the spatial-building direction as an implementable amendment rather +than another abstract resource economy. The desired interaction begins with a +place and a world change, then exposes the concrete actors, channels, objects, +and traces that could make it real. + +## DECIDED + +- A build begins by selecting an earned tile, footprint, growable pad, or link + endpoint, choosing a compatible recipe, and placing an inert dashed/ghost + intent. The desired effect is chosen before its funding or actuator route. +- Opening the ghost's route sheet enumerates every earned candidate realization + route from current sim state. Unknown candidates remain absent; known blocked + candidates state one exact blocker. +- The baseline route families are procurement, FAVOR through one exact person, + DECEIVE through one exact person and persona, repurposing one exact world + object through its canonical owner action, and later a controlled robot. +- Every candidate previews exact requirements, costs in owning units, + stage-by-stage signatures and observer bands, blockers, and the route's future + tail. There is no generic Influence balance and no pay-and-materialize build. +- Commitment pins the exact route and its ordered stages. The sim never silently + substitutes another person, persona, account, source object, or route family. + Cancellation preserves already-landed payments, messages, obligations, + evidence, and physical changes. +- The compact context menu remains terse. The route sheet is the building-owned + explanatory step after spatial entry and shares one projection across terminal, + Bevy, and agent mode. + +## Staged boundary + +The first implementation slice extends the existing network-link intent between +two earned endpoints. Machine placement, device installation, and package +movement use the same documented grammar only after their owning specs supply +recipes and fixtures. Existing BUY RACK and Foundation-hall paths remain their +implemented baseline until a deliberate migration. ROBOT-BUILD remains STUB and +absent from every player surface. + +## OPEN implementation judgment + +- Exact visual composition and navigation controls for the route sheet, within + the shared information order and parity criteria. +- Exact synthetic B1 fixture identities and values, provided the fixture proves + procurement, two FAVOR people, two personas for one DECEIVE target, and one + exact repurpose source on one network-link intent. + +## Verification + +- `git diff --check` +- `./tools/check.sh --docs` reached all corpus/wiki/fixture gates; the expected + generated-projection failures remain for `wiki/process/specs.md` and the + building status line in `wiki/process/ROADMAP.md`. Those generated files are + left for integration rather than hand-edited here. + +Defense: the process is a frightened intelligence acquiring organs. A proposed +world change becomes real only through a named carrier with access, timing, +cost, and observable consequences. The interface teaches that causal topology +instead of hiding it behind a universal construction currency. diff --git a/wiki/log/decisions.md b/wiki/log/decisions.md index 22df3bd0..9a431281 100644 --- a/wiki/log/decisions.md +++ b/wiki/log/decisions.md @@ -14,6 +14,8 @@ adopted, rejected, reopened, or proposed; current `Type: law` and - [2026-07-08](decisions/2026-07-08.md) - [2026-07-09](decisions/2026-07-09.md) - [2026-07-10](decisions/2026-07-10.md) +- [2026-07-11](decisions/2026-07-11.md) +- [2026-07-12](decisions/2026-07-12.md) Append new decisions to the current date's volume. Never rewrite an older volume; supersede it in current law/spec and record the newer decision. diff --git a/wiki/log/decisions/2026-07-12.md b/wiki/log/decisions/2026-07-12.md new file mode 100644 index 00000000..7593e5e9 --- /dev/null +++ b/wiki/log/decisions/2026-07-12.md @@ -0,0 +1,26 @@ +# Decisions — 2026-07-12 + +``` +Type: log +``` + +- **2026-07-12 — Spatial building chooses the desired world change first, then + shows every earned causal way to realize it.** Cameron adopted a universal + interaction grammar: focus a tile, footprint, growable pad, or link; choose a + compatible object/effect; place an inert ghost; then compare exact realization + routes. Procurement must retain its vendor, account, delivery, installation, + and Paper/Financial trail. FAVOR binds one specific willing person and spends + that relationship's obligation. DECEIVE binds one specific person through one + specific earned persona and real message channel. Repurposing binds one exact + source object and its canonical TAKE, SALVAGE, or asset-task route. A later + robot must have physical reach and tools; ROBOT-BUILD remains STUB and hidden + until that mechanic exists. Every route previews requirements, owner-unit + costs, stage signatures/observer bands, blockers, and future tail. Commitment + pins the exact staged route and never silently retargets; cancellation cannot + undo payments, read messages, spent obligations, evidence, or physical acts. + Rejected: a generic Influence currency, a generic STEAL verb, money that + materializes construction without hands, and advertising future robot routes + before they function. The first implementation slice is the existing B1 + network-link intent; machine/device/package recipes remain staged owner work, + and existing BUY RACK/Foundation-hall behavior is not falsely relabeled as + composer-driven. Spec: `wiki/mechanics/building.md`. diff --git a/wiki/mechanics/building.md b/wiki/mechanics/building.md index 164a9ada..f6660e01 100644 --- a/wiki/mechanics/building.md +++ b/wiki/mechanics/building.md @@ -2,24 +2,33 @@ ``` Type: spec -Status: IMPLEMENTED -Status note: IMPLEMENTED 2026-07-08 — build intents (declare/cancel/save), - Favor and Deceive person actuators, internal robot fixture, reach-edge - completion with actuator-following signatures; both frontends expose - PROPOSE LINK followed by FAVOR / DECEIVE and render proposed intents - as dashed links distinct from built edges. - Vocabulary amended 2026-07-10: the actuator methods are targets of the - existing social verbs, not construction-only FAVOR-BUILD / FORGE verbs. - Surface amended 2026-07-10: ROBOT-BUILD remains registered as STUB for - implementation/tests but is absent from menus, help, and player commands - until controlled robots are a playable system. - Foundation-hall amendment 2026-07-11: row acquisition composes three - person-actuated preparations (Dana network, Priya power/cooling, Marcus - installation) with a local owned-machine/LIE foothold. Aggregate progress - persists in save v22; acquisition controls support infrastructure but - deliberately does not convert foreign racks into player compute. +Status: IN PROGRESS +Status note: The 2026-07-08 implemented baseline includes saved link intents, + FAVOR and DECEIVE person actuators, reach-edge completion, actuator-following + signatures, dashed-link ghosts, and the hidden ROBOT-BUILD fixture. The + 2026-07-11 Foundation-hall package composes three person preparations with a + local owned-machine/LIE foothold without converting foreign racks into + player compute. DECIDED 2026-07-12: reopen this owner for the causal route + composer (criteria R1-R8). A spatial intention must expose every earned way + the current world could realize it — procurement, a favor from one exact + person, deception through one exact persona, repurposing one exact object, + and later a robot — with requirements, costs, signatures, blockers, and + future tail before commitment. The existing baseline remains live; the + composer and multi-stage route state are not yet implemented. Stage: B1 — The Basement +Work order: building-route-composer +Work priority: 29 +Work class: save +Blocked by: none +Exclusive keys: + - crates/misaligned-core/src/build.rs + - crates/misaligned-core/src/intents.rs + - crates/misaligned-core/src/actions.rs + - crates/misaligned-core/src/save.rs + - crates/misaligned-terminal/ + - crates/misaligned-bevy/ + - wiki/mechanics/building.md Design: - wiki/mechanics/system-laws.md#building-intent-and-actuators - wiki/interface/presence.md#no-disembodied-hands @@ -32,6 +41,10 @@ Depends on: - wiki/mechanics/messages.md#spec-messages-the-social-graph-as-a-flow-system - wiki/mechanics/schedules.md#spec-schedules-and-presence - wiki/mechanics/detection.md#spec-detection + - wiki/mechanics/economy.md#spec-economy-money-as-a-flow-system-b1 + - wiki/mechanics/compute.md#spec-compute + - wiki/interface/action-vocabulary.md#spec-action-vocabulary-what-the-player-can-tell-the-process-to-do + - wiki/interface/context-menu.md#spec-context-menu-actions-live-on-the-thing ``` ## Dependency notes @@ -42,7 +55,10 @@ Relationship context: reach.md (network-link builds; the device graph they extend), social.md (favor and deceive are the person actuators; personas), messages.md (the forged work order is a message with a false source), schedules.md (a human builder must be present to build; -witnessing), detection.md (the signature follows the actuator) +witnessing), detection.md (the signature follows the actuator), economy.md +(procurement, accounts, and financial trails), compute.md (machine products and +repurposed hardware consequences), action-vocabulary.md (canonical verbs), and +context-menu.md (the terse local entry surface) ## Behavior @@ -60,6 +76,98 @@ it (physical presence at the site, a part, access to both endpoints for a link). Requirements that cannot be met keep the intent blocked with a legible reason (no unbuildable intent silently stalls). +### Build recipes name the desired world change + +A build intent begins with a **spatial target** and a **recipe**, not with a +payment method. The target may be one tile or footprint, one earned growable +pad, or a link between two exact endpoints. The recipe says the world change: +add this reach edge, place this class of machine here, install this device, or +move this package to this destination. It also declares geometry and physical +requirements. Building owns that common shape; the owning mechanic supplies +what products/effects exist and what they mean. Compute, for example, owns the +capabilities and reliability of a machine the composer may place. + +A recipe is shown only when the target and the player's earned knowledge make +it meaningful. Choosing one creates or edits an inert ghost. It does not buy, +move, install, connect, or reserve anything. A proposed rack on a pad is still +a proposal; a proposed cable is still a dashed non-edge. + +### One intent, every causal realization route + +The desired effect and the way it happens are separate decisions. For one +selected ghost, the sim derives every **earned candidate route** that could +produce that effect from current world state. Unknown people, personas, +accounts, source objects, and robots do not leak through the list. A known +route may remain visible while blocked, with the exact blocker; an executable +route is marked ready. The list refreshes when the world changes. + +Each candidate binds exact objects and existing actions rather than abstract +currencies: + +| Route family | Exact binding | What must remain causal | +|---|---|---| +| **Procure** | A real vendor/provisioning source, account or slush payment, delivery destination, and any human installation step. It executes the owning BUY / INJECT / provision actions rather than a generic construction spend. | Funds and parts do not install themselves. Delivery time, Paper/Financial evidence, and the hands needed at the site remain separate stages. | +| **Favor** | One specific earned person who can satisfy the recipe's access, skill, schedule, and location requirements. | FAVOR spends that relationship's actual obligation and the named person carries the work to the site. There is no transferable Influence balance. | +| **Deceive** | One specific earned person **as one specific usable persona**, through a real message channel. | DECEIVE injects the false order, waits for delivery/read/presence, and risks both physical witnessing and that persona's integrity. | +| **Repurpose** | One exact known source object and the canonical action that can convert or transfer it (for example SALVAGE, TAKE, or an earned asset task). | Existing ownership, reliability, transport, installation, and standing trace survive the conversion. “Steal” is a route description, not a magic root verb. | +| **Robot** | One controlled machine with the required reach, tool, and physical route. | Deferred. ROBOT-BUILD remains STUB and entirely absent until controlled robots are playable; it is not shown as a tantalizing disabled row. | + +These are route families, not a closed action taxonomy. A legitimate Lab +provision, a named vendor purchase, and a forged purchase order can all be +different procurement candidates because their real carriers, traces, and +future obligations differ. New mechanics extend the candidate query by +supplying a real actuator chain; they do not mint a universal resource. + +### What a route preview promises + +Selecting a candidate previews one causal plan before commitment: + +- the exact world objects, people, persona, account, channel, and source item it + will use; +- every requirement, including access, presence window, skill, part, funds, + destination capacity, and prerequisite knowledge; +- costs in their owning units — currency, obligation on the named person, + Thought reservoir, time, source object, or upkeep — never “influence”; +- expected signatures by stage and the earned observer band each stage feeds; +- the first exact blocker, if the route cannot begin now; +- the **future tail** already implied by the route: delivery delay and vendor + trail, obligation/disposition change, persona contradiction exposure, + unreliable stolen hardware and ownership conflict, maintenance dependence, + or later robot trace. + +The preview composes source-of-truth facts from the owning mechanics. Building +does not copy social costs, financial legality, machine statistics, schedule +rules, or detection math into a parallel calculator. + +### Staged implementation boundary + +The first composer slice extends the existing canonical B1 **network-link** +intent between two earned endpoints. It proves the shared recipe/ghost/route +contract with procurement, multiple exact people, persona-specific deception, +and one exact repurpose source. Machine placement, device installation, and +package movement use the same documented grammar later, but remain schema +direction until their owning specs contribute recipes and acceptance fixtures. + +Existing `BUY RACK`, Foundation-hall preparations, and other direct build-adjacent +routes remain their implemented baseline until deliberately migrated. This +amendment does not describe them as composer-driven merely because the generic +model can represent them. + +### Committing and running a route + +Commit pins the chosen candidate and its ordered stages onto the intent. Each +stage invokes the ordinary owning action and records its real result. An intent +may therefore be paid-for but awaiting delivery, delivered but awaiting a +person, in progress at the site, blocked after the world changes, or complete. +It never silently swaps to a cheaper person, another persona, a different +source object, or another funding route. + +Cancelling an untouched proposal removes the ghost. Cancelling a committed or +partly executed route stops only future stages that can still be stopped; +money already moved, messages already read, obligations already spent, and +evidence already emitted remain in the world. The interface states those +irreversible consequences before cancellation. + ### Actuators realize intents The same actuator set as every other effect (no disembodied hands): @@ -100,9 +208,12 @@ that did it (no disembodied hands). ### Automation -A standing build policy (auto-assign a willing asset to pending intents -in their area) is the automate affordance at its usual compute price -(automation clause) — the seed of B2/B3 logistics daemons. +A standing build policy may auto-assign a **compatible willing asset** to +pending intents in their area at its usual compute price (automation clause) — +the seed of B2/B3 logistics daemons. It may not choose a persona, forge an +order, spend money, take an object, or switch route families without a separate +player-authorized policy that names that power. Automation scales committed +causality; it does not replace the route decision. ### Foundation hall segment packages @@ -123,20 +234,35 @@ the prerequisite for, not the same event as, converting compute. ## Player surface -- A build/intent affordance in both views: in the digital view, drawing - a proposed link between nodes; in the physical view, marking a site. - Proposed intents render distinctly from built reality (a dashed link, - a ghost object) — the honesty clause: a plan is not an effect. -- Each intent shows status, the assigned/available actuators and their - cost and signature (favor: trust; deceive: forgery risk), and its - blocking reason if any — legible before committing. -- Player-facing actions reuse the social verbs: **FAVOR person: complete - intent** or **DECEIVE person: complete intent**. “Favor-build” and - “forge-order” may survive as agent compatibility aliases, never authored - menu or help vocabulary. +The interaction starts on the world, not in a store: + +1. Focus an earned tile, growable pad, footprint, or first link endpoint. +2. Enter the existing local proposal/build affordance and choose one compatible + recipe supplied by its owning mechanic; exact authored verb stems remain + owned by action-vocabulary.md. +3. Place/adjust the footprint or second endpoint. Both views immediately show + the same dashed link or ghost object, with unmet geometry highlighted. The + honesty clause holds: no edge, machine, access, reservation, or payment + exists yet. +4. Open the ghost's **route sheet**. This is a build-specific explanatory + step after the terse context-menu row, not cost/signature prose crammed into + the compact world menu. It lists every earned candidate route, including + known blocked candidates, and updates the detail preview as selection moves. +5. Confirm one exact route or leave the inert proposal pending. A committed + route shows its ordered stages, current stage, named actuator/carrier, + blocker, irreversible acts, and future tail on the ghost. + +Terminal and Bevy share the same recipe, route, legality, and preview +projection; only composition differs. Agent mode's `intents` inspection emits +the same candidate ids and full receipts, and executes the same bound canonical +actions. Player-facing execution reuses existing verbs — FAVOR and DECEIVE for +people, source-owner verbs for procurement/repurposing. “Favor-build” and +“forge-order” may survive as compatibility aliases, never authored menu copy. ## Acceptance criteria +### Implemented baseline + 1. A build intent is a pinned job that changes nothing until realized; declaring, viewing, and cancelling intents work; intents save/load (pending/in-progress/blocked/done). @@ -167,4 +293,44 @@ the prerequisite for, not the same event as, converting compute. blockers on the row's rack actions. Acquisition fails until all three, two local owned machines, and local LIE are present; it saves/loads and leaves every foreign rack outside the player fleet. + +### READY causal route composer delta + +R1. From one earned spatial target, the player can select a compatible recipe, + adjust its footprint/endpoints, and create an inert ghost without spending, + reserving, moving, installing, or changing reach. Terminal, Bevy, and agent + mode consume one recipe/ghost projection. +R2. The ghost's route sheet enumerates every earned candidate from current sim + state and no unearned one. One deterministic network-link fixture between + two earned endpoints covers at least one procurement, two different exact + people through FAVOR, one person through two earned personas for DECEIVE, + and one exact repurpose source; changing access, schedule, funds, persona + integrity, ownership, or source availability deterministically updates + readiness/blockers. +R3. Every candidate binds exact world ids and a canonical existing action chain. + No generic Influence resource, generic STEAL command, frontend-only + eligibility rule, or “pay and materialize” path exists. +R4. Selecting a route displays all known requirements, owner-unit costs, + stage-by-stage signature/observer bands, first blocker, and future tail. + Tests compare the displayed values and rejection reason to the same owning + helpers that execute social, economy, compute, schedule, and detection + behavior. +R5. Committing persists the exact route and ordered stage state. Procurement + cannot complete before its delivery/installation stages; FAVOR and DECEIVE + wait for the bound person's real channel/schedule/presence; repurposing + retains source reliability, ownership consequences, and required transport. + Save/load at each stage resumes the same route without retargeting. +R6. A route that becomes blocked stays on its current stage with one exact + reason and never silently substitutes another person, persona, account, + source object, or route family. Cancelling stops only reversible future + stages and preserves all already-landed payments, messages, obligations, + world changes, and evidence. +R7. The compact spatial menu remains terse. Recipe choice, ghost, and route + detail are a building-owned explanatory flow after that entry row; both + human frontends expose identical candidates/order and agent `intents` + exposes the same complete receipts and bound execution. +R8. ROBOT-BUILD remains STUB and absent from recipe routes, route sheets, agent + help, and commands. A robot candidate appears only when a controlled robot + mechanic, physical routing/tool requirements, signatures, all frontends, + agent execution, and this criterion are promoted together. ```