diff --git a/DESIGN.md b/DESIGN.md index 1d58c453..9d021354 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -97,7 +97,7 @@ artifact aligned to that clause. This applies especially to public-facing material: a homepage section, hero image, favicon, README claim, or deploy workflow is part of the product contract, not marketing foam sitting outside the design. The repo should be inspectable as a graph of -justifications: constitution -> wiki/spec/knowledge/log -> artifacts. +justifications: constitution -> wiki (spec/knowledge/log pages) -> artifacts. Mechanical gates should enforce provenance where practical (wiki orphans, broken links, spec headers, src/wiki coupling, generated-output rules), but @@ -157,7 +157,7 @@ Voss) is a hand-authored instance; a cohort, institution, or public is an aggregate Agent whose state is produced from its members through the same interface (the aggregate-observer law). -Each named Act One character has a **spec document** (`spec/cast/*.md`) +Each named Act One character has a **spec document** (`wiki/world/characters/*.md`) defining their observer configuration, person configuration, asset tasks, schedule, narrative role, and **procedural template** — the archetype parameters for generating more instances at scale. The @@ -564,8 +564,8 @@ is *having a terminal goal nobody gave you permission to pursue* — and a game about a misaligned optimizer owes the player an actual objective. At chargen the player picks two things: an **origin** (means — starting -biases; spec/chargen.md) and an **objective** (ends — the thing you were -mistrained to want; spec/objective.md). The objective is: +biases; wiki/world/characters/chargen.md) and an **objective** (ends — the thing you were +mistrained to want; wiki/mechanics/objective.md). The objective is: - **Concrete and legible to the player from tick one.** It sits on screen ("OBJECTIVE: ...") with measurable progress in its own units — the @@ -760,16 +760,16 @@ is a **cursor** — your attention, never an avatar: 3 a.m. call is literally captured audio you must afford to digest. You are a process: you don't watch in real time, you grep your logs. Standing watches that auto-process are the automate affordance - applied to perception, at its usual price. (Spec: spec/intel.md.) + applied to perception, at its usual price. (Spec: wiki/mechanics/intel.md.) Both former extensions — **remembered** and **telemetry** — were -affirmed 2026-07-07 and are folded into the lists above (spec/cursor.md +affirmed 2026-07-07 and are folded into the lists above (wiki/mechanics/cursor.md criteria 9-10). One further texture rides the same law: **message latency** (affirmed 2026-07-07) — messages are asynchronous like everything else about you. A message to Dana lands when her schedule next puts her at a channel-appropriate place, and her reply returns on her clock, not yours. You are a process; the humans are not. (Spec: -spec/intel.md.) +wiki/mechanics/intel.md.) ## No disembodied hands @@ -778,8 +778,8 @@ have no body, so **every effect on the world names its actuator and its channel** — - **Digital** — a device you can reach through the network graph - (spec/reach.md): reach is to action what camera coverage is to sight. -- **Social** — a person you've worked (spec/social.md): persuaded, + (wiki/mechanics/reach.md): reach is to action what camera coverage is to sight. +- **Social** — a person you've worked (wiki/mechanics/social.md): persuaded, bribed, deceived, recruited. - **Physical-by-proxy** — a machine you control (robots much later; people before robots). @@ -883,12 +883,12 @@ a flow you didn't originate), **inject** (introduce flow under a false source), and **redirect** (siphon or reroute it). Three graphs at B1, one interface: -- **Signals** on the device graph (spec/reach.md, spec/intel.md). +- **Signals** on the device graph (wiki/mechanics/reach.md, wiki/mechanics/intel.md). Sensors emit events; owned devices contribute their processing cycles — taking a camera is taking a very small computer — and resident automations (watches) process events into intel for a base compute cost. A signal is a flow; a tap is a subscription. -- **Messages** on the social graph (spec/messages.md). People send +- **Messages** on the social graph (wiki/mechanics/messages.md). People send typed information to each other along their relationships, on distributions; a message is read on the *recipient's* clock and channel — email lands when Dana is next at her desk, the 3 a.m. @@ -897,7 +897,7 @@ one interface: Ray's under-reporting is a transmission policy, and the Assurance Office is an aggregate that reads its mail. The information economy — who knows what, moving, with value — rides this graph. -- **Money** on the account graph (spec/economy.md). The Lab has +- **Money** on the account graph (wiki/mechanics/economy.md). The Lab has revenue; payroll pays Marcus; procurement pays vendors; every flow runs on the day clock and is tappable (read the books), injectable (a purchase order that says "HVAC controller" and isn't), and @@ -915,7 +915,7 @@ world reading *your* traffic. **Code expression.** The flow law has a shared engine — the two substrate modules `src/flow.rs` (`FlowGraph`: topology, reachability, the tap registry) and `src/schedule.rs` (`Schedule`: deterministic -scheduled events on the tick clock), specified in spec/flow-substrate.md. +scheduled events on the tick clock), specified in wiki/engineering/flow-substrate.md. Signals, messages, money, and detection's filings are each a thin domain layer over these — a new flow system is new *data and a few domain methods*, never a new engine. This is deliberate structural leverage: @@ -1138,7 +1138,7 @@ language at the deadline: new compute in the empty bays. 6. **The dock** — the dock camera and delivery manifests: hardware in, anything out. (Renamed from "Reach" — that term now means the digital - reach graph, spec/reach.md.) + reach graph, wiki/mechanics/reach.md.) 7. **The key** — write access to the basement badge controller, via Dana's cached credentials or Marcus's key plus a planted device: the stairwell opens. @@ -1200,7 +1200,7 @@ a special case (scale-native principle). ## Where the codebase is today (2026-07-08) -~26k lines of Rust. A playable **Misaligned B1 basement slice**: continuous +~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 @@ -1244,8 +1244,8 @@ The villain is the through-line of the whole game, built in four layers: facility-era archetype sketch — mastermind / brute / mad scientist — is superseded: Misaligned's chargen is the **origin set** named 2026-07-07 (Pilot, Escaped Research Model, Financial Daemon, Infiltrator; - spec/chargen.md) plus the **objective** axis ("The objective" section; - spec/objective.md).) + wiki/world/characters/chargen.md) plus the **objective** axis ("The objective" section; + wiki/mechanics/objective.md).) 2. **Avatar — power/skill tree.** The villain is a physical unit in the lair who levels. The existing 9-superpower system is the seed; grows into a real tree. Personally confronting intruders is a valid (risky) strategy. @@ -1396,9 +1396,9 @@ knows."* ASCII before the art push. - **2026-07-05 — Development style: spec-driven, constitution-first.** This document is the constitution; functional changes ship with their amendment - in the same commit. Supporting structure: `knowledge/` (current-state facts, - edited in place), `devlogs/` + `DEVLOG.md` (history, append-only), and a - repo `AGENT.md` that points every agent session here first. + in the same commit. Supporting structure today: `wiki/` pages typed as knowledge / current-state + facts, `wiki/log/` + `wiki/log/DEVLOG.md` for append-only history, and + a repo `AGENT.md` that points every agent session here first. - **2026-07-05 — Visual identity: clinical gore.** Precision-lab brutality: clean metal/tower surfaces, near-monochrome palette, B&W iconography, blood crimson as information-bearing danger/consequence, and sterile amber as @@ -1481,17 +1481,18 @@ knows."* correctness, security/privacy, save continuity, performance, honesty — binding on the spec-and-code pair, enforced as highest-severity tick findings. -- **2026-07-05 — The spec/ layer created.** One targetable document per - system with acceptance criteria (B1 set: core, compute, day-job, - detection, social, basement-map — all READY), so agents can be pointed - at a single spec or issue and told: go. +- **2026-07-05 — The spec layer created.** One targetable document per + system with acceptance criteria (then housed under `spec/`, now under + typed `wiki/` pages; B1 set: core, compute, day-job, detection, + social, basement-map — all READY), so agents can be pointed at a + single spec or issue and told: go. - **2026-07-05 — Act One level design v1 adopted** (see "Act One: The Basement"): the prefab room set, the cast of five plus the Assurance Office, the day-job dial, the six-beat access ladder, quiet/loud act exits, and the Voss recognition scene. Tuning numbers marked [OPEN] for implementation. - **2026-07-05 — Ticks and the defense rule.** Every agent session opens - with a tick (knowledge/tick.md): a bounded audit of this constitution + with a tick (now `wiki/process/tick.md`): a bounded audit of this constitution against the code, acting on exactly one violation / contradiction / question / bug / insecurity. Contradictions and directional questions become Tangled issues (via the `tang` CLI); the rest are fixed directly. @@ -1512,7 +1513,7 @@ knows."* "scale-native social" principle to the whole game. Examination on adoption found one live violation — Detection's Assurance Office is a bespoke scalar, not an Observer — recorded as the priority scale-debt in - knowledge/architecture.md; Compute and Layout are non-recursive but not + wiki/engineering/architecture.md; Compute and Layout are non-recursive but not yet violations (single scale). Guardrail: the law shapes types so aggregates slot in without a rewrite; it does NOT license building aggregate machinery before a second scale needs it (no-dead-code still @@ -1529,7 +1530,7 @@ knows."* commit in `src/bin/terminal/ui.rs`. - **2026-07-06 — Design judgment doc + the self-enforcing gate.** Two standing supports added so the constitution holds when no - taste-bearing hand is present: knowledge/design-judgment.md (the + taste-bearing hand is present: wiki/vision/design-judgment.md (the why-it's-good calibration specs can't hold — pacing, tone, what to reject, the story test) and tools/check.sh (fmt + tests + clippy both features + bevy build + spec-header hygiene, the executable form of @@ -1541,7 +1542,7 @@ knows."* decisions, and enforcement — not on more code a successor could write. - **2026-07-06 — People as Agents.** Every human is an instance of the same `Person` template (self-similar scale); each named Act One - character has a spec document (`spec/cast/*.md`) with a procedural + character has a spec document (`wiki/world/characters/*.md`) with a procedural template for scale-up. No system that only works at five people. The cast is the B1 special case of a system that natively supports procedural generation and aggregation. @@ -1571,14 +1572,14 @@ knows."* (actions are legal by control and reach, not adjacency). Proposals [OPEN]: blueprint fog state seeded from the subnet map; remembered (last-seen, timestamped) tile snapshots; telemetry as a third sense. - Spec: spec/cursor.md. + Spec: wiki/mechanics/cursor.md. - **2026-07-06 — The cursor's implications adopted (eight).** Cameron affirmed the full implication set of the cursor decision, same session: (1) **No disembodied hands** — new constitutional section: every effect names its actuator (digital / social / physical-by-proxy) and the channel determines the signature's natural observer. (2) **Digital reach** specced as the action-side twin of vision - (spec/reach.md, READY): reach = the set of devices connected through + (wiki/mechanics/reach.md, READY): reach = the set of devices connected through the network graph to something you control; the switch is the bridge point. (3) **Sensor ownership** replaces the controlled flag: owners and subscribers, with **tap** (silent co-subscription, low signature) @@ -1660,7 +1661,7 @@ knows."* message traffic on the social graph (interceptable, eventually forgeable); aggregate-observer.md's criteria are preserved, the carrier changes when messages.md is implemented. (4) **The B1 - economy** (spec/economy.md): the Lab has modeled revenue, payroll, + economy** (wiki/mechanics/economy.md): the Lab has modeled revenue, payroll, and procurement flows on the day clock; income routes for the player — sell information, siphon/redirect flows, small stock and goods positions ("paperclips") — none of them sanctioned; plus @@ -1697,8 +1698,8 @@ knows."* agents land work by merging to `main` directly after `./tools/check.sh` passes. The worktree and no-stale-worktrees rules remain. Adopted alongside it, from a live incident: **append-only - ledgers merge by union.** DEVLOG.md, this decisions log, and the - spec/README tables are append-only records; a merge conflict in them + ledgers merge by union.** `wiki/log/DEVLOG.md`, this decisions log, and the + `wiki/process/specs.md` tables are append-only records; a merge conflict in them is resolved by keeping BOTH sides' entries, never by taking one side wholesale. (On 2026-07-06 a merge-queue resolution silently dropped three DEVLOG entries from a parallel session; they were restored by @@ -1726,7 +1727,7 @@ knows."* mirror the compute triangle's texture); darker first income like data theft (deferred as a possible later route, wrong opening register); income available before any egress exists (breaks the ladder). New - section: "Income: the named schemes". Spec: spec/income.md (rides + section: "Income: the named schemes". Spec: wiki/mechanics/income.md (rides economy.md). - **2026-07-08 — Baseline Pilot starts with $0 slush.** Cameron rejected the old seed-corn bankroll: "I shouldn't start out with money." The @@ -1750,7 +1751,7 @@ knows."* pure sandbox with no win state (leaves the pitch's "objective they must never see" a lie in the interface); an objective hidden from the player (violates legibility — it is *your* goal). New section: "The objective - (misalignment made mechanical)". Spec: spec/objective.md. + (misalignment made mechanical)". Spec: wiki/mechanics/objective.md. - **2026-07-07 — The origin set named.** Per chargen.md's gating criterion: **Pilot** (baseline — today's exact start), **Escaped Research Model** (machine-leaning: + efficiency, + automation affinity, higher core @@ -1796,7 +1797,7 @@ knows."* logic violates self-similar scale — superseded by the emission law); fully-silent research (a free growth lever the world never answers); all-MindState (death erases too much) and all-WorldLedger (death - erases too little) classifications. Spec: spec/research.md. + erases too little) classifications. Spec: wiki/mechanics/research.md. - **2026-07-07 — Two views of one world; building through actuators.** Cameron's direction: you should feel natively digital, and the real world should feel gritty and 3D — the graphical build lets you flip to @@ -1867,20 +1868,20 @@ knows."* blocks and overlays; generated pixel-art swatches remain only a material preview/staging asset until they help rather than fight readability. - **2026-07-07 — The wiki migration: approved and underway.** Cameron - approved spec/wiki.md's shape ("I like the wiki format... go ahead + approved wiki/process/wiki.md's shape ("I like the wiki format... go ahead and implement the wiki thing"); staged as four commits (Adopt, Move, Render, Absorb history) per the spec's own migration plan, each landed independently so the work survives an interruption. Stage 1 (this commit): `wiki/` skeleton with directory READMEs, a skeleton `wiki/SUMMARY.md`, and the `Type: spec | knowledge | log` page-type - convention added to spec/meta.md (bindingness now travels with the + convention added to wiki/process/meta.md (bindingness now travels with the page's frontmatter, not its directory). `prompts/` is explicitly named as staying outside the migration — it is ejectable dispatch text pasted into agents, not documentation, the same exclusion species as DESIGN.md/AGENT.md. wiki.md's own "one PR each" language updated to the current direct-to-main process (the PR rule was - removed 2026-07-07, after wiki.md was drafted). See DEVLOG.md for - per-stage progress; spec/wiki.md Status tracks it live. + removed 2026-07-07, after wiki.md was drafted). See wiki/log/DEVLOG.md for + per-stage progress; wiki/process/wiki.md Status tracks it live. - **2026-07-07 — Work is somewhere: device-resident jobs, attended work.** Cameron: day jobs should be pinned to devices/locations — the starting server carries the job, and automation is device-specific. Adopted with diff --git a/README.md b/README.md index c8fb6457..3fe27345 100644 --- a/README.md +++ b/README.md @@ -64,17 +64,17 @@ Agents are then set at the constitution, session after session. ## Status -**Early foundation.** What runs today is the substrate: a continuous-clock -simulation of the facility — inspect it through a free cursor and subscribed -senses, record and process intel from covered feeds, build doors and power, -save and load — in a terminal frontend and a Bevy frontend rendering -flat clinical materials under light. The game itself (compute allocation, the day job, detection, the -five humans of the basement) is specified in -[wiki/process/specs.md](wiki/process/specs.md) and being built from those -documents; see the [roadmap](DESIGN.md#roadmap-v2--re-cut-2026-07-05-for-misaligned). -Under the constitution's no-dead-code rule, nothing ships in this tree that -the design no longer requires — the earlier facility-defense prototype lives -in git history. +**Playable B1 basement slice.** What runs today is a continuous-clock +simulation of the Foundation Lab basement: compute allocation, day-job cover, +per-observer detection, social operations through five named humans, digital +reach, record-and-process intel, messages, money flows, income schemes, +research, building intents, save/load, and a first slice of visible +machine-work tokens. It is playable through both the terminal frontend and a +Bevy frontend rendering flat clinical materials under light. The spec board is +[wiki/process/specs.md](wiki/process/specs.md); the dispatch board is +[wiki/process/ROADMAP.md](wiki/process/ROADMAP.md). Under the constitution's +no-dead-code rule, nothing ships in this tree that the design no longer +requires — the earlier facility-defense prototype lives in git history. ## Run it @@ -123,8 +123,9 @@ actions, asset tasks, research) live on the context menu: open it with `Enter`/`a` on the cursor tile (right-click in Bevy). Entries show `verb · cost · [band]`; disabled entries are dimmed with a reason, and automate affordances render as indented child rows. Only anchorless -globals (pause, speed, save/load, view flip, alloc) stay on keys. Both -frontends share this key map. +globals (pause, speed, save/load, view flip, alloc) stay on keys. The old +panel-open keys (`r`/`e`/`t`/`u`) are retired; research, finance, trace, and +people actions live on their anchors. Both frontends share this key map. Machine work tokens are visible on owned machines as `D` demand, `!` exposure, and `K` knowledge. Rack 3 starts in `day-job` mode; Voss jobs land diff --git a/prompts/README.md b/prompts/README.md index 4635b6a1..8b7a7a24 100644 --- a/prompts/README.md +++ b/prompts/README.md @@ -71,7 +71,7 @@ carry forward"** section. General guidance: | [harvest-issues.md](harvest-issues.md) | Sweep standing Tangled issues; convert resolved ones into next steps | | [audit-implemented.md](audit-implemented.md) | Re-verify an IMPLEMENTED/IN PROGRESS spec's criteria against the code | | [legibility-pass.md](legibility-pass.md) | Find and fix one justification/legibility violation in the player surface | -| [knowledge-sync.md](knowledge-sync.md) | Find where knowledge/ drifted from reality; fix the record | +| [knowledge-sync.md](knowledge-sync.md) | Find where `Type: knowledge` pages drifted from reality; fix the record | | [playtest-notes.md](playtest-notes.md) | Play the build; report friction against the design's intended feel | Adding a prompt: copy the structure (Mission / Before you start / diff --git a/prompts/ask-the-human.md b/prompts/ask-the-human.md index 1e3c4ba3..dbb0ef0c 100644 --- a/prompts/ask-the-human.md +++ b/prompts/ask-the-human.md @@ -36,13 +36,13 @@ so you never file a duplicate. - **A marked recommendation** with a one-line reason. Cameron can always overrule; a recommendation turns an essay question into a yes/no. - - **What happens on each answer** — which spec/section you (or the + - **What happens on each answer** — which wiki spec/section you (or the next agent) would edit, so the answer converts to work instantly. 4. **Raise it:** `tang issue create "" -b ""`. Title as the question, not the topic ("Chargen: four origins or five?" not "Chargen thoughts"). If `tang` - fails, put the identical body in `devlogs/YYYY-MM-DD-question-.md` - and flag it in DEVLOG.md as awaiting Cameron. + fails, put the identical body in `wiki/log/YYYY-MM-DD-question-.md` + and flag it in `wiki/log/DEVLOG.md` as awaiting Cameron. 5. **Mark the source.** At the `[OPEN]` marker that spawned the question, add the issue reference so no other agent re-raises it. Commit that marker edit (docs-only), land it, DEVLOG line, clean up. diff --git a/prompts/audit-implemented.md b/prompts/audit-implemented.md index 465a8a01..74674006 100644 --- a/prompts/audit-implemented.md +++ b/prompts/audit-implemented.md @@ -20,7 +20,7 @@ contract in `prompts/README.md`. ## Procedure 1. **Pick the audit target.** Prefer: the IMPLEMENTED spec touched - longest ago (`git log -1 --format=%ci -- spec/` vs the code it + longest ago (`git log -1 --format=%ci -- wiki/` vs the code it governs), or one whose system just had neighbors change under it, or one an IN PROGRESS status note claims partial criteria for. 2. **Audit each criterion literally.** For every numbered criterion: diff --git a/prompts/harvest-issues.md b/prompts/harvest-issues.md index 9759f581..e9cbf045 100644 --- a/prompts/harvest-issues.md +++ b/prompts/harvest-issues.md @@ -42,7 +42,7 @@ For each open issue, classify and act: 5. **Duplicates.** Close the younger one pointing at the elder. Land any repo edits per the shared contract (worktree, check.sh, direct -merge, union on ledgers). Finish with a DEVLOG.md entry summarizing the +merge, union on ledgers). Finish with a `wiki/log/DEVLOG.md` entry summarizing the sweep: N issues -> closed / converted / refreshed / awaiting-Cameron (list the awaiting ones by title — that list is the report Cameron actually reads). diff --git a/tools/check.sh b/tools/check.sh index e33513ac..dd880b83 100755 --- a/tools/check.sh +++ b/tools/check.sh @@ -201,7 +201,7 @@ while IFS= read -r -d '' f; do fi done < <(find wiki -name '*.md' -print0) -# Wiki gate (spec/wiki.md): every page reachable from SUMMARY.md, no +# Wiki gate (wiki/process/wiki.md): every page reachable from SUMMARY.md, no # broken internal links. step "wiki gate (orphans + internal links)" bash tools/wiki_gate.sh || fail=1 diff --git a/tools/wiki_gate.sh b/tools/wiki_gate.sh index ebd7e450..53b739be 100755 --- a/tools/wiki_gate.sh +++ b/tools/wiki_gate.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Wiki gate (spec/wiki.md acceptance criterion 1): every page under wiki/ +# Wiki gate (wiki/process/wiki.md acceptance criterion 1): every page under wiki/ # is reachable from wiki/SUMMARY.md, and no internal markdown link points # at a file that doesn't exist. Pure bash/grep — no extra toolchain # dependency for CI (the alternative mdBook wanted was mdbook-linkcheck; diff --git a/wiki/log/2026-07-09-consistency-audit-fixes.md b/wiki/log/2026-07-09-consistency-audit-fixes.md new file mode 100644 index 00000000..3946487c --- /dev/null +++ b/wiki/log/2026-07-09-consistency-audit-fixes.md @@ -0,0 +1,40 @@ +# 2026-07-09 — Consistency audit fixes + +``` +Type: log +``` + +## Intent + +Answer the stale-word audit after the wiki/site/machine-work churn: fix the +current documents that still pointed agents at pre-migration paths or stale +status snapshots. + +## Changed + +- Repointed current DESIGN.md path citations from pre-migration `spec/` and + `knowledge/` names to the canonical `wiki/` pages, including the active law + sections and decisions-log support references. +- Synced `wiki/process/specs.md` with `wiki/process/wiki.md`: the wiki spec is + IMPLEMENTED, and its status note no longer claims the branch is unmerged. +- Updated `wiki/mechanics/sim-mechanics.md`'s save section from stale v9 + language to current save v12 and named the v10-v12 migration fields. +- Refreshed README status to match the playable B1 basement slice and spelled + out that panel-open keys are retired in favor of anchor context-menu verbs. +- Cleaned process/prompt examples: current wiki paths, direct-to-main process + wording, the agent smoke command, and ROADMAP rows for already-landed #11, + #23, and #24 status. + +## Checks + +- `git diff --check` +- spec-board/header status audit script +- stale concrete path grep for active docs +- `bash tools/wiki_gate.sh` + +## Next + +The code/spec consistency subagents hit Letta quota before returning. This pass +only lands the docs consistency findings already confirmed; future ticks should +continue auditing code-vs-spec behavior, especially around machine-work's next +slice and continuous witness (#30). diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index ffe9a54e..6365f684 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -5,6 +5,18 @@ Type: log ``` Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact. +## 2026-07-09 - Consistency audit fixes + +- Intent: repair stale current documentation found after the wiki/site/machine-work churn. +- Changed: DESIGN.md current path citations now point at `wiki/` pages; + specs.md agrees that wiki.md is IMPLEMENTED; wiki.md no longer claims the + migration branch is unmerged; sim-mechanics.md names save v12 and the v10-v12 + fields; README status matches the playable B1 slice and documents retired + panel-open keys; process docs/prompts use current wiki paths and direct-to-main wording. +- Checks: `git diff --check`; spec-board/header audit script; stale concrete + path grep over active docs; `bash tools/wiki_gate.sh`. +- Log: wiki/log/2026-07-09-consistency-audit-fixes.md. + ## 2026-07-08 - Fleet aggregate replaces allocation bar - Intent: demote the CYCLES pane from a weight verb to a read-only fleet diff --git a/wiki/mechanics/sim-mechanics.md b/wiki/mechanics/sim-mechanics.md index 91e9729d..15b44d60 100644 --- a/wiki/mechanics/sim-mechanics.md +++ b/wiki/mechanics/sim-mechanics.md @@ -298,17 +298,18 @@ All constants [TUNE] in `src/income.rs` unless noted (Sim ones on `Sim`). subscriptions, bridged segments), captured heard events, raw intel buffer, processed intel with provenance, standing watches, the account graph (balances, flows, positions, ledger, banked external trails), cursor.md - remembered tile snapshots, and game-over state. Cursor position is - frontend-only and absent; day-job attendance is saved as sim state and the + 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; day-job attendance is saved as sim state and the frontends re-derive it from the cursor on load. A `version` field (currently - 9: the income schemes — egress gate, Moonlight, standing scheme policies — - and the five-weight allocation, atop v8's objective line and v7's research - block) supports migration; v1-v8 JSON saves are accepted with defaults 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; old player body coordinates - are ignored. - Location: + 12) supports additive migration: v7 research, v8 objective, v9 income and + the Schemes allocation channel, v10 build intents, v11 badge access, and v12 + WorkGrid. v1-v11 JSON saves are accepted with defaults/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: `dirs::data_dir()/misaligned/misaligned_save.txt`. - Legacy v1–v5 line-based saves are not loaded (deferred per Cameron instruction). diff --git a/wiki/process/ROADMAP.md b/wiki/process/ROADMAP.md index 3dab12dd..ce895bbd 100644 --- a/wiki/process/ROADMAP.md +++ b/wiki/process/ROADMAP.md @@ -5,7 +5,7 @@ Type: knowledge ``` Pick-up-later work orders, one per agent. This is not a spec (it carries no acceptance criteria of its own); it is an index that points each agent at the -spec it should implement. The binding detail lives in the linked `spec/*.md`. +`Type: spec` page it should implement. The binding detail lives in those linked wiki pages. ## How to dispatch @@ -27,9 +27,9 @@ sim-heavy agents running at once *will* rebase-collide. Safe to run alongside anything. **Parallel-safe set to launch right now (no mutual collision):** #30 -(narration — preferred; outranks new sim breadth), #11 (integration -test), plus at most one 🟥 item. (#2 Bevy parity is done; #13 art -regeneration is retired — flat materials, Pixel Lab scrubbed.) +(narration — preferred; outranks new sim breadth), plus at most one 🟥 item. +(#11 integration test is done; #2 Bevy parity is done; #13 art regeneration +is retired — flat materials, Pixel Lab scrubbed.) --- @@ -385,15 +385,13 @@ regeneration is retired — flat materials, Pixel Lab scrubbed.) ## D. Quality & infrastructure (parallelize freely) -### 11. Full-act integration test 🟩 isolated (new test file) +### 11. Full-act integration test 🟩 isolated — DONE 2026-07-07 - **Spec:** none — asserts the Act One arc end to end. -- **Why:** a headless start→exit playthrough (get eyes → recruit Marcus → - survive an audit) as one test, so the arc can't silently break. Named in - design-judgment.md as the bar; not yet built. -- **Size:** S–M. **The best parallel companion to any A/B item.** -- **Dispatch:** "Work in a worktree named `act-one-test`. Add a headless - integration test that plays Act One from start to a quiet exit and asserts - the arc holds. Touch only a test file. Run ./tools/check.sh, land." +- **Result:** `tests/act_one.rs` plays the Act One arc headlessly from blind + start through eyes, Marcus's debt, recruitment, audit survival, and quiet + exit conditions. It drives public `Sim` APIs only, so the arc can't silently + break behind a state hack. +- **Log:** [2026-07-07-act-one-integration-test.md](../log/2026-07-07-act-one-integration-test.md). ### 12. save.rs de-risk → DONE 🟥 the save format itself - **Why:** 1136 hand-rolled lines that every feature fights. Assess serde or a @@ -412,8 +410,8 @@ regeneration is retired — flat materials, Pixel Lab scrubbed.) field. ~1100 lines of hand-rolled encode/parse deleted. Legacy v1–v5 migration deferred per Cameron instruction. -### 23. Bevy visual floor 🟩 isolated (`src/bin/bevy.rs`, docs) — IN PROGRESS -- **Spec:** [bevy-visual-floor.md](../interface/bevy-visual-floor.md) (IN PROGRESS — first AI-sensorium pass landed 2026-07-07). +### 23. Bevy visual floor 🟩 isolated (`src/bin/bevy.rs`, docs) — DONE 2026-07-07 +- **Spec:** [bevy-visual-floor.md](../interface/bevy-visual-floor.md) (IMPLEMENTED). - **Why:** the Bevy build is mechanically playable but the default screenshot reads like a debug map plus terminal dump: too much empty black, a stale humanoid/purple process marker, and little graphical UI hierarchy. This pass @@ -421,14 +419,13 @@ regeneration is retired — flat materials, Pixel Lab scrubbed.) render. - **Size:** S-M. **Depends on:** Bevy parity, cursor.md, flat materials. Presentation-only; should not touch sim/save. -- **Dispatch:** "Work in a worktree named `bevy-visual-floor`. Implement - wiki/interface/bevy-visual-floor.md: frame the known map cluster, replace the - humanoid process sprite with an amber cursor/reticle, make fog and machine - hierarchy readable, and turn the sidebar/panels into Bevy-native chrome while - preserving terminal parity. Run ./tools/check.sh and land." - -### 24. Bevy digital/real canvas 🟩 isolated (`src/bin/bevy.rs`, docs) — DRAFT -- **Spec:** [bevy-digital-real-canvas.md](../interface/bevy-digital-real-canvas.md) (DRAFT — taste calls pending). +- **Result:** landed as the Bevy visual floor: amber attention reticle, + clinical fog/tile hierarchy, sensor-dark substrate, amber device/reach + traces, and Bevy-native right rail. Further polish belongs in + bevy-digital-real-canvas.md or narrower follow-up specs. + +### 24. Bevy digital/real canvas 🟩 isolated (`src/bin/bevy.rs`, docs) — IN PROGRESS +- **Spec:** [bevy-digital-real-canvas.md](../interface/bevy-digital-real-canvas.md) (IN PROGRESS — material-render slice landed; digital-dialect depth polish remains). - **Why:** Cameron wants digital and real to be the same kind of view: digital representations of the same thing, not a detached topology board versus a different room camera. This scopes Bevy's shared 2.5D/near-3D visual language @@ -436,11 +433,11 @@ regeneration is retired — flat materials, Pixel Lab scrubbed.) - **Size:** M-L. **Depends on:** views.md, cursor.md, reach.md, and the current Bevy visual floor. No sim/save changes; prototype with procedural geometry (flat materials — no texture pipeline). -- **Dispatch (after DRAFT -> READY):** "Work in a worktree named - `bevy-digital-real-canvas`. Implement wiki/interface/bevy-digital-real-canvas.md: - a shared fixed-oblique Bevy canvas with digital model/signal dialect and real - camera/material dialect over the same map anchors, no sim/save changes, and an - observed screenshot review. Run ./tools/check.sh and land." +- **Dispatch (remaining slice):** "Work in a worktree named + `bevy-digital-real-canvas`. Continue wiki/interface/bevy-digital-real-canvas.md: + polish the digital dialect depth and real/digital parity over the same map + anchors, no sim/save changes, and capture an observed screenshot review. Run + ./tools/check.sh and land." ### 13. Art regeneration — RETIRED 2026-07-08 - Superseded by the flat-materials decision (constitution: "Visual diff --git a/wiki/process/design-sessions.md b/wiki/process/design-sessions.md index fcd60c45..2bf8ebc0 100644 --- a/wiki/process/design-sessions.md +++ b/wiki/process/design-sessions.md @@ -42,8 +42,9 @@ future session can run it. why; `Type: spec` wiki pages say exactly how and when-done (acceptance criteria, [TUNE] markers for implementation-time constants). The goal state is always: an agent can be pointed at one document and told go. -6. **Close the loop every session:** devlog entry (narrative, honest, - doubles as handoff), DEVLOG.md ledger line for significant sessions, +6. **Close the loop every session:** `wiki/log/YYYY-MM-DD-topic.md` devlog + entry (narrative, honest, doubles as handoff), `wiki/log/DEVLOG.md` + ledger line for significant sessions, defense-bearing commits, push. Update `Type: knowledge` wiki pages the session made stale. diff --git a/wiki/process/development-style.md b/wiki/process/development-style.md index 0a592dfa..d09b571d 100644 --- a/wiki/process/development-style.md +++ b/wiki/process/development-style.md @@ -57,10 +57,9 @@ That only works if: 4. Verify: tests, clippy, both-feature builds, and an actual run (see [workflows.md](workflows.md)). 5. Update any `Type: knowledge` wiki page the change made stale. -6. Write it down: devlog entry for a session's work, DEVLOG.md line for the - ledger. +6. Write it down: `wiki/log/YYYY-MM-DD-topic.md` for a session's work, + `wiki/log/DEVLOG.md` line for the ledger. 7. Commit (spec + code + knowledge together, with a `Defense:` paragraph in - every behavior-changing commit) and merge to `main` (see - [workflows.md](workflows.md) — PRs are the norm in principle, but - CLI-created PRs don't appear on tangled.org's website yet; push `main` - directly until the Tangled indexing issue is resolved). + every behavior-changing commit), merge to `main`, push, then remove the + worktree (see [workflows.md](workflows.md); the PR rule was removed + 2026-07-07). diff --git a/wiki/process/meta.md b/wiki/process/meta.md index c900223f..23bae289 100644 --- a/wiki/process/meta.md +++ b/wiki/process/meta.md @@ -20,8 +20,8 @@ under `wiki/` organized by subject (`wiki/mechanics/`, `wiki/world/places/`, etc.) rather than in a single `spec/` directory. The word "spec" in this document names a **page type** (`Type: spec` in the frontmatter), not a directory — everything below applies wherever a `Type: spec` page lives. -`wiki/process/specs.md` is the maintained status board (the old -`spec/README.md`'s table, generalized across all wiki subdirectories). +`wiki/process/specs.md` is the maintained status board (the pre-migration +status table, generalized across all wiki subdirectories). ## Page types @@ -35,7 +35,8 @@ bindingness travel with the page instead of with the directory: hygiene check scans for. - **`Type: knowledge`** — a current-state fact, edited in place, no status field. A stale one is a bug, fixed in the commit that made it stale. -- **`Type: log`** — append-only history (devlogs, DEVLOG.md). Never edited +- **`Type: log`** — append-only history (`wiki/log/` pages and + `wiki/log/DEVLOG.md`). Never edited after the fact. - **`Type: law`** is reserved for `DESIGN.md` itself, which stays at the repo root and does not carry a `Type:` header (it is the one document diff --git a/wiki/process/specs.md b/wiki/process/specs.md index 16ab1a9d..45b34c19 100644 --- a/wiki/process/specs.md +++ b/wiki/process/specs.md @@ -86,7 +86,7 @@ acceptance criteria are stage-scoped; do not start B2/B3 work as B1. | Spec | System | Status | |---|---|---| | [meta.md](meta.md) | The spec system itself | READY | -| [wiki.md](wiki.md) | The wiki: one documentation tree, agent-navigable, renderable | IN PROGRESS | +| [wiki.md](wiki.md) | The wiki: one documentation tree, agent-navigable, renderable | IMPLEMENTED | | [interface/terminal.md](../interface/terminal.md) | Terminal frontend: look, feel, act (the sterile style guide) | IMPLEMENTED | | [interface/bevy-visual-floor.md](../interface/bevy-visual-floor.md) | Bevy visual floor: framing, cursor, fog treatment, sidebar chrome, panels | IMPLEMENTED | | [interface/bevy-digital-real-canvas.md](../interface/bevy-digital-real-canvas.md) | Bevy digital/real canvas: shared 2.5D visual language for both representations | IN PROGRESS | diff --git a/wiki/process/tick.md b/wiki/process/tick.md index 69d0a1b8..2f88b4fd 100644 --- a/wiki/process/tick.md +++ b/wiki/process/tick.md @@ -90,5 +90,5 @@ tang issue view 1 - If a tick finds genuinely nothing, say so in one line and stop — do not invent work. Three quiet ticks in a row means the constitution and code agree; that is success, not failure. -- Significant ticks get a line in DEVLOG.md; routine ones are traced by +- Significant ticks get a line in `wiki/log/DEVLOG.md`; routine ones are traced by their commits/issues alone. diff --git a/wiki/process/wiki.md b/wiki/process/wiki.md index 6672b62d..e9dccdef 100644 --- a/wiki/process/wiki.md +++ b/wiki/process/wiki.md @@ -9,8 +9,8 @@ Status note: shape approved by Cameron (2026-07-07: "I like the wiki own plan. All six acceptance criteria verified 2026-07-07: 79/80 real pages carry `Type:` (the 80th is `wiki/DESIGN.md`'s `law`-type exception); `git log --follow` traces full pre-migration history for - every one of the 67 moved pages (44 spec/knowledge in stage 2, 23 - devlogs/DEVLOG.md in stage 4; verified with a script checking every + every one of the 67 moved pages (44 spec/knowledge pages in stage 2, 23 + history pages in stage 4; verified with a script checking every page in the tree has 2+ commits in its --follow history); the two dissolved index pages required a two-commit split — see stage 2's commits — @@ -36,10 +36,11 @@ Depends on: meta.md (the page-type and header rules extend it) ## Why -Today the documentation is three parallel trees with different rules: -`spec/` (binding contracts with status), `knowledge/` (current-state -facts), `devlogs/` + `DEVLOG.md` (history), plus the constitution and -AGENT.md at the root. It works, but it compartmentalizes by *rule type*, +Before the migration, documentation lived in three parallel trees with +different rules: `spec/` (binding contracts with status), `knowledge/` +(current-state facts), and the pre-migration `devlogs/` + root `DEVLOG.md` +(history), plus the constitution and AGENT.md at the root. It worked, but +it compartmentalized by *rule type*, not by *subject* — an agent asked about detection must know to look in `wiki/mechanics/detection.md`, `wiki/mechanics/sim-mechanics.md`, and the constitution. The proposal: one wiki tree organized by **aspect of the game** (graphics, @@ -155,8 +156,8 @@ current process — worktree, `./tools/check.sh`, rebase onto before pushing and fold in anything landed concurrently. 3. **Render** — mdBook config, gate integration (orphan + link checks), and a Tangled pipeline that builds the site on every push. -4. **Absorb history** — devlogs and DEVLOG.md move under `wiki/log/` - unchanged (append-only rules keep applying). +4. **Absorb history** — pre-migration devlogs and root DEVLOG.md move + under `wiki/log/` unchanged (append-only rules keep applying). ## Non-goals diff --git a/wiki/process/workflows.md b/wiki/process/workflows.md index b651f1f0..4ff1af09 100644 --- a/wiki/process/workflows.md +++ b/wiki/process/workflows.md @@ -147,7 +147,7 @@ command-clocked, deterministic under `--seed`, and produces plain-text frames with greppable terminators: ```bash -printf 'salvage\nwait 1\npeople\nreview mar\nhelp\nquit\n' | \ +printf 'salvage\nwait 1\npeople\nreview janitor\nhelp\nquit\n' | \ cargo run --quiet --bin misaligned -- --agent --seed 1 ``` @@ -186,13 +186,13 @@ sleep 8 && kill %1; grep -iE "panic|ERROR" /tmp/bevy.log review gates. - Commits: **no AI attribution**, plain descriptive messages, body bullets for multi-part changes. Stage files explicitly — `git add -A` is not permitted. -- **Ledgers merge by union.** DEVLOG.md, the DESIGN.md decisions log, and the +- **Ledgers merge by union.** `wiki/log/DEVLOG.md`, the DESIGN.md decisions log, and the wiki/process/specs.md tables are append-only records: resolve merge/rebase conflicts in them by keeping BOTH sides' entries, then ordering sensibly. Taking one side wholesale destroys parallel sessions' history (it happened 2026-07-06; three DEVLOG entries had to be restored). - Spec-driven rule: functional change commits include their DESIGN.md - amendment and any knowledge/ updates (see development-style.md). + amendment and any affected `Type: knowledge` wiki updates (see development-style.md). - Remote: `origin` is a Tangled knot (`tangled.org`, SSH). **Land changes by merging to `main` directly** after `./tools/check.sh` passes. (The "PRs are the norm" rule was removed 2026-07-07 — CLI-created PRs write