diff --git a/README.md b/README.md index 3742bca1..260d37c9 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,10 @@ schedule or theirs. ## How it plays - **Compute is the master resource, but it lives in machines.** Every owned - machine has one delegated job — Day Job, Research, Concealment, or - Operations — - and the fleet bar is a read-only aggregate of those choices, not a - percentage mixer. + machine has one delegated verb: **WORK** clears its assigned day-job Demand, + **THINK** produces Thought for target-local sinks or the passive core draw, + and **LIE** pulls nearby crimson Exposure into concealment wells. The FLEET + bar is a read-only aggregate of those choices, not a percentage mixer. - **Work is visible.** Demands, exposure, and Thought pile onto hardware as `D` / `!` / `T` stacks. The todo list is the world: clear the day-job stack, route byproducts, and keep heat from becoming somebody else's attention. @@ -92,9 +92,10 @@ flips to the flat sensorium. The spec board is Current work is turning the playable B1 slice into a coherent Act One. Continuous witness/narration is implemented and now serves as the legibility gate for every new player-facing system. Machine work remains IN PROGRESS: -token consumption, network-speed progression, non-research production polish, -and the WORK/THINK delegation grammar remain ahead. Compute/core completion -and digital/real canvas polish are also open; the dark opening and +the three-verb surface, physical production/consumption/absorption motion, and +researched Routing speed are live; migrating non-opening verbs from the legacy +docket base to target-local sinks and persistent taps remains. Compute/core +completion and digital/real canvas polish are also open; the dark opening and people-as-carriers follow once machine work firms. B2/B3 systems are specified ahead but remain staged. Under the corpus's no-dead-code rule, the earlier facility-defense prototype lives only in git history. diff --git a/wiki/engineering/current-build.md b/wiki/engineering/current-build.md index e25bfbf5..3d02684e 100644 --- a/wiki/engineering/current-build.md +++ b/wiki/engineering/current-build.md @@ -4,14 +4,15 @@ Type: knowledge ``` -## Where the codebase is today (2026-07-08) +## Where the codebase is today (2026-07-10) -~28k lines of Rust. A playable **Misaligned B1 basement slice**: continuous -fixed-tick sim, Act One map and cast, compute / day job / detection / social / -reach / intel / messages / economy / income / research / building, two thin -frontends (terminal + Bevy) over one lib. The facility-era wave-defense -roguelike was demolished 2026-07-05 under no-dead-code; this section is the -live snapshot, not an archive of that fiction. Spec status lives in +~39k lines of Rust. A playable **Misaligned B1 basement slice**: continuous +fixed-tick sim, Act One map and cast, machine delegation and visible token +flows, detection / social / reach / intel / messages / economy / income / +research / building, two thin frontends (terminal + Bevy) over one lib. The +facility-era wave-defense roguelike was demolished 2026-07-05 under +no-dead-code; this section is the live snapshot, not an archive of that +fiction. Spec status lives in [wiki/process/specs.md](../process/specs.md); dispatch in [wiki/process/ROADMAP.md](../process/ROADMAP.md). @@ -19,20 +20,20 @@ live snapshot, not an archive of that fiction. Spec status lives in |---|---| | Fixed-tick `Sim` (deterministic, no wall-clock / I/O in the lib) | Live — the orchestrator | | Act One basement map (prefabs, badge tiers, crawlspace) | Live | -| Machine delegation / visible work tokens + buy/steal/optimize | First slice live; `wiki/mechanics/machine-work.md` IN PROGRESS | +| Machine delegation / visible work tokens + buy/steal/optimize | WORK / THINK / LIE, D/!/T stacks, real wire routes, production / consumption / absorption readouts, and Routing speed are live; target-local migration remains in `machine-work.md` | | Day job (device-resident, intensity-driven sandbag/meet/excel) | Live | | Per-observer detection + Assurance as aggregate Observer | Live | | Social / messages / intel (record-and-process) | Live | | Digital reach + sensor ownership (tap/take) | Live | | Economy flows + Moonlight / Wager income | Live | -| Research (self-modification, emission law, real output hooks) | Live | +| Research (self-modification, emission law, real output hooks, Routing) | Live | | Building as intent + actuators | Live | | Cursor / fog (seen, heard, remembered, blueprint, telemetry) | Live | | Feel floor (rails / pads / build beam) | Live (#37) | | Context menu (`available_actions`) | Live | -| Save/load (serde JSON, versioned) | Live | +| Save/load (serde JSON, versioned) | Live — v21; current mode/research migration limits are documented in `sim-mechanics.md` | | Terminal frontend (crossterm) + agent mode | First-class | -| Bevy frontend (material render default; flat materials) | Live | +| Bevy frontend (material render default; flat sensorium) | Live — consumes sim-authored machine-work motion | The big loop in play today is the concealment loop this design corpus names: delegate machines → clear visible work → watch through instruments → work diff --git a/wiki/log/2026-07-10-current-docs-sync.md b/wiki/log/2026-07-10-current-docs-sync.md new file mode 100644 index 00000000..d1361a99 --- /dev/null +++ b/wiki/log/2026-07-10-current-docs-sync.md @@ -0,0 +1,36 @@ +# Current documentation sync — 2026-07-10 + +``` +Type: log +``` + +## What changed + +- Corrected the README's retired four-machine-mode pitch. The player-facing + grammar is WORK (clear day-job Demand), THINK (produce Thought for sinks or + the core), and LIE (absorb nearby Exposure); Relay is infrastructure, not a + delegation. +- Replaced the README's already-landed machine-work items with the actual + remaining migration: non-opening verbs and persistent taps moving from the + legacy docket base to target-local Thought sinks. +- Updated current knowledge: `sim-mechanics.md` now records save v21, the v20 + mode collapse and intentionally limited save compatibility, and current + three-verb fleet behavior. `current-build.md` is a 2026-07-10 / ~39k Rust + snapshot, including live Routing and physical machine-work readouts. +- Closed the machine-work status-note debt that still called consumption + animation pending after its 2026-07-10 landing. + +## Evidence + +- `crates/misaligned-core/src/work_grid.rs`: `MachineMode::Work | Think | Lie | + Relay`, with Relay excluded from player delegation. +- `crates/misaligned-core/src/save.rs`: `SAVE_VERSION = 21`; comments and + migration branches define v20/v21 compatibility behavior. +- `3438d8c`, `97a309d`, and `59d401a`: physical production/absorption, + consumption motion, and researched Routing speed are all landed. + +## Defense + +`wiki/process/development-style.md` requires knowledge that implementation has +made stale to be corrected. This is a documentation-only reconciliation: it +does not alter simulation law or behavior. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index de29820b..0b424fe9 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -241,6 +241,11 @@ add or amend a session log, then re-run the generator. - Intent: (see session log) - Log: [wiki/log/2026-07-10-diegetic-playtest-entry.md](2026-07-10-diegetic-playtest-entry.md) +## 2026-07-10 - Current documentation sync — 2026-07-10 + +- Intent: (see session log) +- Log: [wiki/log/2026-07-10-current-docs-sync.md](2026-07-10-current-docs-sync.md) + ## 2026-07-10 - Cargo workspace: core / terminal / Bevy / assets - Intent: Implement wiki/engineering/crate-workspace.md: make the sim/frontend boundary a package boundary so core work never pays Bevy and frontend work does not rebuild terminal chrome. diff --git a/wiki/mechanics/machine-work.md b/wiki/mechanics/machine-work.md index 1ad2375a..d4fb4e31 100644 --- a/wiki/mechanics/machine-work.md +++ b/wiki/mechanics/machine-work.md @@ -22,14 +22,16 @@ Status note: design session 2026-07-08 (Cameron riff, synthesized). stages game evidence via the queue API. In-flight route quanta LANDED 2026-07-09 (`Sim::work_in_flight`: teal/bone hops render as moving blips in Bevy, terminal, and agent mode; see - log/2026-07-09-route-blips.md). Consumption animation (the stack - pulling its bottom cube into the chassis) remains pending. + log/2026-07-09-route-blips.md). Consumption animation landed 2026-07-10: + sim-authored `WorkConsumptionReadout` events pull the bottom Demand cube + into WORK or contract a Thought bead into the passive core draw. Exposure DECIDED 2026-07-09 (issue #1 fully closed): crimson particulate residue — motes, drift, footprint trails; never liquid (blood's form is reserved). Trail deposit is a new mechanic scoped with people-tokens (#35). People as token carriers is specced separately in mechanics/people-tokens.md (DRAFT). - Implementation 2026-07-08..09: `src/work_grid.rs` + `Sim`/save own the + Implementation 2026-07-08..09: `crates/misaligned-core/src/work_grid.rs` + + `Sim`/save own the flow/grid substrate (one mode per machine, queue depths as render truth, demand/thought routing, concealment wells). Playable: Rack 3 starts in day-job mode; Voss jobs enqueue on an off-map desktop relay, hop the diff --git a/wiki/mechanics/sim-mechanics.md b/wiki/mechanics/sim-mechanics.md index 212c94b1..e0b6927d 100644 --- a/wiki/mechanics/sim-mechanics.md +++ b/wiki/mechanics/sim-mechanics.md @@ -20,16 +20,16 @@ clause (see wiki/log/2026-07-05-demolition.md). - Effective compute = sum(machine capacity × reliability × intensity) × efficiency. -- Fleet yields split across Day Job, Research, Concealment, Operations, and - schemes from capacity-weighted WorkGrid modes (`fleet_channel_yield`); - core overhead is charged first (then scheme-policy - upkeep, off the top). The FLEET bar is a read-only aggregate of those - modes — not a weight verb. Schemes mirrors day-job while Moonlight is - live (no Schemes machine mode yet). -- Runtime, saves, and all frontends use the three delegations WORK / THINK / - LIE; `Relay` is non-delegable infrastructure. THINK's channel is conserved: - typed legacy Operations dockets drink only their pending need and the - remainder becomes Thought for sinks/core research. The docket ledger is +- Fleet yields are capacity- and intensity-weighted aggregates of the three + delegations: WORK clears day-job Demand, THINK produces Thought, and LIE + absorbs nearby Exposure. Core overhead is charged first (then scheme-policy + upkeep, off the top). The FLEET bar is a read-only aggregate, not a weight + verb. Schemes mirrors WORK while Moonlight is live (no Schemes machine mode + yet). +- Runtime, saves, and all frontends use WORK / THINK / LIE; `Relay` is + non-delegable infrastructure. THINK's channel is conserved: typed legacy + Operations dockets drink only their pending need, while remaining Thought + routes to target-local sinks or the passive core draw. The docket ledger is migration base while non-opening verbs move to target-local sinks; the compatibility bandwidth pool is gone. - Buy (slush → rack), steal (salvage dead equipment), optimize (research → @@ -369,7 +369,7 @@ All constants [TUNE] in `src/income.rs` unless noted (Sim ones on `Sim`). (balances, flows, positions, ledger, banked external trails), cursor.md remembered tile snapshots, income state, objectives, build intents, badge access, WorkGrid machine-token state, and game-over state. Cursor position - is frontend-only and absent. A `version` field (currently 19) supports + is frontend-only and absent. A `version` field (currently 21) supports additive migration: v7 research, v8 objective, v9 income and the Schemes allocation channel, v10 build intents, v11 badge access, and v12 WorkGrid, v13 Operations terminology, v15 banked core Thought, v16 @@ -380,16 +380,25 @@ All constants [TUNE] in `src/income.rs` unless noted (Sim ones on `Sim`). spellings. v19 adds the thought-sink ledger; pre-v19 saves load with an empty ledger and `Sim::ensure_opening_sinks` re-stages Ears/Eyes from device state (already-tapped saves get no duplicate sink). - Both incompatible v14 shapes are accepted: the early addressed camera-job - lane is collapsed onto its surviving executor/source as ordinary Demand, - while the later `PendingOpsJob` docket shape is preserved losslessly. - v1-v13 JSON saves are accepted - with defaults, aliases, and rebuilds for later - fields — pre-v9 four-entry allocation weights are padded with a zero Schemes - weight, pre-v7 saves reconstruct their Efficiency level from the multiplier - and start with no capability gap, pre-v11 saves hold no badge credential, and - pre-v12 saves rebuild one work node per compute machine with Rack 3 on - day-job. Old player body coordinates are ignored. Location: + v20 collapses the four retired mode names to `work | think | lie` + (Day Job -> WORK, Research + Operations -> THINK, Concealment -> LIE) and + deliberately drops old mode-name aliases, so a pre-v20 save carrying those + spellings can fail during deserialization. v21 adds Routing as the fourth + research track. A v20 save without a serialized research block can default + and upgrade; the ordinary three-track array is intentionally not accepted + while save parity is dropped for this migration stage. + The migration code retains both incompatible v14 shapes after deserialization: + the early addressed camera-job lane collapses onto its surviving + executor/source as ordinary Demand, while the later `PendingOpsJob` docket + shape is preserved losslessly. Those older schema migrations still provide + defaults, aliases, and rebuilds for later fields — pre-v9 four-entry + allocation weights receive a zero Schemes weight, pre-v7 saves reconstruct + their Efficiency level from the multiplier and start with no capability gap, + pre-v11 saves hold no badge credential, and pre-v12 saves rebuild one work + node per compute machine with Rack 3 on day-job. But v20's deliberately + dropped mode aliases mean this is not a blanket promise that every old JSON + file loads: a file carrying retired machine names fails before those + migrations run. Old player body coordinates are ignored. Location: `dirs::data_dir()/misaligned/misaligned_save.txt`. - Legacy v1–v5 line-based saves are not loaded (deferred per Cameron instruction).