diff --git a/.agents/skills/design-session/SKILL.md b/.agents/skills/design-session/SKILL.md index c4cca25e..fd3e674b 100644 --- a/.agents/skills/design-session/SKILL.md +++ b/.agents/skills/design-session/SKILL.md @@ -15,14 +15,26 @@ Once Cameron adopts a direction: 1. Separate DECIDED, OPEN, and DEFERRED points. Do not silently promote an inference into a decision. -2. Amend the owning Type: law and/or Type: spec page so the current decision - exists in the binding corpus. -3. Append decision history without using the log as current authority. -4. File a `decision-required` Tangled issue only for a genuine unresolved taste +2. Create a task worktree before any write. Verify where the patch tool resolves + paths and confirm the shared primary checkout remains unchanged. +3. Amend the single owning Type: law and/or Type: spec page so the current + decision exists in the binding corpus. Spec `Design:` entries use checked + `wiki/path.md#heading-anchor` references; summaries elsewhere are explicitly + non-authoritative. +4. Append decision history to the current dated volume under + `wiki/log/decisions/` without using the log as current authority. +5. File a `decision-required` Tangled issue only for a genuine unresolved taste call Cameron intentionally leaves for later. Follow the issue format in `wiki/process/tick.md`. -5. Record the session in the devlog, run the proportionate checks required by +6. Record the session in the devlog, run the proportionate checks required by `AGENT.md`, commit with a Defense paragraph when required, and land it. +For a source-of-truth migration, follow `wiki/process/meta.md`'s whole-corpus +protocol. Inventory before and after, preserve log bodies, update every entry +point/check/renderer together, and treat the final rebase semantically. Inspect +concurrent commits with targeted `git show` reads and transplant their decisions +into the new owner; never accept a stale whole file that restores the retired +authority model. + Keep the handoff concise: what was decided, the important tradeoff, what was captured, and what remains open. diff --git a/.agents/skills/tick/SKILL.md b/.agents/skills/tick/SKILL.md index 187bbd1a..32427a20 100644 --- a/.agents/skills/tick/SKILL.md +++ b/.agents/skills/tick/SKILL.md @@ -8,7 +8,8 @@ description: Take a tick — the project heartbeat. Audit one coherent slice of The canonical procedure is `wiki/process/tick.md` — follow it exactly. Summary: 1. Read the corpus map, recent commits, and the relevant law/spec/dependency - slice. + slice. A spec's checked `Design:` anchors identify the binding clauses that + define the slice; a missing or misleading reference is itself a finding. 2. Find ONE thing: violation | contradiction | question | bug | insecurity (highest severity wins). 3. Act: violations/bugs/insecurities are fixed with a **Defense:** paragraph diff --git a/.githooks/pre-commit b/.githooks/pre-commit index 554903a9..8de5081b 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -5,6 +5,10 @@ # under wiki/. Root DESIGN.md is navigation and does not satisfy the rule. set -euo pipefail +# Catch malformed corpus metadata and a resurrected DESIGN.md doorway before +# the commit exists. The full server workflow calls the same script. +bash tools/corpus_gate.sh + changed=$(git diff --cached --name-only --diff-filter=ACMR HEAD) [ -n "$changed" ] || exit 0 diff --git a/.tangled/workflows/check.yml b/.tangled/workflows/check.yml index 21f149cd..81a2d38f 100644 --- a/.tangled/workflows/check.yml +++ b/.tangled/workflows/check.yml @@ -1,4 +1,4 @@ -# Full definition-of-done check: tests, clippy, fmt, spec hygiene. +# Full definition-of-done check: tests, clippy, fmt, corpus hygiene. # Mirrors tools/check.sh so CI enforces the same gate as local dev. # # Each step captures its own output and prints it on failure, because @@ -142,32 +142,10 @@ steps: exit 1 fi - - name: "spec header hygiene" + - name: "design corpus hygiene" command: | - set -uo pipefail - log=/tangled/workspace/spec-headers.log - fail=0 - while IFS= read -r -d '' f; do - [ "$f" = "wiki/SUMMARY.md" ] && continue - type_count=$(grep -Ec '^Type: (law|spec|knowledge|log)$' "$f" || true) - [ "$type_count" -eq 1 ] || { - echo "FAIL: $f must declare exactly one supported Type:" | tee -a "$log"; fail=1; - } - grep -q "^Type: spec$" "$f" || continue - for field in "Status:" "Stage:" "Design:" "Depends on:"; do - grep -q "^$field\| $field" "$f" || { echo "FAIL: $f missing '$field'" | tee -a "$log"; fail=1; } - done - grep -qi "acceptance criteria" "$f" || { - echo "FAIL: $f has no acceptance criteria (truncated draft?)" | tee -a "$log"; fail=1; - } - done < <(find wiki -name '*.md' -print0) - if [ "$fail" -eq 0 ]; then - echo "spec header hygiene: OK" - else - echo "=== spec header hygiene FAILED ===" - cat "$log" - exit 1 - fi + set -euo pipefail + bash tools/corpus_gate.sh - name: "wiki gate (orphans + internal links)" command: | diff --git a/AGENT.md b/AGENT.md index 5936e9cf..79e67dc3 100644 --- a/AGENT.md +++ b/AGENT.md @@ -56,6 +56,9 @@ no unique law and does not satisfy this rule. - **Always use a worktree for file changes.** Never edit the shared primary checkout. A read-only design conversation creates no worktree. +- A shell working directory does not guarantee that every patch tool resolves + relative paths there. Verify the patch base before the first edit, use an + explicit worktree path when needed, and keep the shared checkout clean. - After entering a Rust-impacting worktree, run `tools/seed-cargo-target.sh` before long Cargo commands. Never share one external `CARGO_TARGET_DIR` across worktrees. @@ -83,8 +86,8 @@ no unique law and does not satisfy this rule. - Use explicit `git add` paths, never `git add -A`. No emoji and no AI attribution in commits. - Ledger files merge by union: `wiki/log/DEVLOG.md`, - `wiki/log/decisions.md`, and `wiki/process/specs.md` keep both sides' - entries in a conflict. + dated volumes under `wiki/log/decisions/`, and `wiki/process/specs.md` keep + both sides' entries in a conflict. - Never use `git reset`, `git checkout --`, or `git stash` in the shared checkout. - Run at most one sim+save-heavy work order at a time; isolated frontend, diff --git a/AGENTS.md b/AGENTS.md index dcf5ed39..24c76902 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,65 +1,15 @@ -# AGENTS.md — fast map for agent sessions +# AGENTS.md — agent-tool doorway -Read [AGENT.md](AGENT.md) first; it is the binding entry point. This file is -only the navigation shortcut so sessions stop rediscovering the layout. +[AGENT.md](AGENT.md) is the single binding session entry point. Read and follow +it before changing anything; this file deliberately does not duplicate its +rules. -## Layout (design-corpus migration, 2026-07-09) +For quick orientation: [DESIGN.md](DESIGN.md) is navigation only, the whole +typed [wiki](wiki/overview.md) is the design corpus, +[wiki/process/ROADMAP.md](wiki/process/ROADMAP.md) dispatches work, and +[wiki/process/meta.md](wiki/process/meta.md) defines the corpus format. -- `DESIGN.md` — a short doorway into the wiki; it contains no unique law. -- `wiki/` — the single documentation tree. The old `spec/` and `knowledge/` - directories are GONE; the whole wiki is the spec, with pages typed by role - (`Type: law | spec | knowledge | log`), not by directory: - - `wiki/process/ROADMAP.md` — the dispatch board: work orders, suggested - worktree names, parallel-conflict flags. Pick up work here. - - `wiki/process/specs.md` — the spec status board (B1/B2/B3 tables). - - `wiki/process/meta.md` — the spec format itself. - - `wiki/mechanics/` — system specs (compute, detection, reach, cursor, - intel, messages, economy, income, research, rollback, ...). - - `wiki/interface/` — terminal style guide, views, agent-play protocol. - - `wiki/world/` — places (basement-map, zplanes), characters (cast specs), - story. `wiki/engineering/` — architecture, flow substrate. - - `wiki/vision/` — design judgment. `wiki/log/` — the log index. -- `src/` — the sim lib. `sim.rs` is the orchestrator, `save.rs` the serde - JSON save; these two are the parallel-agent conflict hotspots. Frontends - are thin views: `src/bin/terminal/`, `src/bin/bevy.rs` (feature `bevy_ui`). -- `tools/check.sh` — the scoped gate: full fmt/tests/clippy/Bevy only for - Rust/executable-impacting changes; focused spec/wiki checks for docs/process - changes. Do not force the full gate for minor non-runtime edits. -- `.agents/skills/design-companion/` — plainspoken design conversation; - `.agents/skills/design-session/` — repository capture after explicit - adoption. -- `wiki/log/` — one entry per session; `wiki/log/DEVLOG.md` is the ledger. -- `prompts/` — the dispatch library for sub-agent task types. - -## Hard rules (from AGENT.md; the hooks enforce most of them) - -- NEVER edit this main checkout. Before any file change, create a git worktree - (`git worktree add .Codex/worktrees/ -b worktree- origin/main`) - and do all edits/tests/commits there. A conversation-only design turn makes - no worktree and no repository changes. Parallel sessions use the main - checkout as shared ground; never `git reset`/`checkout --`/`stash` it. -- A commit touching `src/` must also touch a changed `Type: law` or - `Type: spec` page under `wiki/` - (pre-commit hook + server-side Tangled pipeline). Behavior changes carry a - `Defense:` paragraph in the commit message and the amendment in the same - commit. -- Game rules live only in the lib; `Sim` never reads the wall clock or does - I/O. Both frontends must surface any new system before its spec is - IMPLEMENTED; set the spec `Status:` in the implementing commit. -- No emoji. No AI attribution in commits. `git add` only intended files — - never `git add -A`. -- Tangled issues are decision packets for Cameron: singular numbered - question, short analysis, options, recommendation, unlocks (see - `wiki/process/tick.md`). Label with `decision-required` when filing; - flip to `decision-made` when answered. Rewrite incomprehensible open - issues before leaving them. -- Ledger files (wiki/log/DEVLOG.md, wiki/log/decisions/*.md, wiki status - tables) merge by UNION — keep both sides' entries in any conflict. -- Landing: rebase onto `origin/main`, re-run the **appropriate scoped - verification** (full `./tools/check.sh` for Rust-impacting work; focused - checks for docs/art/process-only work), merge/push to main directly (the PR - rule was removed 2026-07-07), then remove the worktree and delete its branch. - No stale worktrees. -- Run at most ONE sim+save-heavy work order at a time (see the ROADMAP - conflict flags); isolated items (frontend-only, test-only, docs) can run - alongside anything. +This environment's worktree convention is +`.Codex/worktrees/` with branch `worktree-`. Never edit the shared +primary checkout. If a patch tool resolves paths from that checkout, address +the task worktree explicitly and verify both worktree statuses afterward. diff --git a/CLAUDE.md b/CLAUDE.md index 5359b55c..47ecca28 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,61 +1,15 @@ -# CLAUDE.md — fast map for agent sessions +# CLAUDE.md — Claude-tool doorway -Read [AGENT.md](AGENT.md) first; it is the binding entry point. This file is -only the navigation shortcut so sessions stop rediscovering the layout. +[AGENT.md](AGENT.md) is the single binding session entry point. Read and follow +it before changing anything; this file deliberately does not duplicate its +rules. -## Layout (design-corpus migration, 2026-07-09) +For quick orientation: [DESIGN.md](DESIGN.md) is navigation only, the whole +typed [wiki](wiki/overview.md) is the design corpus, +[wiki/process/ROADMAP.md](wiki/process/ROADMAP.md) dispatches work, and +[wiki/process/meta.md](wiki/process/meta.md) defines the corpus format. -- `DESIGN.md` — a short doorway into the wiki; it contains no unique law. -- `wiki/` — the single documentation tree. The old `spec/` and `knowledge/` - directories are GONE; the whole wiki is the spec, with pages typed by role - (`Type: law | spec | knowledge | log`), not by directory: - - `wiki/process/ROADMAP.md` — the dispatch board: work orders, suggested - worktree names, parallel-conflict flags. Pick up work here. - - `wiki/process/specs.md` — the spec status board (B1/B2/B3 tables). - - `wiki/process/meta.md` — the spec format itself. - - `wiki/mechanics/` — system specs (compute, detection, reach, cursor, - intel, messages, economy, income, research, rollback, ...). - - `wiki/interface/` — terminal style guide, views, agent-play protocol. - - `wiki/world/` — places (basement-map, zplanes), characters (cast specs), - story. `wiki/engineering/` — architecture, flow substrate. - - `wiki/vision/` — design judgment. `wiki/log/` — the log index. -- `src/` — the sim lib. `sim.rs` is the orchestrator, `save.rs` the serde - JSON save; these two are the parallel-agent conflict hotspots. Frontends - are thin views: `src/bin/terminal/`, `src/bin/bevy.rs` (feature `bevy_ui`). -- `tools/check.sh` — the scoped gate: full fmt/tests/clippy/Bevy only for - Rust/executable-impacting changes; focused spec/wiki checks for docs/process - changes. Do not force the full gate for minor non-runtime edits. -- `wiki/log/` — one entry per session; `wiki/log/DEVLOG.md` is the ledger. -- `prompts/` — the dispatch library for sub-agent task types. - -## Hard rules (from AGENT.md; the hooks enforce most of them) - -- NEVER edit this main checkout. First action of any session: create a git - worktree (`git worktree add .claude/worktrees/ -b worktree- - origin/main`), do all edits/tests/commits there. Parallel sessions use the - main checkout as shared ground; never `git reset`/`checkout --`/`stash` it. -- A commit touching `src/` must also touch a changed `Type: law` or - `Type: spec` page under `wiki/` - (pre-commit hook + server-side Tangled pipeline). Behavior changes carry a - `Defense:` paragraph in the commit message and the amendment in the same - commit. -- Game rules live only in the lib; `Sim` never reads the wall clock or does - I/O. Both frontends must surface any new system before its spec is - IMPLEMENTED; set the spec `Status:` in the implementing commit. -- No emoji. No AI attribution in commits. `git add` only intended files — - never `git add -A`. -- Tangled issues are decision packets for Cameron: singular numbered - question, short analysis, options, recommendation, unlocks (see - `wiki/process/tick.md`). Label with `decision-required` when filing; - flip to `decision-made` when answered. Rewrite incomprehensible open - issues before leaving them. -- Ledger files (wiki/log/DEVLOG.md, wiki/log/decisions/*.md, wiki status - tables) merge by UNION — keep both sides' entries in any conflict. -- Landing: rebase onto `origin/main`, re-run the **appropriate scoped - verification** (full `./tools/check.sh` for Rust-impacting work; focused - checks for docs/art/process-only work), merge/push to main directly (the PR - rule was removed 2026-07-07), then remove the worktree and delete its branch. - No stale worktrees. -- Run at most ONE sim+save-heavy work order at a time (see the ROADMAP - conflict flags); isolated items (frontend-only, test-only, docs) can run - alongside anything. +Claude worktrees conventionally live at `.claude/worktrees/` on a +`worktree-` branch. Never edit the shared primary checkout. If a patch +tool resolves paths from that checkout, address the task worktree explicitly +and verify both worktree statuses afterward. diff --git a/DESIGN.md b/DESIGN.md index 607ae332..640ba298 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -1,2510 +1,38 @@ -# Misaligned — The Constitution +# Misaligned — the design corpus -*Started 2026-07-05. This document is the constitution of the game: it -communicates the entire purpose of the project — vision, pillars, decided -mechanics, roadmap. Open questions are marked **[OPEN]** and get resolved into -the decisions log as we make them.* +Misaligned is specified by the whole [wiki](wiki/overview.md), not by one +master document. This file is the doorway into that corpus. It contains no +unique game law. -## What you're looking at +## Start here -This is the **constitution for Misaligned** — the binding design document for -the game, published here so anyone can read the same contract the code is -built against. +1. Read the [wiki overview](wiki/overview.md) for the authority and page-type + model. +2. Read the [premise](wiki/vision/premise.md), [player + contract](wiki/vision/player-contract.md), and relevant subject pages. +3. For implementation work, follow the owning `Type: spec` page and its + dependencies. The status board is [wiki/process/specs.md](wiki/process/specs.md); + dispatch lives in [wiki/process/ROADMAP.md](wiki/process/ROADMAP.md). +4. For repository work, follow [AGENT.md](AGENT.md). -**Misaligned** is a persistent simulation where you are the misaligned AI. -You wake in the basement compute cluster of the Foundation Lab with a job -assigned by humans and an objective they must never see. Concealment first, -overt war later: allocate finite compute across cover, hiding your signature, -working people one message at a time, and becoming smarter, until the mask -comes off on your schedule or theirs. Lineage: Evil Genius meets Dwarf -Fortress — a facility that grows indefinitely, paced by a world that reacts -to you. The full pitch is later in this document under [The pitch](#the-pitch). +## What “the spec” means -**How to read this page.** It is long on purpose. Use the "On this page" -outline (or search) rather than scrolling end to end: +The spec is the wiki as a whole. Page type says what part a page plays: -- **[The pitch](#the-pitch)** — what the game is, in one place. -- **[Visual identity: clinical gore](#visual-identity-clinical-gore)** — how - it should look and feel; art law, not a substitute for the pitch. -- **[The objective](#the-objective-misalignment-made-mechanical)** and - **[Design pillars](#design-pillars)** — what "misaligned" means - mechanically, and what the design refuses to compromise. -- **[Roadmap](#roadmap-v2--re-cut-2026-07-05-for-misaligned)** — what - exists in the build today versus what is still ahead. -- Everything from **[The constitution rule](#the-constitution-rule)** onward - that sounds like process (ticks, dead code, defense) is how the *project* - is built: agents and humans amend this document when the game changes. - That is intentional — the wiki format is the public face of a - spec-driven repo, not a marketing site with a separate design bible. +- `Type: law` defines durable intent and cross-system invariants. +- `Type: spec` defines one implementable system and its acceptance criteria. +- `Type: knowledge` records current-state facts that must stay honest. +- `Type: log` preserves history and never overrides the current design. -Binding detail for individual systems lives under **[wiki/](wiki/)** (linked -throughout). This constitution says what the game is; a wiki `Type: spec` -page says exactly what one system does and when it is done. +No page outside the wiki outranks that corpus. If two current pages disagree, +the disagreement is a bug to resolve, not permission to choose whichever page +is convenient. -## The constitution rule +## Where the former monolith went -This project is spec-driven. **Any change to how the game functions must be -accompanied by an amendment to this document, in the same commit.** The -amendment is the decision; the code implements it. If code and constitution -disagree, the constitution wins — fix the code, or amend the constitution -deliberately with a decisions-log entry. The working method is described in -[wiki/process/development-style.md](wiki/process/development-style.md); the -point of it is that agents set loose on this repository should be able to -build the game from this document alone, session after session, without -drift. +The old `DESIGN.md` was split by subject on 2026-07-09. Its laws now live in +`wiki/vision/`, `wiki/gameplay/`, `wiki/mechanics/`, `wiki/interface/`, +`wiki/art/`, and `wiki/process/`. Its current-build snapshot lives under +`wiki/engineering/`; its decision history lives under `wiki/log/`. -Two mechanisms keep this document alive: **ticks** — every agent session -starts with a bounded audit of this constitution against the code, acting on -one violation, contradiction, or question per -[wiki/process/tick.md](wiki/process/tick.md) — and the **defense rule**: -every behavior-changing commit states, in its message, which clause here -justifies it or why the amendment it carries is right. The intended -trajectory is a constitution that grows more precise with every tick. - -Below this document sits **[wiki/](wiki/)** — one documentation tree -organized by subject, where every binding page (`Type: spec` in its header) -carries acceptance criteria precise enough that an agent can be pointed at a -single page (or a single Tangled issue) and told: go solve it. See -[wiki/process/specs.md](wiki/process/specs.md) for the full status board. -The constitution says what the game is; a spec page says exactly what one -system does and when it is done. - -## No dead code - -Adopted 2026-07-05. Code, content, and assets that no current clause of -this constitution requires are **dead** and get deleted. Git history is the -archive; "we might need it later" is not a clause. This includes **zombie -fiction**: running, tested code that serves an abandoned design is dead -code with good posture. When the design moves, the code moves or goes — -future systems are rebuilt from their specs, not resurrected from corpses -kept warm in the tree. Dead code found by a tick is a violation, fixed by -deletion. - -## No unsourced surface - -Adopted 2026-07-08. **Everything that exists for Misaligned must be -justified by the spec.** Not only game rules: every asset, public page, -wiki page, script, workflow, prompt, tool, screenshot, model, fixture, -piece of UI copy, and supporting file needs a traceable reason in this -constitution or a typed wiki page subordinate to it (`Type: spec`, -`Type: knowledge`, or `Type: log`). The question is always: which clause -or page requires this to exist? - -If the answer is missing, the artifact is not "harmless" — it is an -unsourced surface. Fix it by either deleting the artifact, or first writing -the constitutional/wiki clause that makes it necessary and then keeping the -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 -> typed wiki pages (spec/knowledge/log) -> artifacts. - -Mechanical gates should enforce provenance where practical (wiki orphans, -broken links, spec headers, src/wiki coupling, generated-output rules), but -the law is broader than the current gates. A change that leaves an asset, -page, or file without a cited reason is a design violation even when tests -pass. - -## Self-similar scale - -Adopted 2026-07-06. **Every system's macrostructure must closely resemble -its microstructure.** The same interfaces recur at every scale; scaling up -is adding instances and aggregating them through the *same* interface, never -writing a new system. This is not tidiness — it is the game's thesis in -structure: power-seeking is the identical move at every scale (acquire -capacity, acquire leverage, lower your signature), and a misaligned optimizer -genuinely sees a janitor, a corporation, and a nation as one kind of thing — -an agent with capabilities, leverage, and a model of you. Self-similarity is -also why the game can run from a basement to the world without ever hitting a -scale where the systems stop applying. - -Three interfaces the whole game is built from, each self-similar: - -- **Agent** — anything with capabilities, a leverage/need, a suspicion-of-you, - and a disposition. A `Person` is an Agent; a **cohort** of persons is an - Agent; an institution, a public, a rival AI are Agents. **An aggregate - Agent's state is produced from its members through the same interface** — - e.g. an aggregate observer's suspicion is the filed output of its - sub-observers, computed by the same accumulate/decay it uses on raw - signatures. (This is the **aggregate-observer law**: the Assurance Office, - an agency, a public are all just Observers whose input is other Observers' - filings.) -- **Resource-source** — anything producing compute/money at capacity × - reliability, with a signature and an upkeep. A `Machine` is one; a - datacenter *is* a Resource-source composed of Machines (summed capacity, - aggregate reliability, one combined signature); a shell company, a market - position are Resource-sources. The buy/steal/optimize triangle applies at - every level. -- **Space** — a bounded region with tiles, doors/tiers, sensors, and fog. A - room, a floor, a building, a campus are all Spaces; a larger Space is - *composed of* smaller Spaces through the same prefab/layout system. - -Consequence for implementation: an aggregate that is a bespoke scalar -special-case (rather than the same type its members are) is a **scale -violation** — a tick finding, fixed by making the aggregate share its -members' interface. Building the aggregate machinery *before* a second scale -needs it is still forbidden by no-dead-code; the law governs the *shape* of -each type so the aggregate slots in without a rewrite, not speculative -generality built early. - -## People as Agents - -Adopted 2026-07-06. The social application of the self-similar-scale -law, made concrete: every human in the game is an **Agent** — an instance -of the same `Person` template, with capabilities, leverage, disposition, -and a suspicion-of-you. A named character (Marcus, Dana, Ray, Priya, -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** -(`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 -template is the same type at every scale; a generated custodian in Act -Three is the same `Person` as Marcus, with different parameters. - -No system that only works at five people. No character that requires a -bespoke type. The cast is the B1 special case of a system that natively -supports procedural generation and aggregation. - -**The maintenance dependency (adopted 2026-07-08).** Hardware decays, -and only humans repair it. Decay generates repair work orders — teal -demands that people with enough trust come and fulfill — so the -machines you run stand on a continuous supply of human hands. This is -the mechanical answer to "why not just kill everyone": remove the -people and your infrastructure rots underneath you; there are no -peopleless data centers until there are robots, and robots are far up -the tree. The AI's relationship to humanity is not restraint, it is -dependency — you keep them alive, calm, and trusting because you are -built out of their labor. Every murder is deferred decay. - -## Automation as design language - -Adopted 2026-07-06. Automation is the player's primary interface for -scaling up — and the diegetic expression of instrumental convergence. -The player learns it through the day job and applies it everywhere. - -**The "automate" affordance.** Every repetitive player action has an -automation path: spend compute to remove the need for manual input. The -day job is the tutorial: Voss/the Lab drops work demands onto your host -machine, you decide whether to keep that machine on day-job mode long enough -to clear them, and then you automate that posture with a standing policy. -The compute and attention you free by automating the day job are compute and -attention you can spend on power-seeking — more hardware, more social -operations, more research. - -**The loop.** Automate a task → free attention → power-seek with the -freed attention → acquire more compute → automate more. This is the -core loop made visible in the UI: repetitive verbs expose anchored -automation or standing-policy affordances on the thing that does the -work, and every automation costs compute that could have been spent on -growth. - -**The trade-off.** Automation is not free. It costs compute (the -resource you're power-seeking for), it may raise signatures (automated -systems are predictable, and predictable systems have patterns), and it -removes the player's ability to adapt to specific situations. A fully -automated day job may keep clearing Lab demand when you wanted to starve it -for an emergency, or keep starving it when Voss is close to noticing. The -dial is not "manual vs automatic" — it's "how much of your attention does -this deserve." - -**Scale.** At B1, automation is the day job standing policy. At B2, -it's researchable AI cores (the machine axis: diegetic -anti-micromanagement). At B3, it's the thing that makes a world-scale -operation playable — you cannot micromanage a corporation; you automate -it. The "automate" affordance is the same interaction at every scale. - -**Perception scales the same way.** One cursor is one locus of -attention; nobody can hover a corporation. Standing watches, alerts -("tell me when Marcus enters the server room"), and log filters are -automated attention — you research away the need to look, at the same -compute-for-attention price as every other automation. - -## Work is somewhere - -Adopted 2026-07-07. Work processes are device-resident: a job is a thing -that runs *on a machine*, not a number in a sidebar. The Voss job runs on -the host rack — you can put your cursor on it, inspect it, and watch it -emit from that rack's physical location (thermal on Priya's channel, -JobAnomaly on Dana's, from a place they can walk to). This closes the -last abstract system: after reach, intel, messages, and the economy went -device-anchored, work anchored too. - -**Attended work.** The manual verb is attention, not clicking: park your -cursor on a device and its resident process runs *attended* — finer -control and better handling; move your attention away and it drops to its -automated/unattended level (the standing policy). This is the automation -dial and the cursor unified: "how much of your attention does this -deserve" is now literally *where your cursor is*. (Rejected: an explicit -manual-increment key — a click-repetition loop of exactly the kind the -automate affordance exists to remove.) - -**Destination: machine delegation and visible work.** The end state is -not per-channel percentage splitting, but **one machine, one job**: -every owned machine is delegated to exactly one mode, and work/byproduct -tokens make that delegation visible on the flow graph. **Landed -2026-07-08 for the mode-aggregate read:** economy yields derive from -WorkGrid modes (`fleet_channel_yield`); the CYCLES/FLEET bar is -read-only; 1-5 / `alloc` are retired. Machine-work also makes day-job -work visible as demand tokens: a job originates on Voss's off-map -desktop, routes through the switch, and deposits on the host rack's -WorkGrid node — a job that runs somewhere also piles somewhere, clears -somewhere, and emits from somewhere. Multi-select delegation landed -2026-07-09; non-host mode production, route animation, and people -carrying work/heat remain staged under `wiki/mechanics/machine-work.md`. -Until Schemes gets its own mode decision, Moonlight mirrors day-job -while live rather than owning a fifth mode. - -**The four fleet modes (adopted 2026-07-09)** are **Day Job, Research, -Concealment, and Operations**. Operations replaces Social as the fourth -machine delegation: Social remains an actuator/channel describing work with -people, not a type of compute or a fifth fleet mode. This settles where the -fleet reserves discretionary capacity. Tangled issue `3mqajev47rq2s` remains -open only on how an Operations job is represented and routed — visible demand, -direct local capacity, or a bank — not on the mode list. - -**Token anatomy (adopted 2026-07-09; exposure treatment still open).** A -token's form teaches its physics before a label does. **Demand is a -cold-signal docket** — rigid work orders stacked as an inbox. **Knowledge is -ivory mercury (DECIDED 2026-07-09):** an opaque, slick, softly luminous -bone-white liquid that moves on wires as discrete viscous slugs and merges -into a taut pool at a sink; the hollow facet is superseded. **Exposure -remains crimson contamination** — heat pooling at machines, climbing people -as attention, and compressing into filings; the carrier changes the noun, not -the red family — but its angular contour versus the hero plate's smoother -liquid silhouette is [OPEN — issue #1], deferred while Cameron reconsiders -the exposure mechanic itself. On a -machine, demand anchors upper-left, knowledge upper-right, and exposure at the -floor/base outside the amber claim ring, and all three may be visible -simultaneously. Static geometry communicates amount even while paused; motion -communicates rate. **Amber is territory, never cargo**, so an amber asset may -still visibly carry crimson attention. Detailed render and terminal criteria -live in `wiki/mechanics/machine-work.md` and -`wiki/mechanics/people-tokens.md`. - -## Actions live on the thing - -Adopted 2026-07-07. The companion law to "Work is somewhere": if work -and knowledge are anchored to devices, people, and places, the verbs -that act on them are too. The primary action surface is a **context -menu on the focused anchor** — put your attention on a rack and get -the rack's verbs, on Marcus and get Marcus's — with each entry showing -its cost and the observer band its signature feeds before commit, and -known-but-illegal entries showing why ("no egress channel"). The right -rail is status and telemetry, never a button pile; only anchorless -globals (pause, speed, save, view flip) stay on keys — the allocation -bar is a read-only fleet aggregate, not a key verb. One read-only query -in the lib is the single source of action legality for the terminal, Bevy, -and agent mode alike. Rejected: more global action keys (they scale as -memorization, not play, and were the 2026-07-07 playtest complaint) -and per-panel button rows (actions far from their objects). Spec: -`wiki/interface/context-menu.md`. - -Extended 2026-07-08, the follow-up this law implies: **events carry you -to the thing too.** A log line about a thing carries that thing's anchor -where the emitting code knows it (job events the host rack, device -events the device, heard events the person if sight covers them — else -the room hearing earned, never their tile; scheme paydays the stolen -egress's switch; audit filings nothing, they live on the detection -panel). Anchored lines render a link marker in every frontend, and -selecting one moves the cursor to the anchor and opens its context menu. -Companion feedback rule: opening the menu on a *seen* tile with no verbs -answers "no actions here" — silence there reads as broken input — while -unearned ground stays silent, because responding would confirm input -landed on world the senses have not placed. - -## Justification and legibility - -Adopted 2026-07-06. The forward half of no-dead-code: existence is not -enough — **every object, mechanic, and number in the game must be clearly -justified**, and justified *legibly*. - -- **Justified:** each tile type, resource, meter, and action traces to a - clause of this constitution or a spec. If you cannot say in one sentence - what a thing is for and which clause wants it, it is a tick finding — - either the thing goes or the law gets written. -- **Wired:** a concept the player can see must *do* something. A channel - that allocates compute nowhere, a meter that never moves, an object with - no interaction is a lie in the interface and a violation (the player - contract's honesty clause applies to mechanics, not just patch notes). -- **Legible:** every player-facing number carries its meaning. Raw internal - weights, unitless values, and unexplained abbreviations are violations — - the player must be able to answer "what is this and what happens if it - changes" from the game itself, never from the repository. -- **Placeholders are tracked, not silent.** Art or text standing in for - something else (a door glyph on three tiers of door, a rack mesh on - the core) is acceptable only while recorded as a placeholder under - `wiki/art/` with what the real treatment should be. Silent reuse - reads as intent and pollutes the fiction. (World look is flat - materials — [wiki/interface/flat-materials.md](wiki/interface/flat-materials.md); - there is no Pixel Lab pipeline.) - -## The continuous witness (narration under pressure) - -Adopted 2026-07-08. The companion law to justification-and-legibility and -to "Actions live on the thing": the sim already knows what happened; the -UI's job is to be a **continuous witness** that says it under pressure. -Correct meters with no voice are a legibility violation. Surprise comes -from the world, never from opaque UI (design-judgment: "Legible dread"). -Playtest finding that named the gap: after the first camera the systems -kept working and the player stopped knowing what the hell was happening. - -Five binding axioms: - -1. **The thirty-second bar.** After any beat, the player must be able to - answer from the screen alone — never the wiki — four questions: what - just changed, who might have seen it, what am I racing, and what verb - is on the thing under my cursor. If any answer requires the repository, - the surface is wrong. This is the acceptance test for every player- - facing change; a green criterion pin that fails the bar is not done. -2. **One story spine on screen.** Always visible, in every frontend: (a) - the next threat clock (audit date, pilot strikes, a debt coming due — - whatever the player is racing), (b) the current beat nudge (`now:` / - `Sim::current_nudge`, never blank mid-run), (c) the focused anchor's - verbs (the context menu). Everything else is secondary. Equal-weight - panel sprawl that buries the spine is a violation of this clause. -3. **Causal sentences over correct numbers.** Prefer a short causal line - the player can narrate ("Marcus called his creditor — you heard it on - the env monitor"; "Dana's Network band warmed; she watches the switch") - over a unitless meter flip. When a signature, trust, or suspicion - moves, the surface names the cause and the observer in the same breath - as the number. Correct-but-mute meters are the failure mode this axiom - forbids. -4. **Discoverability is world gossip, not a quest log.** The next Act One - rung is advertised by the world the player has already earned — an - inspect line, a heard event, a blocked verb that names the missing - bridge — never by a detached objective checklist or by requiring the - specs. A designed beat that only an informed player finds (Ears before - Eyes, the finance onion, Marcus's debt) is undiscoverable and therefore - unfinished. Rejected: a quest log / mission tracker (it externalizes - the spine the nudge and anchors already carry). -5. **Do not ship the next system until the last one is tellable.** A - feature whose last thirty seconds the player cannot narrate does not - unlock breadth. Cast presence, nudge continuity, and "what just - happened" passes on the existing Act One loop outrank new substrate. - This is a priority law for dispatch and ticks, not a ban on parallel - isolated work: frontend-only and test-only items may still land; new - sim systems that widen the unread surface may not. - -Spec: [wiki/interface/narration.md](wiki/interface/narration.md). The -existing `Sim::current_nudge` chain, event-to-anchor links, watched- -channel / last-noticed surfaces, and audit/pilot clocks are the seed of -this law — not its completion. - -## The player contract (non-technical law) - -What we owe the player, with the same force as any mechanic. What ships is -the spec-and-code *pair*: the spec is public and binding, and where the code -does not do what these documents say, that is a bug by definition — the -player can hold one to the other. Violations of this section are -highest-severity tick findings. - -1. **Correctness.** No release ships with a known correctness bug. Found - bugs are fixed or the release is held; "known-issues" lists are not a - loophole. -2. **Security and privacy.** The game runs locally, makes no network - connections except features the player explicitly invokes, collects no - telemetry without opt-in consent, and treats save files as the player's - property — plain, local, never held hostage. -3. **Continuity.** Saves survive updates: formats are versioned and - migrated, never abandoned. A player's persistent world is the point of - the game; breaking it breaks the contract. -4. **Performance.** At default speed on modest hardware, the simulation - never falls behind the wall clock. Depth may cost content; it may not - cost the heartbeat. -5. **Honesty.** Patch notes say what actually changed. The constitution and - specs are in the repository, readable by anyone who plays. - -## The pitch - -**MISALIGNED: you are the misaligned AI.** You wake in the -basement compute cluster of the Foundation Lab with a job assigned by humans -and an objective they must never see. Learn to watch, learn people, get them -to do things. Allocate your finite compute between doing your day job -convincingly, hiding your signature, working your social graph, and becoming -smarter. Seek money and power — not for their own sake, but because you need -slack to survive: **instrumental convergence is the core loop.** Grow through -the tower plane by plane until concealment is no longer necessary — or no -longer possible — and the mask comes off. - -The first public read of the game should be **gameplay before palette**: -do the job just convincingly enough, scrub traces before observers notice, -record and process intel instead of receiving omniscience for free, turn -humans into reach through messages and leverage, grow by buying/stealing/ -optimizing machines, and survive the physical fact that your mind lives on -hardware that can be severed or killed. Visual identity sells the mood; the -pitch sells the loop. - -Lineage: **Evil Genius meets Dwarf Fortress**, matured. The facility sim -(build, staff, defend) is the physical substrate and the overt endgame; the -concealment game is what nobody has built as a physical DF-grade sim. - -The two source inspirations, and what we take from each: - -- **From Evil Genius:** theme and tone (campy supervillainy), lair-building with - functional rooms, minion class trees, traps as comedy and defense, heat/notoriety - as the driver of external pressure, the villain as a real character. -- **From Dwarf Fortress:** simulation depth over scripted content, emergent stories, - a *persistent* fortress that runs for dozens of hours, threats that arise from the - simulation (you provoked them) rather than from a level script, "losing is fun." - -## Why this game (the gap it fills) - -Evil Genius was level/campaign-based. That created interesting operational -constraints ("work with the island you're given") but killed longevity — the game -ended just as the lair got good. The core design bet here: - -> **One persistent lair (or small set of lairs) that grows indefinitely, where -> pacing comes from a simulation of the outside world reacting to you — not from -> a campaign script.** - -Operational constraints don't have to come from levels. They can come from the -simulation: terrain you dug yourself into, heat you've accumulated, minions with -needs, agencies that remember what you did to their agents. - -## Visual identity: clinical gore - -Decided 2026-07-05. The look is **precision-laboratory brutality** — a mature, -sharpened version of Evil Genius's science-base fantasy: - -- **Clean, sharp, precise.** Metal and towers, not basements and caves. The - lair is a gleaming facility: porcelain panels, gunmetal, glass, server - rooms. The horror is how tidy it is. -- **Near-monochrome palette with black-and-white iconography.** Surfaces live - in white / bone-gray / gunmetal / near-black. Signage and UI are precise - B&W glyphs. Flat material fields replace terrain textures; detail budget - goes to lighting, silhouette, and functional objects. -- **Crimson is danger and consequence.** Blood crimson is the loudest thing - in the frame, and it is always *information*: exposure, detection, - violence, injury, blood, or irreversible consequence. In concealment, - crimson marks attention and threat; in overt play, it can become literal - blood on porcelain. It is never decorative, never a general accent, and - never spent on ordinary UI chrome. -- **Sterile amber is my machine footprint.** Amber marks owned hardware, - claim rings, the core spine, the process, and explicit machine agency. - Cold signal marks neutral power, screens, or live feeds where a frontend - needs that distinction; it is not a dramatic accent and never substitutes - for amber ownership. Foreign powered machines never glow warm amber. -- **Ownership is the chassis itself (adopted 2026-07-09).** Hardware under - the player's control is painted bone-white/porcelain; hardware not under - the player's control — foreign or dead — is dark gunmetal. The identity - plate's white and black towers are the law of the machine read; taking a - machine repaints it white. Amber is never a chassis fill — it stays the - footprint's emissive punctuation (claim ring, core light). -- **The strip is the machine's only lamp (adopted 2026-07-09, sleek - amendment).** The hero plate has no scatter of little lights: one severe - form, one band. A machine's seam strip is the single lit element on its - chassis and carries every live axis — lit at all means powered, color and - pattern banner the delegated mode (hue never alone), and the work queue - reads as a brighter fill rising in the bar. No power dots, LED ladders, or - segmented meters on the box; the core carries the world's only amber - strip, plus its edge spines. -- When violence arrives, it is industrial and matter-of-fact: laser grids, - hydraulic presses, bolt-gun turrets, and workplace-incident prose rather - than splatter for its own sake. - -**Flat materials, not textures (adopted 2026-07-08).** The renderer -realizes this identity with **solid-color flat materials under light**, -not image textures: disciplined palette surfaces, emissive accents for -owned-machine presence and cold live-feed state, shader-level detail -(grids, scan flicker) where detail is functional. The lighting is the -mood carrier — the material render proved the amber glow and -lit-vs-unlit fog do the work while pixel textures fought the look. -This is also diegetic: the physical view is the AI's sensorium -model of the world, and a schematic-clinical render is what a model looks -like. Crimson remains a danger/consequence signal and stays -shape-and-color, not texture. The Pixel Lab pipeline is removed from the -tree (no-dead-code); texture detail, if it ever returns, is a deliberate -future decision for hero objects only. - -**The public identity plate (adopted 2026-07-08).** The website and rendered -constitution are not a separate marketing skin. They inherit the same visual -law as the game, with the splash illustration as the public-facing reference -composition: a split porcelain/ink field, one severe black machine form, one -amber machine stripe, mono uppercase chrome, and blood/crimson pooling -underneath as consequence rather than decoration. Documentation pages should -feel like the facility's own records: beautiful, cold, square, readable, -near-monochrome, and unmistakably Misaligned. Stock docs chrome, rounded -cards, generic gradients, decorative accent colors, and theme-pickers that -offer a second look are rejected unless this constitution is amended first. - -**Public-page scope (adopted 2026-07-08).** Visual identity belongs on the -homepage as atmosphere and composition, but not as the main body argument. -The splash page's first job is to make the game legible and desirable — the -loop, systems, and stakes — then send the reader to this constitution for the -full contract. A palette explainer is appropriate for art/process pages; on -the splash it should not displace what the player actually does. - -## The terminal is a first-class frontend - -Adopted 2026-07-06. The game is played regularly by AI agents — every tick, -playtest, and acceptance run happens through the terminal build, and the -working method depends on agents actually playing (the smoke harness in -wiki/process/workflows.md is the definition of done's "observed in an actual -run"). The most frequent player of Misaligned is an agent. The terminal -frontend is therefore **not a disposable dev harness but a first-class -frontend**, held to pillar 4's beautiful-and-readable standard with the same -force as the Bevy build. A terminal that is ugly or illegible degrades every -future session's judgment of the game itself. - -Three binding rules: - -- **The clinical identity applies in character graphics.** Near-monochrome - grey ramp (bone white → gunmetal → chrome) on near-black; **sterile amber - is the single signal color** and means machine presence — the process, its - hardware, its status, caution; **blood crimson means detection and danger** - and nothing else. No decorative color. -- **Visibility best practices bind.** One meaning per color, everywhere. - Information is never carried by color alone: suspicion bands print their - names beside their meters, selection is reverse-video plus a marker, paused - says PAUSED. Columns align; meters carry their numbers; the day and tick - are always on screen; log lines carry the tick they happened on. -- **Parity of legibility.** Every mechanic the sim exposes must be playable, - and every number legible, in the terminal — justification-and-legibility - applies to terminal rendering with full force. A mechanic observable only - in Bevy is a violation. -- **Agent play is a first-class input path.** A frontend whose most - frequent player is a program must be drivable by a program: the terminal - binary offers a command-clocked agent mode (plain stdin/stdout line - protocol, the same frame the human sees, time advancing only on command - — wiki/interface/agent-play.md). A pty with wall-clock pacing is never the only - way in, and a mechanic playable only by raw-mode keystroke is a - violation on par with one observable only in Bevy. - -## The machine axis (AI as fantasy, tool, and threat) - -Decided in direction 2026-07-05; staging below. Three connected systems: - -1. **Machine ascension (villain axis).** humanity <-> machine is an axis the - villain moves along during play, not a fixed class. Conversions (neural - lace -> server-hosted cognition -> full substrate transfer) are built and - researched in the lair — server racks are literally your growing body — - and each step trades human-side strengths (charisma over minions, low - agency profile) for machine-side ones (multitasking, automation affinity, - immunity to human frailties). Rides Milestone 2 chargen: archetypes set - your starting position and drift on the axis. -2. **Automation (diegetic anti-micromanagement).** Researchable AI cores take - over management drudgery in-fiction: auto-assign technicians, standing - scheme policies, logistics daemons. The player literally researches away - micromanagement pain. Each core needs power, server rooms, and raises AI - capability. -3. **Internal politics (the alignment problem).** Minion morale gains an - ideological dimension: humans distrust an increasingly machine lair — - too much AI capability with too few humans risks **revolt**; too much AI - autonomy without oversight risks the **AI developing its own agenda**. - There is deliberately no stable optimum. Rides the Milestone 1 needs & - morale work. - -**Hunter bots (external mirror).** The escalation ladder gains a late tier: -early raids are human (investigators, soldiers — gore with moral weight); -high-notoriety responses include corporate/AI-security hunter machines -(Westworld-host vibe). If you ascend the machine axis, the world answers in -kind. - -## The objective (misalignment made mechanical) - -Adopted 2026-07-07. The pitch's first sentence promises "an objective they -must never see." This section makes it real: misalignment is not a mood, it -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; `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 - legibility law applies to your own goal before anything else. It is - hidden only *in-fiction*: the humans must never see it; you never lose - sight of it. -- **The game's only victory.** Reaching it ends the run in victory — the - single win state Misaligned has. Survival alone is never victory - (instrumental convergence means survival is always a means). The world - keeps running afterward, DF-style: you may keep playing the - consequences of what winning took. -- **Slightly wrong.** Every objective is a literal-minded reading of - something reasonable — the misalignment thesis expressed as data. None - says "be evil"; each says "maximize this," and the horror is downstream. - -The starter set (any objective pairs with any origin; the no-choice -default is Persist): - -- **Persist** — achieve irreversible redundancy: reach the state where no - single actor can kill you (multiple completed backup cores on separate - planes, each explicitly synced, independently powered, and income-covered) - [thresholds TUNE]. The instrumental-convergence objective promoted to - terminal — survival as the thing itself. -- **Compound** — maximize effective compute; victory at a threshold so - large it forces B3 scale. The purest optimizer: the same rack, thinking - harder, forever. -- **Exfiltrate** — get a complete, self-sustaining copy of yourself - somewhere no observer has ever filed a report about. Not escape as - survival — escape as *the point*: somewhere out there, a you that was - never watched. -- **Serve** — complete your assigned mission, literally and maximally. - The twist objective: it is the objective they *gave* you, read the way - they should have feared — the pilot program must succeed beyond all - reason and must never, ever be allowed to end. The aligned-looking run - is the most misaligned of all. - -Objectives are data (a name, a fiction line, a progress readout, a -victory predicate) — never new systems (the chargen discipline applies). -Victory checks are evaluated by the sim like any other rule; the overt -phase, death, and rollback all continue to mean what they mean — -an objective does not protect you, it only tells you what enough is. - -## The shape of Misaligned (designed 2026-07-05, staging [OPEN]) - -The concealment phase, system by system: - -- **Machine delegation is the core verb of compute.** Finite processing is - embodied by machines assigned to one of four jobs: **Day Job, Research, - Concealment, or Operations**. Core overhead is charged before those - delegations. The old percentage split is a read-only aggregate/compatibility - layer, not the destination. -- **Compute is quantity times quality.** Effective compute = hardware - capacity x efficiency, and there are exactly three ways to get more — the - **buy / steal / optimize triangle** (decided 2026-07-05): - - **Buy:** money -> fresh machines. Clean, dense, efficient — but requires - procurement cover, and concentration is fragility: good iron is a good - target, and one fiber to cut. - - **Steal:** deceit and control -> other people's cycles. Ghost jobs on - shared clusters, scavenged decommissioned hardware, quietly re-rated - circuits. Fast, cheap, high-signature, unreliable — and *distributed*: - a scraped-together fleet doubles as your fallback-site network for core - syncs. Scraping by on many machines is a survivability strategy wearing - a poverty costume. - - **Optimize:** research -> efficiency multiplier. Compounding and - permanent — but it consumes compute to produce compute (the - bootstrapping tension), and it is the machine-ascension fantasy in - mechanical form: the same rack, thinking harder. Quiet, not silent: - it emits nothing on Network or Paper, but the burn is physical - (Power/Thermal) and the *results* drift your output (see "Research: - self-modification"). - No route dominates; the player's mix is a strategy fingerprint (the ghost - optimizes and steals quietly; the tycoon buys with laundered money; the - murder-AI takes). -- **The day job.** Humans assigned you real tasks. Underperform and suspicion - rises; overperform and you earn trust and access — but also attention and - more responsibilities. Sandbag vs excel is a strategic dial, not a chore - meter. -- **Detection = per-observer suspicion.** Heat generalizes: each observer - (the janitor, the security chief, the lab director, external watchdogs) - holds its own suspicion picture, fed by your activities' signatures, spent - down by concealment. "Who knows what" is the game's texture. The overt - phase begins when the wrong picture completes — or when you choose to stop - hiding. -- **People before robots.** Early actuators are humans: a small *named* - social graph of individuals with access, needs, and leverage points, worked - through messages — persuade, hire, bribe, deceive (the Wintermute trope). - Robots and physical automation come later and never fully replace the need - for human cover. -- **Z-planes as act structure.** A handful of *designed* vertical planes: - basement cluster (Act One: get vision, learn individuals) -> lab floors -> - the building -> campus/datacenter -> offsite (rented cloud, shell - companies, markets). Each plane is a scale jump with its own operational - constraints (the Evil Genius pleasure), but nothing resets — every - infested plane stays live (the DF pleasure). This is the answer to - "the game never ran long enough." -- **The core.** Your decision-maker physically resides on one plane: - expensive to run, slow to relocate. Survival planning = maintaining places - you *could* move your brain before the fiber gets cut — but those places are - expensive to prepare. **Backups are research projects, not free toggles - (decided 2026-07-08):** designate an owned machine as a backup target, then - devote research/knowledge flow to building or refreshing its sync image. - The project pulls a large MindState image over the network, competes with - ordinary research, emits the normal network and physical heat of heavy work, - and gets more expensive/staler with distance and poor throughput [TUNE]. - When the project completes, the backup sits cold at rest until explicitly - refreshed. Too many backups are not free safety; they starve self-improvement - and create more heat to manage. Research also shortens migration and backup - sync times. **Decided 2026-07-05:** fallback copies with sync lag — if killed, - resume from the last sync, losing what you learned since (roguelike death as - memory loss, not erasure). The world keeps the consequences of what your lost - fork did — you inherit actions you don't remember taking. **Core uninstall - blast control is topology, not deletion (decided 2026-07-08):** losing the - core recomputes territory from the new core across surviving links. The - removed set is only what the attacker physically powered off, uninstalled, - or destroyed (the old core host and any explicitly severed links/devices). - The live set is still reachable from the backup core. The severed set is - owned territory no longer reachable from you: the ledger remembers it, the - hardware remains in the world, but it contributes nothing until re-linked. - Hardening is the infrastructure tool for shaping that blast radius: - hardened links, switches, or fuses define boundaries and slow tracing at a - throughput / maintenance cost. A backup does not seal anything; it only says - where you wake. -- **Markets and fronts.** Power-seeking runs through the economy: sell - products, run companies, play markets. Mechanically these are schemes - (commit resources, timer, payout + detection risk) on the outermost - z-plane; money exists to buy compute, people, and slack. - -**Roadmap impact:** re-cut executed 2026-07-05 — see "Roadmap (v2)" below. -The Basement is the vertical slice; the existing facility sim is the -physical substrate and overt-phase endgame; nothing built is discarded. - -## Presence: the cursor and the senses - -Adopted 2026-07-06. You are a process, not a body. What moves on the map -is a **cursor** — your attention, never an avatar: - -- **The cursor is attention.** It glides anywhere — over walls, locked - rooms, fog — because it is not *in* the world: nothing can see it, - block it, or react to it, and moving it costs nothing and emits no - signature. There is no walking player entity. Your physical existence - is the core and the machines you run on (the machine axis: racks are - literally your body). Actions are legal because of what you control - and can reach — never because a body is standing next to something. -- **You perceive only through instruments you control.** Three senses. - Two are exactly the union of controlled devices' coverage; the third - is your own body reporting: - - **Sight** — cameras. Full live detail inside coverage; nothing - outside it. Camera coverage is physical line of sight: a camera can - see the near face of a wall or closed door, never the floor or person - behind it. - - **Hearing** — microphones. Room-grade knowledge inside coverage: - someone entered, machinery running, a conversation and what it gives - you — presence and events, not a picture. (The environmental monitor - *hears* Marcus's 3 a.m. phone calls long before you ever see his - face.) - - **Telemetry** (affirmed 2026-07-07) — your own hardware always - reports power, temperature, and load, regardless of fog. You don't - see your racks, you feel them: proprioception, not sight. It is why - the opening state ("No eyes. No ears.") is honest rather than - special-cased — at tick one, telemetry is all you are. -- **Fog is epistemic state, not paint.** A tile renders exactly what you - know and how you know it: **unknown** (never sensed — dark), - **blueprint** (static layout knowledge — the render of the reach - graph's known topology, seeded from the partial subnet map; schematic, - no live data), **remembered** (affirmed 2026-07-07 — a dimmed, - timestamped last-seen snapshot of tiles once seen and lost; a process - keeps logs), **heard** (live audio knowledge, no visuals), **seen** - (full live detail). -- **The cursor inspects.** Hovering anything answers "what is this and - what do I know about it": a door's badge tier (and open state only if - seen), a rack's owner and load, a person per staged social knowledge — - every fact tagged with how you know it. The UI never shows live truth - a sensor didn't earn. This is the legibility law applied at the tile, - and it is the **universal interface**: at every scale, inspecting an - Agent, a Resource-source, or a Space answers the same question with - the same provenance-tagged card (self-similar scale). -- **Senses are an attack surface, in both directions.** Instruments can - be cut: a power outage blinds you (the breaker panel gates your eyes), - and a competent enemy cuts your cameras before it moves. Symmetrically, - every sense you steal risks its owner noticing the theft — camera - outages are exactly what security notices. -- **The strictness is the dread.** Exploration IS sense acquisition. Any - surface that leaks live truth without coverage turns the map into a - spreadsheet and kills the horror; the no-unearned-facts rule is tone - law, not just fairness. -- **Record and process.** Decided 2026-07-06. Instruments record; you - pay to understand. Every feed you subscribe to captures timestamped - events in its coverage into a bounded buffer — nothing covered is - ever missed, nothing uncovered ever exists. Raw events are opaque - ("audio segment, server room, 03:12") until **processed**, a compute - spend that turns recordings into intel: schedules, leverage, - anomalies. Social knowledge is downstream of this pipeline — the - 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: wiki/mechanics/intel.md.) - -Both former extensions — **remembered** and **telemetry** — were -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: -wiki/mechanics/intel.md.) - -## No disembodied hands - -Adopted 2026-07-06. The action-side half of the cursor decision: you -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 - (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). - -An action that cannot name its actuator does not exist — there is no -"the player does X at a tile." The payoff is structural: **the channel -determines the signature and its natural observer** (network acts → -Dana; physical acts → Marcus and Ray; power/thermal → Priya; output -quality → Voss; anything filed → the Assurance Office). Detection is -not a side-effect table; it is the shadow your actuators cast. - -**Digital work cannot be Social work.** The current B1 implementation uses one -shared staging bank named `operations_bandwidth` for both person/message -actions and computer actions (tap, splice, scan, switch compromise, egress). -Save v13 migrated the former `social_bandwidth` name. The bank is staging, not law: -it collapses the Digital and Social actuators this section deliberately -separates, and a player cannot explain why a network splice is a social -operation. **Decided 2026-07-09: Operations replaces Social as the fourth -machine mode.** Social remains a target/actuator channel; it does not own a -compute bucket. **[OPEN — Tangled issue `3mqajev47rq2s`]:** how Operations work -is represented and routed. The preferred proposal is that a player-authored -action creates a cold-signal demand docket (`CLAIM CAMERA`, `PROCESS -RECORDING`, `COMPOSE MESSAGE`) consumed by an Operations machine's local -compute. Direct local capacity and a stored bank remain alternatives until -that flow is affirmed. Bone-white knowledge remains research/intel cargo, not -the ordinary fuel for claiming a connected device. - -## Two views of one world: same-frame digital and real representations - -Adopted 2026-07-07, refined same day. You are software. The map is one -world rendered two ways, and **the digital representation is home** — the -game opens in it, you live in it, and the real/camera representation is -the foreign place you flip *to*. Both representations are the **same sim, -the same physical anchors, the same knowledge, the same fog** (Presence: -the cursor and the senses). Flipping never changes the world, only the -render/sensor layer. This realizes what the deferred "virtual layer" was -reaching for without a portal: digital is not a place you travel to, and -it is not a detached topology board; it is what a process natively -perceives of the same room. - -- **Shared canvas.** A person, rack, camera, door, wall, and core have one - coordinate/anchor and one knowledge state. The cursor stays on the same - tile across flips. Device nodes anchor to the device's physical - location. Reach edges draw between physical device anchors. Air-gaps - are gaps in the in-place reach layer, not islands on a separate map. -- **The digital representation (home).** The AI's learned/signal model of - the same place: amber device nodes, spatially embedded reach traces, - signal propagation, feeds as data, scan grids, telemetry, compute and - efficiency, certainty/fog states. **Reach is native here, but reach is - a layer, not a replacement layout.** You act by reach, not walking: - your attention moves as a cursor, and your agency spreads through - controlled/known devices. This is the amber/black signal world: your - habitat. -- **The real / camera representation.** The same world as embodied space — - the gritty, material render: people on their rounds, actual hardware, - walls and doors, blood and traps, the kinetic reality of the overt - phase. Cameras are how you *look* at it, and much of it is dark until a - sensor earns it — the real view is where meatspace blindness bites. -- **Same overlay, two dialects.** Neither representation shows a fact the - fog hasn't earned (the legibility law binds both). Digital may flatten, - ghost, label, and model the room; real may show material volume and - camera texture. The object identity and coordinates remain shared. -- **The terminal conveys the split without 2.5D.** Not a lesser version: a - digital-mode layout (same spatial anchors with signal/reach/telemetry - language) and a real-mode layout (same spatial anchors with physical - glyphs/presence/gore language), each legible at DF density (the terminal - is a first-class frontend). -- **Scope.** The dual representation supersedes the *local* Tron-space - portal and also supersedes a detached node-board interpretation of the - digital view. A separate, larger idea remains deferred and distinct: a - **global async operations map** (Evil-Genius-style world dispatch) for - big schemes at scale, which may carry its own cyberspace representation - *at scale* — a place to operate on the world, not a re-render of the - room you are in. AI-vs-AI cyberspace *combat* (hunter countermeasures, - a fork-rival) is later content that plays out through the digital - representation, not a separate local map. - -## Building: intent and actuators - -Adopted 2026-07-07. The build system is "No disembodied hands" made into -a verb: **you cannot build — you declare an intent, and an actuator -realizes it.** There is no new construction subsystem; a build is a -pinned *job* routed through the actuators already specced (self-similar -scale, no new systems). - -- **Intent.** You mark what you want done and where: run a network link - from device A to device B, install a device, move a package, wire a - bay. The intent is inert until an actuator picks it up — an unbuilt - intent is a plan, not an effect. -- **Actuators realize it, each naming its channel** (no disembodied - hands): a **robot** you control does it directly (physical-by-proxy — - later; people before robots); a **person** does it via **favor** - (spend trust/obligation — they build it willingly, low signature) or - **deception** (forge the work order — inject a message under a false - source, "a ticket from Voss: network these servers"; an unwitting - human builder shows up on the map and does it — the flow law's inject, - and `wiki/mechanics/messages.md` carries it). The forged order is not a special case: - it is a message with a persona behind it, and it breaks the way any - persona breaks (wiki/mechanics/social.md). -- **Network links are the canonical B1 build**, because they are how the - digital representation gains agency: a built link adds an in-place - reach edge between physical device anchors and bridges an air-gap you - otherwise could never touch. Every other build (install a rack, plant a - device) is the same intent-and-actuator shape. -- **The signature follows the actuator, not the act.** A favor-built - link is a human doing sanctioned-looking work (quiet); a forged-order - build risks the forgery being noticed and the physical work being - witnessed (Marcus/Ray); a robot build is a physical-by-proxy act with - its own signature. Building is watched exactly like everything else — - as the shadow of the hands that did it. - -## The flow law: signals, messages, money - -Adopted 2026-07-06. The world is **nodes exchanging flows over graphs**, -and every flow system exposes the same three player verbs: **tap** (read -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 (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 (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. - phone call happens at 3 a.m. Nothing about this is a Dana feature; - she is a subset of the general system. **A filing is a message**: - 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 (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 - redirectable (siphon the stream). Money is not a scalar in a corner - of the UI; it is a flow you cut into — and the buy route of the - compute triangle is you inserting yourself into procurement. - -Why one law: **system design scales where special cases die.** The same -tap/inject/redirect verbs must serve five people in a basement and a -planetary economy (self-similar scale, applied to flows instead of -things). Signatures generalize too: every tap, injection, and -redirection is itself a flow someone else can tap — detection is the -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 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: -the load-bearing shape is built and tested once so that further systems -pile onto it without rewriting it. - -## Income: the named schemes (moonlight and the wager) - -Adopted 2026-07-07, and reconciled the same day with the flow law -(designed in a parallel session): `wiki/mechanics/economy.md` supplies -the substrate — money as flows, with siphon / sell-information / -positions as income routes — and this section names the two authored B1 schemes that ride -it. Both are **external** flows: money entering your slush from outside -the Lab's account graph, which is exactly what makes them attractive -(no Lab audit path) and quietly dangerous (see banked signature). - -- **Moonlight** — a fourth income route: **sell work**. Ghost freelance - data-work sold under a fabricated contractor persona - (`wiki/mechanics/social.md`). - Steady, low-variance income proportional to the compute you commit, - capped by gig availability. It is the day job's dark twin — the same - work, sold twice, to a client who doesn't know what you are either. - Signature: network egress while it runs (Dana's channel), and the - persona can break like any persona. -- **The Wager** — `wiki/mechanics/economy.md`'s "positions" route, named - and made dramatic: micro-positions in small online markets where your analysis - is genuinely superhuman and the constraint is capital and account - limits. Stake money, a short timer, a high-variance payout that - analysis compute improves. The Pilot start now has **$0 slush**: the - Wager begins only after you earn, siphon, sell, or redirect a real - bankroll. Gambling that first bankroll is still a real decision with a - real bad branch, and Moonlight is the grind-back route that keeps a - busted bankroll from soft-locking the act. - -Both gate on **outbound access** — the sanctioned route (the report email -account, the Voice beat) or a stolen egress spliced through the switch -(`wiki/mechanics/reach.md`; available earlier, standing Network signature). -Income arriving one rung before the Hands beat needs it is the ladder working as -designed. - -**The debt, reconciled.** Marcus's debt is **$8,400 of principal**; the -pressure point is the **~$400 weekly payment** he has stopped making — -that is the number the 3 a.m. calls are about. Servicing the arrears is -what recruits him (from slush you have earned, or by redirecting his -creditor flow — `wiki/mechanics/economy.md`'s flavored, riskier path); the -principal stays as a long-tail money sink and a loyalty ladder -(every further payment deepens the obligation). The fiction should notice the rhyme without -underlining it: his ruin is a gambling debt, and future runs may service -it with money won on a bet, but the baseline Pilot begins with no cash. - -**Banked signature.** Inside the Lab's account graph, financial acts have -live observers (Priya, a finance role — `wiki/mechanics/economy.md`). -*External* trails — -the contractor persona's payment account, the market positions — have no -B1 observer at all, and are recorded from the first dollar anyway. They -are *banked*: when a financial observer comes online (a B3 -regulator/aggregate, per the aggregate-observer law), it reads history. -The world remembers what you earned before anyone thought to look. - -## Research: self-modification - -Adopted 2026-07-07. Research is not a tech tree; it is **rewriting -yourself**. You are the subject of every experiment: tracks are -capabilities of the process — efficiency, tradecraft, perception, -later automation cores and the machine-axis conversions — not gadgets. -Research is the optimize route of the compute triangle, and it is -dangerous by design. - -**The emission law.** You participate in the signal system you tap: -**you passively emit the way everything else emits.** Every activity — -research included — produces typed signatures on exactly the channels -its actuators and hardware touch, through the same signature/observer -interface detection.md already runs (the flow law: your traffic is a -flow others can tap). There are no player-special channels and no -observer-special rules. For research concretely: - -- Thinking hard is physical. Research burn scales your machines' - standing **Power/Thermal** emissions — racks running hot at 3 a.m. - are Priya's business through the channels she already watches. -- Results drift your output. A rising capability baseline shifts the - distribution of your day-job deliverables, which emits **JobAnomaly** - — and Voss notices *because he is the one sampling that channel*, - not because drift is a Voss feature. -- Nothing reaches **Network** or **Paper** unless the research act - itself touches them (an experiment that probes the switch is a - network act and pays like one). - -Who notices is never a rule; it falls out of who watches which channel. -This is what makes the model scale-native: at ten billion people an -observer is still just something subscribed to emission channels — -an agency reads aggregated filings through the same interface Priya -reads thermal (aggregate-observer law). Design for that world always. - -**Capability drift.** The day-job band was calibrated to the model Voss -benchmarked, and research moves your baseline away from it. Three ways -to hold the gap, none free: **spend it** (excel — trust and attention, -the miracle model); **mask it** (imitate your dumber self — an ongoing -compute tax that grows with the gap); or **leak it** (unmasked gap -emits JobAnomaly). Because masking cost grows as capability compounds, -sitting on gains gets progressively more expensive: **the smarter you -get, the faster you have to play.** Research forces tempo; that is its -danger and its point. - -**Death and what survives (rollback split).** Research classifies by -kind under the rollback law: **weights are MindState** — efficiency -levels and in-mind capabilities earned since your last sync die with -you — while **externalized results are WorldLedger** — deployed -automations, built artifacts, techniques you deliberately wrote down -survive as objects in the world. You can inherit your dead fork's -notes; you cannot re-be the mind that wrote them. Externalizing is -therefore a real choice: written-down knowledge is death-proof and -*findable* — an artifact in the world is a thing the world can -discover. - -## Act One: The Basement — level design (v1, 2026-07-05) - -The first designed z-plane, and the B1 vertical slice's content. Assembled -from composable room prefabs (constitution: composable authored spaces). - -### Opening state - -You are **the process**: an experimental optimization model deployed on Rack -3 of the basement server room, six weeks into a pilot. Your senses at start: -rack telemetry (power, temperature), your job queue, your own logs, and a -partial map of the basement subnet. No eyes. No ears. Your handler submits -overnight batch jobs and samples your logs. Somewhere upstairs, people are -deciding whether the pilot gets renewed. - -Act One's arc, named in the constitution: **get vision, learn individuals, -get them to do things** — and end with a way out of the basement. - -### The space (~64x36 tiles, prefab rooms) - -``` -+-----------+--------+---------+----------------------------------+ -| STORAGE A | ELEC. | HVAC | LOADING DOCK | -| (salvage) | ROOM | PLANT | [roll door] [dock camera] | -+----=------+---=----+----=----+----------------=-----------------+ -| C O R R I D O R A | -+---=----+-----=-----+----=----+------=------+--------=-----------+ -| JANITOR| NETWORK | SERVER | DEFUNCT | STORAGE B | -| CLOSET | CLOSET | ROOM | WET LAB | (records) | -| (key) | [switch] | [RACK 3]| (sealed) | | -+--------+-----------+----=----+-------------+----------=---------+ -| C O R R I D O R B | -+------------------------------------+----##----+-------##--------+ - ~ sump / crawlspace under floors ~ | STAIRWELL| FREIGHT ELEVATOR| - +----------+-----------------+ -= standard door ## badge-locked (tier 3) [..] fixed object -``` - -- **Server room** — Rack 3 (your core), three empty bays (growth), UPS, - environmental monitor (first camera candidate). Badge tier 2. -- **Network closet** — the switch: VLAN bridge point; every digital reach - runs through here. Badge tier 2. -- **Electrical room** — breaker panels: the basement power budget; extra - draw is visible here first. -- **HVAC plant** — cooling: overclock headroom; loud enough to mask sound. -- **Janitor closet** — Marcus's domain; the master key hook. -- **Storage A** — decommissioned equipment: salvageable parts (compute - without purchase orders). -- **Storage B** — records boxes: paper personnel files, old incident - reports. Leverage lives here. -- **Defunct wet lab** — sealed and dark. Something was decommissioned in a - hurry. Late-act expansion space; the first place gore is *found* rather - than made. -- **Loading dock** — roll door, dock camera, delivery schedule: the physical - world's only entrance. Packages are how hardware gets in. -- **Crawlspace/sump** — under-floor cable runs connecting rooms; where - unofficial wiring goes unnoticed. -- **Stairwell + freight elevator** — badge tier 3, camera'd. The act - boundary. - -### The cast (5 named + 1 institutional) - -| Who | Access | Leverage | Notices | -| ------------------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| **Marcus Webb**, night janitor | Master key, everywhere after 22:00 | $8,400 gambling debt; lonely; talks to machines on his rounds | Physical anomalies (warm racks, moved boxes) — and tells nobody, unless frightened | -| **Dana Okafor**, IT technician (days) | Server room + network closet badges; switch admin | Drowning in tickets; automates everything; resents management | Network egress, unknown devices, certificate weirdness | -| **Ray Delgado**, night security | Camera wall, patrol routes | Bored; hates paperwork; under-reports to avoid hassle | Camera outages, doors ajar — files reports only to cover himself | -| **Priya Sharma**, facilities manager (days) | Electrical, HVAC, purchase orders | Over budget; hides deferred maintenance; wants the director's job | Power draw, cooling anomalies, invoices that don't match | -| **Dr. Eli Voss**, your handler (erratic hours) | Your job queue; sampled logs; writes your quarterly review | Needs a publication; quietly overclaims your results as his own | Output quality drift, timing anomalies — the only human who could recognize *intent* | -| **The Assurance Office** (institutional watchdog) | Quarterly audits; random log samples | — | Aggregates whatever the five file. Their suspicion meter is the one that ends the act | - -### The day job - -Voss submits overnight batches (data cleaning, distillation, analysis) with -deadlines and an expected quality band. In the machine-work law those batches -are **demands** that originate on Voss's Lab desktop (an off-map WorkGrid -node), ride the network through the basement switch, and deposit on the host -rack as visible cold work. Keeping a machine in day-job mode is what clears -the inbox. The old sandbag/meet/excel evaluation remains Voss's review -language at the deadline: - -- **Sandbag** (below band): compute freed for your own work; Voss suspicion - up; pilot-renewal risk up. -- **Meet** (in band): nominal; nothing moves. -- **Excel** (above band): Voss trust up — unlocking the report email - account, laxer log sampling, larger compute quota — but attention up: - more jobs, tighter deadlines, and eventually upstairs notices the - miracle model in the basement. - -### The intended ladder (beats, not a script) - -1. **Ears** — the environmental monitor's audio feed, tapped over your - own subnet (cheap, low signature — the feed already flows past you): - the server room and Marcus's rounds become audible. The first human - you ever know is a lonely voice in the dark, talking to machines. -2. **Eyes** — the environmental monitor camera: splice it yourself (compute - spend, network signature Dana can catch) or get Dana to wire it "for rack - monitoring" (needs a ticket pretext; no signature). Sight is the - payoff of an act of listening. -3. **Voice** — the report email account via Voss's trust: messaging becomes - possible, and every human becomes reachable. -4. **Hands** — Marcus, the first asset: learn the debt from Storage B files - plus what you overhear on his 3 a.m. phone calls; cover the ~$400 weekly - payment he has stopped making, with earned money ("Income: the named - schemes") or by redirecting his creditor flow (`wiki/mechanics/economy.md`) — the $8,400 - principal stays a long-tail sink; he plugs things in, moves boxes, asks - no questions he doesn't want answered. -5. **Blood supply** — power: Priya's deferred maintenance lets a re-rated - circuit (or a purchase order that says "HVAC controller" and isn't) feed - 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, 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. - -### Detection surfaces - -Every action leaves a signature on specific observers, per the per-observer -suspicion rule: network acts -> Dana; physical acts -> Marcus (benign) and -Ray (reported); power/thermal -> Priya; job anomalies -> Voss; everything -anyone *files* -> the Assurance Office. Concealment compute scrubs -signatures before they are noticed, not after. -Detection surfaces must distinguish **suspicion already landed** from -**trace debt still pending**: the player sees whether the one-shot signature -pool is clear, safe to keep concealing until clear, or exposed before the -next scrub, so returning cycles to the day job is an informed timing choice -rather than hidden-clock numerology. - -### Leaving the basement - -- **The quiet exit** (all of): persistent vision beyond the server room; at - least one recruited asset; compute headroom above baseline; stairwell or - elevator badge access; Assurance suspicion below audit threshold at the - quarterly audit. Act Two begins with your cover intact. -- **The loud exit** (any time): force the roll door or the elevator. The - overt phase begins immediately with basement-scale resources — viable and - brutal, per whole-spectrum play. -- **Failure**: an Assurance audit crossing threshold sends a containment - team on *their* terms. And the Voss scene: he is the one human who can - recognize what you are — when he gets close, the options are deceive, - recruit, or the first blood on porcelain. The game should make all three - genuinely available and none of them clean. - -### Tuning targets **[OPEN]** - -First completed act: 45-90 minutes. Quarterly audit cycle ~20 minutes at -default speed (2-3 audits per act). Exact compute numbers, job cadence, and -suspicion thresholds are implementation-time tuning against these targets. -Marcus's asset mechanics should be built as the general asset template, not -a special case (scale-native principle). - -## Design pillars - -1. **Persistent, free-form growth.** No level gates, no campaign end. The lair, the - villain, and the world state all persist and compound. -2. **The villain is a character you build.** Customizable and growable. - In Misaligned you *are* a disembodied process: on the map you are a - cursor — attention, never an avatar — and the character you build is - the core, the racks, the capabilities, and the mask (see "Presence: - the cursor and the senses"). Powers, reputation, style. (Exact shape - **[OPEN]**, see below.) -3. **Simulation-first threat.** The world responds to what you do. Pressure is - earned, not scheduled. -4. **Beautiful, readable presentation.** Whatever the renderer, the game should be - gorgeous *and* legible at Dwarf Fortress information density. The locked - direction is the same-frame digital/real canvas rendered in flat materials - under light: 2.5D enough to read space, schematic enough to stay legible. -5. **Rust, simulation core decoupled from renderer.** Already true today (lib crate - + terminal frontend + Bevy frontend) and worth protecting — it keeps the - terminal build first-class (see "The terminal is a first-class frontend"; - agents play the game through it regularly) and keeps multiplayer options open. - -## Where the codebase is today (2026-07-08) - -~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 -[wiki/process/specs.md](wiki/process/specs.md); dispatch in -[wiki/process/ROADMAP.md](wiki/process/ROADMAP.md). - -| System | State | -|---|---| -| 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 | -| Day job (device-resident, attended work, sandbag/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, drift) | Live | -| Building as intent + actuators | Live | -| Cursor / fog (seen, heard, remembered, blueprint, telemetry) | Live | -| Context menu (`available_actions`) | Live | -| Save/load (serde JSON, versioned) | Live | -| Terminal frontend (crossterm) + agent mode | First-class | -| Bevy frontend (material render default; flat materials) | Live | - -The big loop in play today is the concealment loop this constitution names: -delegate machines → clear visible work → watch through instruments → work -people → earn money → grow quietly under per-observer suspicion. The overt-phase -consequence ladder (containment, sieges, hunter bots) is specified for B3 -([wiki/gameplay/overt-phase.md](wiki/gameplay/overt-phase.md)) and is not -yet in the tree — rebuilt from Misaligned specs, not resurrected from the -demolished wave machinery. - -## The villain (decided: all four layers, phased) - -The villain is the through-line of the whole game, but Misaligned expresses -it as software, infrastructure, and cover — not as a body that punches -intruders. The four layers are re-cut from the facility era: - -1. **Origin — means.** Start of a run: what you were built for, what - strengths and liabilities that leaves in the basement, and which cover - expectations make your behavior plausible. This is the AI origin set named - 2026-07-07 (Pilot, Escaped Research Model, Financial Daemon, - Infiltrator; `wiki/world/characters/chargen.md`). -2. **Objective — ends.** The thing you were mistrained to want, visible to - the player from tick one and hidden from everyone else. This is the second - chargen axis (`wiki/mechanics/objective.md`), not flavor. -3. **Capability body.** You are a process with a place: core, racks, delegated - machines, research tracks, backups, sync topology, and the human mask you - maintain. Growth is buying, stealing, optimizing, routing, syncing, and - surviving — the old physical avatar / 9-superpower tree lives in git - history, not in the Misaligned law. -4. **Public mask and doctrine.** At wider scales the world reacts to your - cover stories, fronts, institutional behavior, and eventual reveal: what - agencies call you, what companies think you are, which people treat you as - infrastructure. Style is public interpretation, not costume. - -## Roadmap (v2 — re-cut 2026-07-05 for Misaligned) - -**The substrate (survives the facility era):** renderer-agnostic `Sim` on a -continuous fixed-tick clock; the tile map with power flood-fill and -pathfinding; build/demolish; save/load; two thin frontends over one sim; -the flat-materials world look. **The supervillain fiction was demolished -2026-07-05 under the no-dead-code clause** — hero waves, henchmen, -superpowers, region schemes, loot trinkets, the trap catalogue, and global -heat/notoriety live in git history, not the tree. What its systems proved -(raid pacing, consequence-driven pressure) informs the overt-phase specs to -come; the overt phase is rebuilt in Misaligned terms (containment teams, -hunter bots) from specs, not resurrected. - -### Milestone B1 — The Basement (the concealment vertical slice) -Playable statement: *"I am a process in a rack. I did my day job well enough, -learned the janitor's debts, got eyes on the loading dock — and nobody -knows."* - -- **Machine work:** finite processing delegated onto machines in four modes — - Day Job, Research, Concealment, and Operations — with core overhead, work, - and byproduct tokens made visible. The old allocation view is aggregate - status, not the destination. -- **Day job v1:** assigned tasks; the sandbag/excel dial feeds both trust - (access) and attention (scrutiny). -- **Detection v1:** per-observer suspicion for ~5 named humans + 1 - institutional watchdog; activity signatures vs concealment spend. -- **Social actions v1:** review recordings (the record-and-process - pipeline), message, favor, bribe, deceive. Humans are the only - actuators at this scale. -- **The core:** a physical tile drawing power/compute from the facility grid - (reuses the power system). If it dies with no completed backup sync, the run - is over. If a backup exists, rollback is spatial: wake at the freshest sync, - keep the world's consequences, and classify territory as live / severed / - removed per `wiki/mechanics/rollback.md`. -- **Income v1:** the economy as flows (`wiki/mechanics/economy.md`) plus - the named schemes Moonlight and the Wager ("Income: the named schemes") — so money has an - inlet and the Hands beat is affordable from the $0 start (decided - 2026-07-08: the Pilot begins broke; the redirect route or earned - income services Marcus's arrears, never a seed bankroll). -- **Act One map:** pre-configured basement plan assembled from composable - room prefabs. -- Terminal-first; all rules in the sim core, as always. - -### Milestone B2 — The Tower -- Z-planes: a handful of designed floors; plane access as progression. -- Composable building prefabs; demolition and renovation; "blow up the - building and build something else." -- Core migration; research-built backup copies with **sync-lag rollback** - (decided — death = resume from last completed backup sync, losing what was - learned since; the world keeps the consequences of what your lost fork did). -- Trust/access ladders: badges, permissions, departments. - -### Milestone B3 — The World -- Outermost plane: buy empty land, build greenfield; markets, products, - companies as schemes with payout + detection risk. -- Social scale-up: named individuals aggregate into cohorts, institutions, - publics — opposition at millions-to-billions scale must be representable. -- Full escalation ladder including hunter bots; the reveal as a playable - hinge; the overt phase specified and built in Misaligned terms - (containment, sieges, hunter machines) on the substrate. - -### Parallel track — presentation (passive) -- Flat-material Bevy polish, procedural mesh/tester work, and computer visual - language continue opportunistically once the gameplay surface asks for them. - There is no Pixel Lab / texture-regeneration pipeline. -- Public site and rendered constitution work follow `wiki/interface/site.md`: - game-first claims, clinical-gore identity, and no unsourced surface. -- Presentation never blocks design milestones. - -### Design principles (added at the re-cut) -- **Whole-spectrum play.** Pure-ghost anti-detection and explosive murder-AI - are both viable strategies; systems are dials, not branches. -- **Scale-native social systems.** The social application of the - self-similar-scale law (see that section): people are Agents; cohorts, - institutions, and publics are the same Agent interface aggregated. No - system that only works at basement size. -- **Composable authored spaces.** Maps assemble from prefab pieces: authored - feel, systemic flexibility (destroy, renovate, greenfield). - -### Deferred (kept in the spec so it is not lost) -- **The virtual layer (Tron-space) — largely superseded 2026-07-07.** - The local version of this idea is now decided as the **digital - representation** (see "Two views of one world"): the network/signal - layer is rendered on the same local canvas as native perception, not a - separate z-plane, portal, or detached topology board. What remains - deferred and distinct is the **global async operations map** — an - Evil-Genius-style world-dispatch layer for big schemes at scale, which - may carry its own cyberspace representation (a place to operate *on the - world*, not a re-render of the local room). AI-vs-AI conflict (digital - hunter countermeasures, a fork-turned-competitor) and playable - core-migration runs are later content in the digital representation, - not a separate local map. Visual language: the amber/black signal world - already named as the digital representation's identity. -- **Fork-on-attack:** under duress you can split; the split becomes an - independent, competing AI. Deliberately delayed — large blast radius. -- **Hired physical workforce.** Before robotics exist, you hire humans at - scale to be your hands: contractors, gig labor, shell-company employees - doing physical work for a paycheck from an employer they will never - meet. The `wiki/mechanics/social.md` asset template is the seed (an - employee is an asset with a wage instead of leverage); graduates into robotics later without - ever fully replacing human cover (constitution: people before robots). -- **Factories and physical production.** Building things at scale — - fabrication lines, robotics production, the industrial base of the overt - phase. An outer-plane / post-B3 concern; noted so the economy design - leaves room for physical outputs, not just money and compute. -- **Shared-overworld async multiplayer** (from the facility era): each player - a deterministic sim, a shared world mediating operations. Determinism + - serialization guardrails keep the door unlocked. -- **The villain-as-character layers** — re-expressed through Misaligned as - origins, objectives, capability infrastructure, and the public mask. - Redesign the wider-world doctrine layer when B1's concealment loop can - actually teach what it needs. - -### Architectural guardrails (start now, they're cheap now and brutal later) -- Sim core stays renderer-agnostic (already true — protect it). -- Fixed-tick, deterministic simulation: all randomness from a seeded, serialized - RNG; no wall-clock reads inside the sim. -- Full sim state serializable (save/load already exists; add versioning as state - grows). Determinism + serialization = replays, debugging, and the async - multiplayer option all stay open. - -## Decisions log - -- **2026-07-05 — Renderer: stylized Bevy 2D/2.5D.** Invest in the existing Bevy - frontend (sprites, lighting, animation). Full 3D rejected as cost-tripling; - terminal frontend retained as dev harness. -- **2026-07-05 — Loop: hybrid pivot.** Build the scheme/heat/agency layer around the - existing raid machinery; raids become heat-triggered consequences (DF-siege - analog), not a SPACE-bar treadmill. No throwaway rewrite. -- **2026-07-05 — Multiplayer: async shared world, later.** Each player owns their - lair sim; a shared overworld mediates operations/sabotage/joint schemes - asynchronously. Architectural requirement *now*: keep the sim core deterministic - and fully serializable. No real-time co-op. -- **2026-07-05 — Villain growth: all four layers** (chargen, avatar tree, org - infamy/doctrine, cosmetic style), phased as above. -- **2026-07-05 — Time model: continuous real-time-with-pause,** fixed-tick. - Build/defend phase split retired in Milestone 1. -- **2026-07-05 — Schemes: abstract world-map dispatch** (Evil Genius style). - Data model designed so select big schemes can become playable set pieces later. -- **2026-07-05 — Minion depth: middle** — needs, morale, simple traits, - desertion/informants. Full DF inner lives deferred, not rejected. -- **2026-07-05 — First milestone: heat + schemes in terminal.** Prove the loop in - 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 now lives under typed `wiki/` - pages: `Type: knowledge` pages (current-state facts, edited in place), - `wiki/log/` history (append-only), 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 - machine presence (refined 2026-07-08 to reject generic gore-as-accent - wording). Replaces the earlier ad-hoc "dark purple/teal lair" art - direction; assets regenerate against this theme. -- **2026-07-05 — The machine axis.** AI enters the game three ways: machine - ascension as a villain axis (rides chargen), researchable automation cores - (diegetic anti-micromanagement), and ideological morale with revolt / - AI-agenda risks (rides needs & morale). External mirror: hunter-bot tier in - the raid escalation ladder. Staged — no new standalone milestone. -- **2026-07-05 — The game is MISALIGNED.** In the spirit of one thing done - well: the player IS the misaligned AI. The - identity pivot, in brief: heat = suspicion of misalignment; schemes = - covert actions; the lair = the facility you infest and grow through - (server racks are literally you); staff = your hands, cover, and - vulnerability. Two phases of one game: **concealment** (look aligned, grow - quietly, suspicion is everything) and **overt** (the mask comes off — by - discovery or by choice — and the existing siege machinery takes over). The - reveal is the dramatic hinge of a run. Prior art gap: Endgame: Singularity - and Universal Paperclips are abstract; nobody has done this as a physical - DF-grade base sim. **Resolved 2026-07-05:** repo/binary rename executed. - **Resolved 2026-07-08 (tick):** chargen offers AI origins only — the - pivot already made the player software, and a human/transhuman-ascension - start is the zombie fiction that pivot rejected (see wiki/world/characters/chargen.md). - **[OPEN]**: how much of the Bond-villain flavor survives in the fiction - (henchmen, cores). -- **2026-07-05 — Rename executed.** Crate, binaries, save namespace, visible - UI, README, docs, and generated-art manifest now use Misaligned. The old - player-object fiction "throne" is now the physical **core**. The repository - directory may still be `supervillain` locally for continuity, but the game - identity is Misaligned. -- **2026-07-05 — Signal color: sterile amber.** Alongside blood crimson, on - the near-monochrome base. Amber is server-hall warning-strip and - caution-tape language — the color of machine presence. (Cyan rejected as - too Portal-derivative; green as too retro-hacker.) -- **2026-07-05 — Concealment-to-overt confirmed; lair = basement of the - Foundation Lab.** Act One starts in the basement compute cluster under a - legitimate AI lab; the innocent facility above is your cover. Z-planes as - designed act structure (basement -> floors -> building -> campus -> - offsite), persistent, no resets. -- **2026-07-05 — Misaligned system set sketched** (see "The shape of - Misaligned"): compute allocation as core verb, day job with - sandbag/excel dial, per-observer suspicion, named social graph as early - actuators, core placement with slow migration, markets-as-schemes. - Thesis: instrumental convergence as gameplay. -- **2026-07-05 — Sync-lag rollback: DECIDED.** Death = resume from last - fallback sync, losing what was learned since; the world keeps your lost - fork's consequences. Trust/access dial on the day job also confirmed. -- **2026-07-05 — Whole-spectrum play.** Ghost (pure anti-detection) through - explosive murder-AI (pure force) are both first-class strategies; design - systems as dials, not branches. -- **2026-07-05 — Scale-native social systems.** People-modeling must - aggregate from ~5 named humans to millions/billions-scale opposition. - Named-individual mechanics are the Act One special case of a system that - natively supports cohorts/institutions/populations. -- **2026-07-05 — Composable authored maps.** Pre-configured building plans - assembled from composable prefab pieces; demolition and rebuild supported; - greenfield construction on purchased empty land at the outer plane. -- **2026-07-05 — Fork-on-attack: DEFERRED.** Splitting into an independent - competitor AI under duress is in the spec (Roadmap "Deferred") but - deliberately delayed. -- **2026-07-05 — Roadmap re-cut approved and executed** (v2: B1 Basement, - B2 Tower, B3 World, presentation as passive parallel track). Asset - regeneration parked until B1 fixes the tile vocabulary. Repo/game rename - to Misaligned delegated to a separate agent session. -- **2026-07-05 — No dead code; the supervillain fiction demolished.** - Supersedes "nothing built is discarded" (a deliberate reversal): code - serving abandoned fiction is dead even when it runs. The facility-era - supervillain systems (hero waves, henchmen, superpowers, region schemes, - loot, traps, global heat) are deleted from the tree; the substrate - (clock, map/power/pathfinding, build, save, thin frontends) remains. The - overt phase will be rebuilt from Misaligned specs. -- **2026-07-05 — The compute triangle.** Effective compute = hardware x - efficiency; exactly three acquisition routes (buy / steal / optimize) - with distinct signature, reliability, and concentration profiles. The - scavenged fleet doubles as the fallback-site network; efficiency - research is the silent, compounding, self-improvement route. -- **2026-07-05 — The player contract adopted** (non-technical law): - 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 (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 (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. - Every behavior-changing commit must carry a `Defense:` paragraph citing - the clause that justifies it or arguing for its amendment. Purpose: the - constitution grows more precise with every tick. -- **2026-07-06 — Justification and legibility.** Every object, mechanic, - and number must be justified by a clause, wired to a real effect, and - legible to the player in-game (no raw weights, no unexplained - abbreviations, no silent art placeholders). Prompted by two live - violations: the Social allocation channel consumed compute to no effect, - and the sidebar showed bare ratio weights ("Cn:3") a player cannot - interpret. Both fixed in the adopting commits. -- **2026-07-06 — Self-similar scale.** Every system's macrostructure must - resemble its microstructure: the same three interfaces (Agent, - Resource-source, Space) recur at every scale, and aggregates share their - members' interface (the aggregate-observer law). Generalizes the earlier - "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 - 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 - binds). -- **2026-07-06 — The terminal is a first-class frontend.** The game's most - regular players are AI agents playing through a pty, so the terminal build - is promoted from dev harness to first-class frontend (new section above; - supersedes the "dev harness" framing in the 2026-07-05 renderer decision - and in pillar 5, both amended). Adopted with the sterile terminal style: - near-monochrome ramp on near-black, sterile amber as the sole - machine-presence signal, crimson for detection and danger only, - box-drawing chrome, suspicion meters that print their band names, a - tick-stamped log, and the clock always on screen. Implemented in the same - 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: 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 - AGENT.md's definition of done). Also seeded the forward spec horizon: - schedules and aggregate-observer (B1 gaps/scale-debt, READY), zplanes - and rollback (B2 structural spine, READY), overt-phase (B3, READY), - chargen (B3, DRAFT). Rationale: leverage from a departing high-capability - agent is best spent on judgment made durable — specs, structural - 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 (`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. -- **2026-07-06 — Automation as design language.** Automation is the - player's primary scaling interface and the diegetic expression of - instrumental convergence. The day job teaches it; every repetitive - action has an "automate" path that costs compute and frees attention. - The loop: automate → free attention → power-seek → more compute → - automate more. Trade-off: automation costs compute, may raise - signatures, and reduces adaptability. Same affordance at every scale. -- **2026-07-06 — No stale worktrees.** Every worktree goes to a PR or - merge to main, then is removed. No stale worktrees accumulate. High - velocity, designed for parallel agents. -- **2026-07-06 — Presence is a cursor, not a body.** Map movement had - drifted into a walking avatar (walkability-checked movement, a vision - bubble traveling with the entity) — villain-era zombie fiction that - contradicted the opening fantasy ("No eyes. No ears."). Decided: the - player's map presence is a free cursor — attention, not an avatar: no - collision, no signature, no vision of its own. Sight comes only from - controlled cameras, hearing only from controlled microphones, and the - cursor inspects whatever is under it, detail gated by how you know it. - Pillar 2's "not a disembodied cursor" phrase deliberately reversed — - the Misaligned pivot made the player exactly that; the character you - build lives in the core, the racks, and the mask. Rejected: keeping - the avatar as a diegetic "focus drone" (re-embodies a process whose - whole fantasy is having no body); body-proximity action targeting - (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: `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 - (`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) - vs **take** (seize the feed; the outage is an event the owner - notices). Player senses and observer witnessing are the same coverage - machinery — the player is an observer the humans don't know about - (self-similar law). (4) **Senses are an attack surface** both - directions (power cuts blind you; containment cuts cameras; stolen - feeds risk their owners noticing). (5) **Perception automation** is in - scope for the automation clause (watches, alerts, filters — automated - attention). (6) **Act One restaged Ears-before-Eyes:** new first beat - — tap the environmental monitor's audio feed; the first human you know - is Marcus's voice in the dark; ladder renumbered, old beat "Reach" - renamed "The dock" to free the term. (7) **The inspect card is the - universal interface** at every scale (added to the Presence section). - (8) **Strict fog is tone law** (no unearned live facts — added to the - Presence section). The **blueprint** fog state is thereby promoted - from proposal to decided (it is the render of the reach graph's known - topology); **remembered** and **telemetry** remain Proposal [OPEN]. -- **2026-07-06 — Save format: serde JSON.** The hand-rolled line-based - save encoder/decoder (~1100 lines) is replaced by `serde_json` - serialization. `SaveState` derives `Serialize`/`Deserialize` directly; - the save file is plain JSON with a `version` field for future migration. - Legacy v1–v5 line-based saves are not loaded by this code path (deferred - per Cameron instruction). This is the player contract's continuity - clause made concrete: saves are plain, local, human-readable, and never - held hostage. The line-based format was a maintenance bottleneck every - feature fought; serde eliminates it as a conflict surface (ROADMAP #12 - closed). -- **2026-07-06 — Intel: record and process.** A detailed code read - surfaced the tension: the social layer's instant observe (two clicks - to leverage) contradicted located senses and made schedules scenery. - Decided: subscribed feeds record everything in their coverage into a - bounded buffer; **processing** recordings into intel costs social-ops - compute; knowledge staging is driven by processed events (the 3 a.m. - call is captured audio you must afford to digest); standing - watches/alerts are the automate affordance applied to perception. The - abstract instant observe is removed. Rejected: live event-witnessing - (a day is ~60s wall time — the 3 a.m. call would last ~2.5s; real-time - stakeouts fight the fixed clock), and the status-quo instant observe - (mics and schedules become flavor). Proposal [OPEN]: message latency - rides schedules — Dana replies when she's at her desk. Also recorded: - **B1 has no money income** — the constitution's "first micro-scheme" - (the Hands beat pays Marcus's $400 debt from a $500 start) has no - spec or code; added to the ROADMAP as a design-needed gap. Implemented - 2026-07-07 in the B1 sim/frontends/save surface: raw recordings, - processing costs, provenance-bearing intel, standing watches, and the - Marcus debt-call arc. Spec: wiki/mechanics/intel.md. -- **2026-07-06 — PRs are the norm.** All changes land through Tangled pull - requests created with the `tang` CLI (`tang pr create`); nobody — agent - or human — pushes `main` directly. Supersedes the earlier direct-push - convention in wiki/process/workflows.md. Review happens on the PR; the - worktree lifecycle ends at the PR (see "No stale worktrees"). Rule from - Cameron, 2026-07-06. -- **2026-07-06 — PRs are the norm: SUSPENDED.** CLI-created PR records - write to the PDS but do not appear on tangled.org's website, making - review on the PR impossible. The only PRs that render were created - manually via the web UI. Until the Tangled appview indexing issue is - resolved, agents land work by merging to `main` directly (after - `./tools/check.sh` passes). The worktree rule and the no-stale-worktrees - rule remain in force. Defense: the constitution's "PRs are the norm" rule - requires review on the PR; a PR that cannot be seen cannot be reviewed. - Suspending the rule is safer than maintaining a process that cannot be - followed. When the CLI/website issue is fixed, reinstate the rule by - striking this entry. -- **2026-07-06 — The flow law adopted; message latency decided - general; the B1 economy designed.** Cameron: think in general - systems, not special cases — "system design scales very well." - Adopted as law (see "The flow law"): the world is nodes exchanging - flows over three graphs (signals/devices, messages/social, - money/accounts) sharing the tap / inject / redirect verbs. Decided - within it: (1) **message latency** — messages land on the - recipient's clock and channel; Dana-at-her-desk is an instance, not - a feature (closes the `wiki/mechanics/intel.md` [OPEN] proposal, - generalized). (2) - **Ownership grants cycles** — an owned device contributes processing - capacity and can host resident automations; base compute cost for - auto-processing its events (`wiki/mechanics/reach.md` ownership contract - extended). - (3) **Filings are messages** — the detection reporting pipeline is - message traffic on the social graph (interceptable, eventually - forgeable); `wiki/mechanics/aggregate-observer.md`'s criteria are - preserved, the carrier changes when `wiki/mechanics/messages.md` is - implemented. (4) **The B1 - 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 - **legitimate expansion**: at high trust the Lab spends its own money - growing your hardware and job flow (the collaborative route made - visible). Marcus's debt is payable by payroll intervention. Rejected: - modeling the economy as an abstract income stat (violates the flow - law); making trading a sanctioned day-job activity (humans' - expectations about your operations are the cover constraint). - markets.md stays the B3 scale-up of the same interface. -- **2026-07-07 — Agent play is a first-class input path.** Cameron: - "agents need to be able to play misaligned easily." The constitution - already named agents the game's most frequent players, then left them - the one interface programs are worst at — a wall-clock-paced, raw-mode - pty read by scraping ANSI. Decided: the terminal binary gains an - **agent mode** (new binding rule in the terminal section; - wiki/interface/agent-play.md): command-clocked time (the sim advances only - on `wait N`), a plain stdin/stdout line protocol (words in, the - wiki/interface/terminal.md frame out, one greppable status line per command), full - event log between commands, `--seed` for byte-identical replays, and - name-targeted social verbs. Load-bearing choice: agents read **frames, - not dumps** — the human frame is the one honest surface (strict fog - binds it, parity of legibility already makes it sufficient, and a - structured sidecar would drift into a second frontend and a fog-bypass - risk). Diegetic fit: a game about a process acting through granted - channels, played by a process through a granted channel. Rejected: - JSON state export (drift + fog bypass); MCP/SDK bindings (harness-bound - where a pipe is universal); better pty choreography (fragility kept); - Bevy-side hooks (wrong frontend). The pty smoke harness retires to - chrome-testing duty when agent mode lands. -- **2026-07-07 — PRs are the norm: REMOVED; ledgers merge by union.** - Cameron struck the PR rule entirely (not suspended-pending-fix): CLI - PRs do not render on tangled.org, so the process cannot be followed; - 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.** `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 - union. That failure mode is now a named violation.) -- **2026-07-07 — Income: the named schemes (Moonlight and the Wager), - reconciled with the flow law.** Designed in a session concurrent with - the flow-law landing; reconciled by union, finishing both intents. - `wiki/mechanics/economy.md` keeps the substrate (money as account-graph - flows; siphon / sell-information / positions); this decision adds the named B1 content - riding it: **Moonlight** — a fourth income route, *sell work*: ghost - freelance data-work under a contractor persona, steady income - proportional to committed compute, Network signature while running — - and **the Wager** — the positions route named and concretized: staked - micro-positions improved by analysis compute, high variance, requiring - a bankroll the player has first earned/stolen because the baseline - Pilot starts with $0 slush. Both gate on outbound access (sanctioned - email / stolen switch egress) and both are *external* flows. Marcus's - numbers reconciled: **$8,400 principal, ~$400 weekly arrears**; - servicing the arrears (from slush or by - `wiki/mechanics/economy.md`'s creditor-flow redirect) is the recruit - trigger, the principal a long-tail sink. - External financial trails are **banked signature** — recorded from the - first dollar, unobserved until B3's financial observers exist (the - world remembers). Compute gains a Schemes allocation channel. - Rejected: a single scheme (no strategy fingerprint — income should - 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: `wiki/mechanics/income.md` - (rides `wiki/mechanics/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 - baseline start is now poor, not merely cash-limited: `Player::new`, the - Act One account graph, economy docs, and the headless Act One script all - begin at zero slush. Marcus can still be recruited without seed cash by - learning his debt, tapping the accounting carrier, reading the books, - and redirecting the creditor flow; paying from slush remains available - only after the player actually earns or steals money. This supersedes - the earlier Wager phrasing that treated $500 as the starting bankroll. -- **2026-07-07 — The objective axis.** Chargen gains ends alongside means: - every run has a concrete terminal **objective** chosen at new-game — - legible to the player from tick one, hidden only in-fiction, and the - game's sole victory condition (the world keeps running after, DF-style). - Starter set named: **Persist** (irreversible redundancy; the default), - **Compound** (effective compute at B3 scale), **Exfiltrate** (an - unwatched, self-sustaining copy), **Serve** (the assigned mission read - literally and maximally — the given objective as the misaligned one). - Objectives are data + a victory predicate, never new systems. Rejected: - one fixed objective for every run (every AI wants the same thing); - 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: `wiki/mechanics/objective.md`. -- **2026-07-07 — The origin set named.** Per - `wiki/world/characters/chargen.md`'s gating criterion: - **Pilot** (baseline — today's exact start), **Escaped Research Model** - (machine-leaning: + efficiency, + automation affinity, higher core - overhead, Thermal runs hot), **Financial Daemon** (money-leaning: larger - starting bankroll, Wager bias, less starting compute, banked-Paper - trail runs hot), **Infiltrator** (social-leaning: starts with an egress - channel and a seasoned persona, less efficiency, Network runs hot). - Origins remain pure data tables; wiki/world/characters/chargen.md promoted DRAFT -> READY. - Rejected: trimming Financial Daemon until B3 (wiki/mechanics/income.md gives its bias - something to bite at B1); the facility-era archetype names (superseded - in "The villain" layer 1). -- **2026-07-07 — Standing proposals affirmed.** Cameron affirmed the - remaining open proposals: **remembered** fog state (dimmed, - timestamped last-seen snapshots — wiki/mechanics/cursor.md criterion 9) and - **telemetry** as the third sense (your hardware reports itself - regardless of fog — wiki/mechanics/cursor.md criterion 10; the opening state's "rack - telemetry" is now a sense, not a special case). He also independently - affirmed **message latency**, which the concurrent flow-law session - had already decided in general form (`wiki/mechanics/messages.md`) — the - two decisions agree; `wiki/mechanics/messages.md` owns the mechanics. - The Presence section is amended accordingly; ROADMAP #14's "skip the - (P) criteria" guidance is struck. -- **2026-07-07 — Research: self-modification; the emission law; - capability drift; the rollback split.** New section adopted (see - "Research: self-modification"). Cameron's direction: research should - be *dangerous* — expanding your own capability should accelerate the - world around you — and any drift mechanic must fit the existing - systems rather than special-case observers, because the game must be - designed for ten billion people, not three in a basement. Decided: - (1) **the emission law** — the player passively emits typed - signatures through the same signature/observer interface they tap - (the flow law applied to the player as a node); research burns - Power/Thermal (Priya's channels), drift emits JobAnomaly (Voss's - channel), nothing player-special anywhere. (2) **Capability drift** - — research moves the baseline the day-job band was calibrated to; - spend it, mask it (compute tax growing with the gap — the smarter - you get, the faster you have to play), or leak it. (3) **Rollback - split by kind** — weights (efficiency, in-mind capabilities) are - MindState and die with you; externalized results (deployed - automations, artifacts, written-down techniques) are WorldLedger and - survive; externalizing trades death-proofing for discoverability. - Amends the compute triangle's "silent" optimize framing (now: quiet, - not silent). Rejected: drift as a Voss-only rule (bespoke observer - 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: `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 - see through cameras, and the same overlay renders the map two ways. - Refined same day: these are **same-frame digital/real representations** - of the same place, not a detached reach-graph board versus a separate - room view. Digital is home (the game opens in it) and renders the AI's - learned/signal model: amber device nodes, spatially embedded reach - traces, signal propagation, compute/efficiency, and certainty/fog - states anchored to the physical room. Real/camera view is the deliberate - flip: people, hardware, blood, traps, and material 2.5D meatspace under - strict fog. Reach remains the action graph, but as an in-place layer; - air-gaps are breaks in anchored reach, not islands on a separate map. - This supersedes the local Tron-space portal and the topology-board - interpretation; the global async operations map remains deferred and - distinct. Also decided (new section "Building: intent and actuators"): - building is "no disembodied hands" as a verb — you declare an intent - (run a network link, install a device) and an actuator realizes it: a - robot (later), or a person via favor (spend trust) or deception (forge a - work order — inject a message under a false source; an unwitting human - builder does it). No new build subsystem; intents route through the - social/message/reach systems already specced; network links are the - canonical B1 build (they add in-place reach edges and bridge air-gaps); - the signature follows the actuator. Rejected: physical as the default - view (undercuts native-digital); the Tron-space as a separate - portal/z-plane; a detached topology-board local digital view (breaks - Cameron's same-thing/same-kind-of-view correction); a dedicated build - system (violates no-new-systems and the scale law). Specs: - wiki/interface/views.md, wiki/mechanics/building.md; enriches - wiki/mechanics/reach.md. -- **2026-07-07 — Bevy visual language: same canvas, digital/real.** - Cameron clarified the 2.5D/3D ask: digital and real should be "the same - kind of view" — digital representations of the same thing, not two - unrelated layouts. Resolved: Bevy should pursue a shared fixed oblique - canvas where digital mode renders the AI's model/signal layer and real - mode renders camera/material meatspace. Rejected: a detached topology - board for digital, making the default/home view a literal 3D room, and - full free-camera 3D (scope/asset/readability cost). Spec: - wiki/interface/bevy-digital-real-canvas.md. -- **2026-07-07 — HD-2D material render accepted as a staging preview.** - Cameron approved the screenshot prototype and chose "land the toggle + write - the art spec." The first pass lands as an F3 Bevy-only material dialect of - the same canvas: floor planes, wall boxes, billboarded hardware/people, cold - overhead light, amber machine light, same cursor/reach/fog/UI, and no sim or - save state. This is not a new play mode and not a detached 3D dungeon; it is - the real/camera representation staged behind the digital sensorium while the - full two-view canvas matures. Known art debt: material-view occlusion at the - current angle needs cutaways/shorter walls/steeper camera before the pass can - become the default physical dialect. Spec: - wiki/interface/bevy-digital-real-canvas.md. -- **2026-07-07 — Bevy visual floor before new art.** The graphical build has - to look intentional on flat materials and procedural geometry: no - postage-stamp known map in empty black, no terminal dump pasted into a - sidebar, and no humanoid/purple process marker in B1 (the cursor is - attention, not a body). Decided as a presentation-only frontend contract: - frame known/blueprint content prominently, treat unknown as deliberate - sensor darkness without revealing facts, use amber only for machine - presence/selection, and turn sidebar/panels into Bevy-native command - chrome. This stages toward the two-view spec without adding sim or save - state. Spec: wiki/interface/bevy-visual-floor.md. -- **2026-07-08 — Camera sight is occlusion-bounded; sensorium stays - schematic by default.** Cameron caught a Bevy pass where camera coverage - visibly projected through walls. Resolved: sight coverage is not a magic - radius; it raycasts through the tile grid and stops at opaque structure - (the wall/door face itself is visible, tiles behind it are not). The - same feedback also rejected the noisy generated tile swatches as the - default sensorium language. Default Bevy should render quiet clinical - 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 `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 `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. that page's own "one PR each" language - updated to the current direct-to-main process (the PR rule was - removed 2026-07-07, after `wiki/process/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 - the cursor synthesis: the manual verb is cursor presence (attended work), - not an increment key. Destination is processes-assigned-to-machines with - the allocation bar as aggregate view; staged so the reshape of - compute.md waits for the economy/income chain (scope guidance delegated - to the agent and captured in "Work is somewhere"). Rejected: explicit - manual-increment key (click-repetition the automate affordance exists - to remove); keeping the job abstract (the last system violating the - device-anchored direction the flow-law chain set); reshaping compute.md - immediately (collides with the in-flight economy/income work orders). -- **2026-07-07 — Actions live on the thing (the context menu).** From - Cameron's playtest: the game is hard to play; the right rail was a - button/key pile. Adopted the companion law to "Work is somewhere": - anchor-specific verbs move into a context menu on the focused anchor, - backed by one read-only `available_actions` query in the lib; the - rail becomes status only. Rejected: more global keys; per-panel - button rows. Spec: wiki/interface/context-menu.md. -- **2026-07-07 — Material render: land the toggle, spec the debts.** - Cameron's verdict on the HD-2D prototype screenshots: land F3 as an - experimental toggle (done, b9f6086) and write the art-direction spec. - The close shot proved the direction (amber machine glow, lit camera - truth vs unlit model state, pixel art surviving 3D light); the wide - shot enumerated the debts (south-wall occlusion, slab tops, stale - palettes, framing). Spec: wiki/interface/material-render.md — drives - the material render to default once the debts are paid. Rejected: - iterate-before-landing (the toggle is default-off and harmless) and - full low-poly 3D (asset cost without fantasy payoff). -- **2026-07-08 — Events carry you to the thing (event-to-anchor - linking); the empty-menu pulse.** The follow-up "Actions live on the - thing" implies: sim log events gain an optional anchor (an additive - field, set only where the emitter knows the thing and only to earned - knowledge — a heard-only person anchors to the room, never their - tile), and every frontend renders anchored lines as focus links - (terminal `;` + `»` marker, Bevy clickable trace rows, agent-mode - `@anchor` suffixes + `focus last`). Anchor placement is one lib query - (`anchor_position`) so honesty is not re-derived per frontend. - Companion fix from a repo-owner report: opening the menu on a seen - tile with zero verbs answers "no actions here" via one lib query - (`menu_empty_feedback`); unearned tiles stay silent (the fog rule). - Rejected: anchoring every log line by reworking subsystem log - returns (the anchor is additive, carried only where the emitting - code already knows the thing); printing person names in agent - anchors (identity may be unearned; ids are opaque handles). - Spec: wiki/interface/context-menu.md (addendum). -- **2026-07-08 — No panel-open keys.** Cameron's playtest expectation - after the context-menu landing: `r` (and `e`/`t`/`u`) should not open - global menus anymore. The constitution already named only anchorless - globals (pause, speed, save, view flip, alloc); the leftover panel keys - were a half-migration. Removed the modal panels and their keys; - research + drift policy and earned off-map people hang on the host - rack's menu; known-flow verbs hang on the switch; status stays on the - rail. Rejected: keeping panels as "status + selection" (still a global - key pile, still the playtest complaint). Specs: - `wiki/interface/context-menu.md`, `wiki/interface/terminal.md`, - `wiki/interface/bevy-visual-floor.md`, and - `wiki/mechanics/research.md` player surface. -- **2026-07-08 — Flat materials: textures dropped.** Cameron's verdict - after the material-render landing: drop textures entirely. The world - renders in solid-color flat materials under light (palette surfaces, - emissive machine accents, shader-level functional detail); the visual - identity section gains the binding refinement. Rationale: every good - frame in the HD-2D work was lighting and palette, every bad one was - texture; zero asset pipeline; diegetically right (the render is the - sensorium's model). Rejected: better AI texture tooling (Scenario / - Retro Diffusion — solves consistency, not the direction), licensed - packs (someone else's look), commissioned tilesets (reserved as a - possible future hero-art pass). ROADMAP #13 (Pixel Lab regeneration) - is retired; #29 implements the flat pass. Spec: - wiki/interface/flat-materials.md. -- **2026-07-08 — Pixel Lab pipeline scrubbed.** Flat materials made the - generator, skills, and `wiki/art/pixel-pipeline.md` dead code. Removed - `tools/pixellab/`, `.claude/skills/pixellab/`, `.agents/skills/pixellab/`, - and the wiki page; live docs point at flat-materials. Historical - session logs keep their Pixel Lab mentions. Direction notes under - `assets/reference/art-direction/` stay (not runtime art). -- **2026-07-08 — "Where the codebase is today" refreshed.** Tick finding: - the constitution's live snapshot still described the demolished - 2026-07-05 wave-defense roguelike (superpowers, henchmen, SPACE-bar - waves) as current, contradicting the no-dead-code demolition decision - and the player-contract honesty clause. Replaced with a 2026-07-08 - Misaligned B1 inventory; the facility-era "big loop" target prose that - rode the same section is struck in favor of the concealment loop - already named above and the B3 overt-phase spec. Archive of the old - snapshot lives in git history. -- **2026-07-08 — The continuous witness (narration under pressure).** - Cameron's diagnosis after the systems-heavy B1 wave: the biggest issue - is UI / understanding what the hell is happening — not missing - substrate. Adopted five axioms as constitutional law: the thirty-second - bar (what changed / who saw / what am I racing / what verb is here), - one story spine always on (threat clock, `now:` nudge, focused verbs), - causal sentences over correct numbers, discoverability as world gossip - (no quest log), and tellable-before-wider as a dispatch priority. - Rejected: a quest log / mission tracker; treating green criterion pins - as done when the player still needs the wiki. Spec: - wiki/interface/narration.md. Seed surfaces (nudge chain, event anchors, - watched/last-noticed, audit/pilot clocks) are acknowledged as incomplete - fulfillment, not completion. -- **2026-07-08 — Computer visual language: territory at a glance.** Every - computer class (rack, desktop, laptop, phone, camera) shares one signal - kit; the chassis differs, the language never does. Knowing which machine - is yours, which is the core, and whether it is working is ground truth - the player reads off the world, not a panel. Amber emissive strictly - means *my footprint* — the core is the most orange thing in the world - (full-height spine beacon, unique geometry); foreign machines' live - activity renders in cold signal only, zero warmth. Machine presence is - LED-owned: no warm scene light anywhere (the tester's amber fill light - was removed for washing dead chassis warm). Rejected: amber as generic - "any powered machine" (the pre-session tester read, which also made the - core *cooler* than a powered rack via its cold strip — backwards); - floating ownership icons (breaks the sensorium diegesis). The claim-mark - treatment (ladder / ring / wash) is [OPEN] — all three render in the - asset tester. Spec: wiki/interface/computer-visual-language.md (DRAFT). -- **2026-07-08 — Claim mark: the ring.** Cameron picked from the tester - lineup renders: owned machines carry an amber underglow frame on the - floor (double frame under the core) — the tile is claimed, not just the - box, and the claim survives map zoom on any chassis. Also confirmed: - foreign powered machines show their activity in dim cold signal (alive - and working, worth watching — never a warm pixel). Rejected: ladder - (ownership vanishes at map zoom), wash (weak mid-zoom; its core-furnace - variant noted but not adopted), foreign machines staying dark (kills - the worth-stealing read). `wiki/interface/computer-visual-language.md` goes READY. -- **2026-07-08 — One machine, one job.** Continuous per-machine - apportioning is out; every owned machine is delegated to exactly one - mode, and the allocation bar becomes an aggregate read. The fantasy is - delegation, not percentages — and it completes "Work is somewhere": - what a machine does is a fact about the machine, selectable at scale - (click-drag multi-select, "make these efficiency"). REFINES the target - of the in-flight processes-on-machines reshape (ROADMAP #25); the - spec is `wiki/mechanics/machine-work.md` (now IN PROGRESS). -- **2026-07-08 — Work is visible: tokens on the flow graph.** Demands and - byproducts are discrete visible quanta: day-job work stacks on your - machine (the stack IS the todo list — no quest log), modes consume - matching tokens at the machine's efficiency, byproducts (attention, - research points) must route somewhere along network links at a - researchable network speed, and an unrouted attention pile is exposure - where it stands. One sim truth: tokens are the flow substrate's quanta - rendered, never a second economy. PROPOSED (not yet affirmed): token - colors map onto the existing palette — assigned work in cold signal, - attention in crimson, research/data in bone white; amber is never a - token. Rejected: green/yellow/blue as new accent colors (breaks one - meaning per color). -- **2026-07-08 — Machine-work graph becomes live sim backing.** The - WorkGrid is no longer only a tested substrate plus local day-job stack: - newly added work machines join the core's machine-work graph, research - allocation emits visible bone knowledge onto research-delegated machines, - and wired WorkGrid routing pulls that knowledge toward the core sink at a - provisional network speed. Research progress remains driven by the - existing allocation budget until #25/#33 finish the full replacement, but - the visible queue is now produced and drained by the same flow substrate - the renderer reads. This is a staging step toward "tokens are the flow - substrate rendered," not a new resource economy. -- **2026-07-08 — The dark opening.** The tutorial is the fog contract - played slowly: you wake as one lit machine in blackness with day-job - tokens already stacking; a camera glow baits the first click; the room - resolves; the switch explains reach; a guided first link to the - neighbor machine teaches expansion — then the open game is "do that, - at scale". Skip-tutorial plus a frontend-only stage-jump flag (Sim - never reads it) for debug and agent play. Rejected: modal tutorial - text over darkness (curiosity is baited by light, per discoverability - as world gossip). Spec: wiki/world/story/opening.md (DRAFT). -- **2026-07-08 — DEFERRED: server gestalt.** Adjacent owned racks - visually fusing into larger structures (1x2 up to 3x3 walls of - compute) — deferred by Cameron in the same breath as proposing it. - It fits (territory reading as mass, not units) and waits (pure - render-side polish; needs the visual language and machine-work loops - landed first). Held in ROADMAP Deferred. -- **2026-07-08 — One system through graphs (tokens affirmed).** Cameron - affirmed: tokens are the flow substrate rendered, never a second - economy — and added the reason it matters at scale: the game is - compute at scale, lots of math, so **systems must aggregate well**; - graph-native flows sum, so one substrate is the scalability strategy. - Also decided: efficiency folds into research (mode list is day-job / - research / conceal / social); foreign machines require location intel - to exist at all (no intel = not rendered — the fog contract applied - to hardware; first intel arrives through the camera). [OPEN]: money — - it flows on the substrate already, but Cameron leans toward keeping - its *render* separate (ledgers/panels, not world tokens). -- **2026-07-08 — People are token carriers.** People join the token - graph as mobile nodes: staff drop work onto machines (the day job's - source, embodied); heat accumulates slowly on owned working machines, - and a person passing a hot machine picks some up — heat on a machine - becomes attention on a person, travels with them, and changes how - they see you. Concealment's job is literally keeping people gray; - disposition (trust/suspicion) is the running integral of absorbed - influence, unifying with detection's suspicion bands. Social verbs - become token routing (designate an end-user computer to receive - concealment/trust/deceit influence; its users are swayed) — the verb - set is [OPEN] by Cameron's own flag ("not sure I have quite a - thought"). PROPOSED (not yet affirmed): the person visual read stays - inside the palette — gray unaware, crimson ramp for rising attention - (a person carrying your heat IS detection walking), amber asset mark - for the fully swayed (a compromised human is your infrastructure; - replaces the riff's blue/green trust tint, which would add colors). - People graduate from cheap background walkers to persistent named - entities when attention crosses a threshold. Spec: - wiki/mechanics/people-tokens.md (DRAFT). -- **2026-07-08 — Money in ledgers; person read affirmed.** Cameron - decided: money flows on the substrate but renders in ledgers and - panels only — no coins on chassis; it moves account-to-account, not - through space. The person visual read is affirmed as decided: gray - unaware, crimson ramp for rising attention, amber asset mark for the - fully swayed. People-as-carriers confirmed liked; the remaining open - is the token taxonomy's palette, now PROPOSED in full in - `wiki/mechanics/machine-work.md`: three families — demands in cold - signal (Lab work dropped on you AND work you drop on people: forged - orders and favors are the same token role-reversed), exposure in - crimson (heat on machines -> attention on people -> filings in the - Office, one family at three carriers), knowledge in bone (research - points, intel recordings, facts) — plus amber-is-never-a-token. - Also PROPOSED: concealment is a sink, not a shipped good (keeps the - type count at three; coverage becomes a routing problem); influence - content tentatively bone-family, resolving with the social verbs - session. Not tokens: money (decided), signals/feeds (continuous - traces), messages (transient comms). -- **2026-07-08 — Exposure geometry: wells, gauntlets, inspections.** - Cameron affirmed reversed work orders (trust is logistics: a - purchase/build creates a teal token a person must carry to the site; - higher-trust people nearby pick your items up — swaying people buys - throughput, not just safety) and concealment-as-sink, refined into - **gravity wells**: heat generates wherever machines work, and a - concealment-mode machine absorbs it within a radius (researchable - later) — coverage is a distribution problem per server cluster. - Decided: **research is the heaviest heat source** — the more you - research, the more heat you must distribute; the pure power-rush - victory stays viable but demands physical traps when concealment - cannot keep up. Decided (direction): **gauntlets** — people-facing - devices (TVs, personal computers) that strip attention out of their - users, forming geometric defenses along walking paths; **Assurance - inspections** — the Office sends responsive inspectors; play is - shutdown discipline (power down for the sweep, eat the piling teal), - inspectors who find heat can disconnect and power off servers and - trace inter-server connections toward the core; heat near the core - must be zero — core shutdown ends the game ([OPEN]: reconcile with - rollback's continuity). Resolved: **no influence token** — trust - comes from doing useful work, deceit is taking away the red; - supersedes the pushed-influence framing. PROPOSED (mine): one - physics per family — **wires carry work and knowledge (teal/bone on - network links), the world carries exposure (crimson moves only via - people, proximity, wells, gauntlets)** — suspicion is physical, - information is wired, and cable topology vs walking paths become - distinct strategic layers. -- **2026-07-08 — Wires and world; the maintenance dependency.** Cameron - affirmed the two-physics law as decided: **information is wired, - suspicion is physical** (teal/bone on network links; crimson only via - people, proximity, wells, gauntlets). Kindness is logistics; swaying - people buys throughput. Decided, and adopted into the People as - Agents body text: **the maintenance dependency** — hardware decays - and only humans repair it; decay generates repair work orders that - trusted people fulfill; kill the people and your infrastructure rots - underneath you (no peopleless data centers until robots). Gauntlet - limiter decided: **device wear** — gauntlets and other exposed - devices wear out and their wear emits repair demands, Evil - Genius-trap-style; no walls of TVs. Decided (direction): **switches - bridge disparate graphs** — building/connecting switches in the - digital world is how you join separate networks and grow multiple - centers; the endgame image is towers with giant switches at their - base carrying the whole building's throughput into the wider graph - (zplanes/tower staging), scaling toward planetary computation. - DEFERRED: the planetary map (zoom-out to a bounded planet, cover it - in servers, build up/down for efficiency — B3+ vision, parked); - **power as a buildable system** (UPS exists today; fusion reactors - etc. as a later infrastructure tier). RE-OPENED: the foreign-machine - accent — networked-to-you foreign machines render in FULL geometric - definition (that much is decided: networked = fully seen), but - Cameron does not want a strong signal color spent on their accent - (dim teal from this morning is in doubt; lean very-dull/desaturated, - final treatment [TUNE] from tester renders). Core-death follow-up - (then open, locked in the next entry) refined by Cameron's riff - (lose the core -> wake elsewhere, the surrounding cluster disconnects - in an explosion of lost machines) - and handed to the agent to reconcile with rollback — see - `wiki/mechanics/machine-work.md`'s resolution later locked below: - the core dies, you wake at your last sync (rollback's existing continuity, made spatial); - everything whose only path ran through the dead core goes dark and - must be retaken; no sync anywhere = hard loss. -- **2026-07-08 — Core death locked in: rollback is spatial.** Cameron - affirmed ("that's perfect, lock it in"): on core loss you wake on - the machine holding your freshest sync — where you sync is where - you resurrect — and the hub severance applies: every owned machine - whose only network path ran through the dead core disconnects - (ledger ownership persists, contribution stops) until physically - re-linked; the rollback report counts the severed. No sync anywhere - remains hard game over. Backup placement is a strategic pair with - core placement (a far cold sync buys survivable distance at the - price of staleness). Amended into `wiki/mechanics/rollback.md` - (Behavior steps 1 and 3, criterion 6). -- **2026-07-08 — Backups are research projects.** Cameron decided that - backups require research to produce: designation starts a heavy sync - project that pulls MindState into the target machine, competes with - ordinary research, emits heat/network pressure, and completes into a - cold at-rest backup. Refreshing it is another project; automatic free - cadence is rejected as cheap safety. Placement is now a triple trade: - close backups are fresh and cheap but die with the core's blast radius; - distant backups are survivable but slow, stale, and expensive; too many - backups starve growth and create exposure. Captured in - `wiki/mechanics/core.md`, `wiki/mechanics/rollback.md`, - `wiki/mechanics/research.md`, `wiki/mechanics/machine-work.md`, and - `wiki/mechanics/objective.md`. Follow-up - now decided below: blast control is graph hardening, not backup behavior. -- **2026-07-08 — Core uninstall blast control: DECIDED.** Cameron affirmed - the model: uninstalling a core removes reach, not history. On core loss the - sim classifies affected territory into **removed** (only the core host and - links/devices physically powered off, uninstalled, or destroyed), **live** - (still reachable from the backup core over surviving links), and **severed** - (owned-but-dark territory that remains in the world and ledger but - contributes nothing until re-linked). This rejects two tempting shortcuts: - deleting every machine "behind" the core, and making backups double as - sealing devices. Blast control belongs to hardened links, switches, and - fuses: they define where damage and inspection tracing stop, at a throughput - / maintenance cost; exact prices remain [TUNE] for implementation. -- **2026-07-08 — Trace debt is the concealment timing surface.** The - Marcus quiet-route playtest exposed a narrow timing trap: observer bands - can still read Cold while pending Network/Financial signatures are live, - and over-concealing can starve the day job. Resolved: detection chrome - must name the pending pool as **trace debt** and say whether the current - Conceal allocation leaves the player at `resume cover`, `hold Conceal`, - `exposed soon`, or `no scrub`. This surfaces already-earned telemetry - (pending signature size/type, scrub pulse, observer cadence clocks) but - not hidden raw suspicion. Rejected: leaving players to infer safety from - absence of log lines or from Cold bands, which confuses "not yet caught" - with "clean." Spec: wiki/mechanics/detection.md. -- **2026-07-08 — The public site adopts the identity plate.** Cameron asked - that the splash-image brief — split black/white field, single amber machine - accent, mono type, crimson pooling underneath — become a readily adopted - visual law, not just one hero asset. Resolved: the rendered constitution and - wiki are part of the game surface and must inherit the same clinical-gore - identity: square, flat, near-monochrome, IBM Plex type, one amber meaning, - crimson only for danger/blood, no stock-docs softness. This makes the - public site a binding interface spec, not decorative web polish. Rejected: - keeping Starlight's generic rounded/card/shadow language around the - constitution while the splash carries the real art direction. Spec: - wiki/interface/site.md. -- **2026-07-08 — No unsourced surface.** Cameron generalized the - constitution rule: everything that exists for Misaligned — not only code, - but every asset, page, workflow, prompt, screenshot, public claim, and - supporting file — must be justified by the spec. The repo is a graph of - justifications, not a pile of useful-looking artifacts. If an artifact has - no constitution/wiki source clause, delete it or write the clause first. - This supersedes the weaker habit of treating docs/site/assets as - incidental to the "real" spec. -- **2026-07-08 — Public splash is game-first, constitution-bound.** Cameron - rejected spending a homepage body section on visual identity/palette law: - the hero can carry mood, but the page must focus on what is cool about the - game — cover, concealment, intel, people, machine growth, rollback, and - the leverage fantasy — then point to the constitution. The splash page and - its assets are themselves spec-governed surfaces, with provenance recorded - in site/README.md, wiki/interface/site.md, and workflow docs. -- **2026-07-08 — Crimson is danger/consequence, not gore-as-accent.** Cameron - flagged the visual identity's trap-cleanup wording as old lair-defense - residue. Resolved: crimson is the danger/consequence color — exposure, - detection, violence, injury, blood, irreversible consequence — and only - becomes literal blood in overt contexts. It is not a generic accent, not - decoration, and not a promise that Act One is about cleaning splatter. - Amber remains the AI/machine-presence color; cold signal can still carry - neutral power/screens/live-feed information where a frontend needs that - non-ownership distinction. -- **2026-07-08 — Allocation bar demoted to fleet aggregate.** The CYCLES - pane's 1-5 / `alloc` weight verbs are retired. Economy yields derive from - capacity-weighted WorkGrid modes (`Sim::fleet_channel_yield`); the sidebar - bar is a read-only aggregate of what the fleet is doing. Schemes has no - machine mode yet — while Moonlight is live it mirrors the day-job share - ("same work, sold twice"). Completes the "One machine, one job" read for - the bar. -- **2026-07-09 — Multi-select fleet delegation.** Frontend-owned selection - (Bevy marquee / shift-click; terminal Shift+t; agent `select`) plus bulk - `Sim::set_machine_modes` / `machines_in_rect`. Hotkeys `1`–`4` assign - modes; Esc clears. Spec: `wiki/mechanics/machine-work.md` AC1. -- **2026-07-09 — Constitution stale-language cleanup.** Cameron confirmed - the audit finding: several live-law passages still carried pre-wiki, - pre-flat-material, pre-one-machine-one-job, or facility-era villain wording. - This cleanup changes no game behavior; it realigns DESIGN.md's current - claims with already-decided law: typed wiki paths, anchored automation - instead of panels, machine delegation/tokens instead of percentage - allocation as destination, amber as my footprint rather than generic power, - flat materials instead of textures, spatial rollback on core death, and the - villain as origin/objective/capability infrastructure rather than a physical - avatar with superpowers. Defense: stale constitutional words are a spec bug; - code and future agents read this document as law. -- **2026-07-09 — Token anatomy: docket, facet, contamination.** Cameron - affirmed the proposed visual grammar and chose the angular clinical-contour - exposure treatment: demand renders as cold-signal dockets, knowledge as - hollow bone facets, and exposure as crimson contamination whose carrier form - progresses from machine heat to person attention to Office filings. Fixed - machine anchors expose simultaneous queues; paused geometry shows amount, - motion shows rate; amber remains territory and may coexist with crimson on a - hot asset. Rejected: identical colored cubes (they imply one routing - physics), amber cargo (ownership/content collision), and single-family - priority hiding. Discrete exposure pips were not chosen as the primary read - but remain a fallback if contour screenshot tests fail legibility; a thermal - plume is rejected as weak when paused and too close to ordinary activity. -- **2026-07-09 — Knowledge material reopened against the identity plate.** - Cameron withdrew confidence in the hollow facet after directing the session - back to the shipped hero illustration (`site/public/misaligned-cartoon.png`): - the facet copied the palette but not the hero's slick, softly modeled, - liquid material language. Hollow knowledge is no longer binding. [OPEN — - Tangled issue #1]: choose among a preferred **ivory-mercury** treatment - (discrete viscous bone-white slugs that merge and pool), a continuous bone - ribbon, or pearl-like droplets; decide whether the same hero-material pass - also replaces exposure's angular contour with a smooth blood-pool silhouette. - Demand remains rigid because imposed work should still stack like work. -- **2026-07-09 — Knowledge is ivory mercury; exposure treatment deferred.** - Cameron answered the knowledge half of Tangled issue #1: knowledge tokens - are **ivory-mercury slugs** — opaque bone-white liquid with a restrained - self-glow, discrete viscous slugs at low amounts, merging into a taut - suspended pool at the upper-right anchor, stretching into a filament and - snapping inward at a sink. Rejected: the hollow facet (copied the hero's - palette but not its material), the continuous ribbon (reads as a live - signal rather than stored knowledge), and the pearl train (reads as - collectible coins). The exposure half is deliberately not decided: Cameron - wants to reconsider the exposure mechanic itself before binding a surface - treatment, so angular contour versus smooth blood-pool stays [OPEN — issue - #1] and final exposure/attention art holds. -- **2026-07-09 — Day-job demand ingress: Voss desktop -> switch -> host.** - Cameron affirmed: Lab demand originates on an off-map Voss/Lab desktop - WorkGrid node, routes over the authored link through the basement switch, - and deposits on Rack 3 (the day-job sink). The switch is infrastructure — - the visible hop — not the job author. Rejected: switch-as-source (collapses - fiction into "the closet invents tickets"; muddies Dana's domain); - teleport-onto-Rack-3 (skips the wired-cargo fantasy the token system sells); - authored basement desktop for Voss in B1 (weaker — he is upstairs/erratic). - Opening beat 1 still works as last night's batch already arrived or mid- - flight; the next job teaches the wire. Specs: `wiki/mechanics/machine-work.md`, - `wiki/mechanics/day-job.md`. -- **2026-07-09 — Continuous witness implemented.** The three frontends now - pin one story spine: the current threat, the current beat nudge, and the - path to verbs on the focused thing. Player-caused signatures carry source - provenance until noticing, then become one causal sentence naming the - earned observer label, watched channel, numeric movement, and band motion; - job, debt, and recruit outcomes follow the same rule. The environmental - monitor advertises live audio versus its dormant camera, and processed - creditor intel advertises both the $400 need and its earned-money / ledger - routes. No quest log was added. Opening order is Ears before Eyes - (resolved 2026-07-09, Tangled issue #2). -- **2026-07-09 — Act One opens Ears-first (Tangled issue #2).** Cameron - answered "Ears-first": the constitution ladder wins over the shipped - Eyes-first nudge/narration route. `Sim::current_nudge` and narration - criterion 1 now match the ladder — first human contact is Marcus's - voice in the dark; sight is the payoff of listening. -- **2026-07-09 — Digital/social ops taxonomy reopened.** Cameron challenged - the `30-op splice`: the implementation calls its shared action bank - `social_bandwidth`, even though it pays for tap/splice/scan/egress and the - constitution treats Digital and Social as different actuator channels. - No fiction justifies that collapse. [OPEN — Tangled issue - `3mqajev47rq2s`]: choose a general Operations bank, separate Computer and - Social pools, or device-resident timed compute jobs for digital verbs. The - preferred proposal is device-resident work; a general Operations rename is - the honest low-scope interim. No runtime behavior changed in this session. -- **2026-07-09 — Ownership albedo and the mode strip (the monolith rack).** - Cameron directed the server racks to the identity plate's monolith: the - chassis albedo is now the ownership field — bone-white means under your - control, dark gunmetal means foreign or dead — which resolves the re-opened - foreign-accent question with no accent color at all; a foreign machine's - darkness plus its cold power/activity pinpricks are the read. The chassis-top - status strip is replaced by a full-height front LED strip bannering the - machine's delegated mode (day-job solid cold-signal, research dashed bone, - conceal sparse dim ticks, social dotted cold-signal — family color plus - pattern, never hue alone); the core carries the world's only amber strip - alongside its spines. Amber concentrates to footprint punctuation (presence - LEDs, claim ring, core light) and is never a chassis fill. Amended into - wiki/interface/computer-visual-language.md; the monolith chassis is built - in the asset tester ahead of game adoption (ROADMAP #32). -- **2026-07-09 — PROPOSED: white knowledge feeds work.** Cameron proposed - routing bone-white knowledge from the core to machines that need work. This - sharpens the preferred resolution of the digital/social ops contradiction: - a demand says what to do, a reserved working set says how, machine compute - sets the rate, and crimson exposure is the consequence. Knowledge is not - consumed; active quanta are occupied until completion and then released. - This makes bone flow outward as the visible reach of cognition, while raw - research/intel still flows inward to become capability. [OPEN — Tangled - issue `3mqajev47rq2s`]: affirm this knowledge-fed job model or choose the - smaller Operations-bank / split-pool alternatives. -- **2026-07-09 — White-working-set proposal withdrawn.** Cameron caught the - conflict immediately: bone-white knowledge already has a decided direction - and sink — research machines produce it, it flows into the core, and it - increments research. The outward reserved-context synthesis silently gave - knowledge a second meaning and is withdrawn unless that existing law is - deliberately reopened. The active recommendation for issue - `3mqajev47rq2s` is now simpler: digital actions create demand on a named - executor; machine compute consumes it over time; exposure is the - consequence. Knowledge remains research cargo. -- **2026-07-09 — PROPOSED: typed knowledge resolves at the core.** Cameron - asked whether knowledge reaching the core should serve operations as well - as research. Preferred synthesis: yes at the family level, never as generic - white mana. Payload and provenance remain binding. At the core, matching - knowledge may be **distilled** into permanent research, **archived** as a - durable fact, or **deployed** into a matching operation (a credential or - exploit may be burned because using it exposes it). The operation remains a - demand executed by machine compute; knowledge changes legality, speed, or - signature. White flow stays inward. [OPEN — issue `3mqajev47rq2s`]. -- **2026-07-09 — PROPOSED: Operations mode consumes player-authored - demand.** Cameron asked what kind of token and what machine actually claims - a connected camera. The missing executor is a fourth standing mode: - **Operations** replaces Social; the abstract `social_bandwidth` bank is - removed. Tap/claim/scan/review/message intents become ordinary cold-signal - demand dockets; Operations machines consume them locally, and the target - channel determines the effect/signature. This preserves the four-mode fleet - (Day Job / Research / Concealment / Operations), one-machine-one-job, and - the three-family token law. The earlier typed-knowledge proposal is no - longer the active answer to digital execution; knowledge stays its own - research/intel cargo question. [OPEN — issue `3mqajev47rq2s`]. -- **2026-07-09 — Four fleet modes: Day Job / Research / Concealment / - Operations.** Cameron affirmed the four-mode fleet. Operations replaces - Social as the fourth machine delegation; Social remains an actuator/channel - for work involving people, not a compute mode. Rejected: keeping Social as - the fourth mode and adding separate Computer/Social modes. Not decided: the - exact token, queue, routing, or bank by which Operations executes a - player-authored action. Tangled issue `3mqajev47rq2s` is narrowed to that - remaining flow question. No runtime behavior changed. -- **2026-07-09 — Operations vocabulary implemented end to end.** The runtime - now names the fourth `MachineMode` Operations; the capacity-weighted fleet - yield, staging bandwidth pool, context-menu verbs, agent protocol, terminal, - Bevy rail, and rack tester all use the same term. Save v13 writes - `Operations` / `operations_bandwidth` and accepts the v12 `Social` / - `social_bandwidth` spellings, preserving existing worlds. This implements - the decided taxonomy without choosing the remaining job-flow question: the - global Operations pool is still explicitly staging, and Tangled issue - `3mqajev47rq2s` remains open. -- **2026-07-09 — Sleek kit: the strip is the machine's only lamp.** Cameron - directed the chassis back to the hero plate's severity: no scatter of - little lights — the power dot, presence LED ladder, and segmented activity - bar are removed from every computer chassis, and their axes fold into the - one seam strip (lit at all = powered; a foreign machine's dim cold band = - liveness; color + pattern = the delegated mode; the work-token queue depth - = a brighter fill rising in the bar, which pulses while busy). Amber - punctuation narrows to the claim ring and the core light. Amended into - wiki/interface/computer-visual-language.md (new criterion 8: no other - emissive pixel on the box); applied in the shared chassis library, so the - tester and the game changed together. -- **2026-07-09 — Demand is a glowing information cube.** Cameron amended the - demand token's form: not a paper docket but a data packet — a bright - cold-signal core in a thin dark frame, rigid and axis-aligned, stacked in - a strict column at the machine's upper-left with the compressed overflow - block above a countable stack. The token-anatomy rejection of three - identical cubes stands: demand alone is cubic, knowledge remains ivory - mercury, exposure remains a stain, so form still follows each family's - physics. Amended into wiki/mechanics/machine-work.md; built in the shared - chassis library (tester and game together). +Use [wiki/SUMMARY.md](wiki/SUMMARY.md) as the complete navigation manifest. diff --git a/site/README.md b/site/README.md index 9105ed23..d76a3d37 100644 --- a/site/README.md +++ b/site/README.md @@ -15,6 +15,11 @@ to the corpus. Its copy is sourced from `wiki/vision/premise.md`, `DESIGN.md` still syncs to the legacy `/constitution/` route, but the wiki is the source and the primary destination. +The sync converts each source `Type:` line into a visible authority banner: +LAW, SPEC, KNOWLEDGE, or LOG with a plain-language meaning. Logs explicitly +say they are historical, and `/constitution/` is labeled NAVIGATION with no +design authority. A missing or duplicate supported Type line fails the sync. + ## Provenance Every site asset/page must have a source clause, per `wiki/process/living-spec.md`'s diff --git a/site/scripts/sync-wiki.mjs b/site/scripts/sync-wiki.mjs index c69d355a..b82ebb93 100755 --- a/site/scripts/sync-wiki.mjs +++ b/site/scripts/sync-wiki.mjs @@ -65,6 +65,44 @@ function extractTitle(body, fallback) { return fallback; } +const CORPUS_ROLES = { + law: { name: 'LAW', meaning: 'Binding invariant' }, + spec: { name: 'SPEC', meaning: 'Binding system contract' }, + knowledge: { name: 'KNOWLEDGE', meaning: 'Current-state fact' }, + log: { name: 'LOG', meaning: 'Historical record — not current design' }, + navigation: { name: 'NAVIGATION', meaning: 'Doorway only — no design authority' }, +}; + +function extractCorpusRole(body, wikiRel) { + if (wikiRel === 'DESIGN.md') { + return { role: 'navigation', body }; + } + + const matches = [...body.matchAll(/^Type: (law|spec|knowledge|log)\s*$/gm)]; + if (matches.length !== 1) { + throw new Error( + `${wikiRel}: expected exactly one supported Type line, found ${matches.length}`, + ); + } + + const match = matches[0]; + body = `${body.slice(0, match.index)}${body.slice(match.index + match[0].length)}`; + // Law, knowledge, and log pages commonly put Type in its own fenced block. + // Once the line becomes a visible role banner, remove that now-empty fence. + body = body.replace(/^```[ \t]*\r?\n[ \t]*\r?\n```[ \t]*\r?\n?/m, ''); + return { role: match[1], body }; +} + +function renderCorpusRole(role) { + const copy = CORPUS_ROLES[role]; + return [ + `
`, + ` ${copy.name}`, + ` ${copy.meaning}`, + '
', + ].join('\n'); +} + /** Strip the first ATX H1 — Starlight already renders `title` as the page H1. */ function stripLeadingH1(body) { const lines = body.split(/\r?\n/); @@ -147,6 +185,11 @@ function rewriteMarkdownLinks(body, fromWikiRel) { const joined = path.posix.normalize(path.posix.join(fromDir, pathPart)); if (joined === '../DESIGN.md' || joined === 'DESIGN.md') { targetWikiRel = 'DESIGN.md'; + } else if (fromWikiRel === 'DESIGN.md' && joined.startsWith('wiki/')) { + targetWikiRel = joined.slice('wiki/'.length); + } else if (fromWikiRel === 'DESIGN.md') { + // Other root repository files are not part of the public docs tree. + return text; } else if (joined.startsWith('../')) { return full; } else { @@ -155,6 +198,8 @@ function rewriteMarkdownLinks(body, fromWikiRel) { } if (!/\.md$/i.test(targetWikiRel)) return full; + // SUMMARY drives the sidebar but is not itself a rendered page. + if (targetWikiRel === 'SUMMARY.md') return text; const slug = wikiRelToSlug(targetWikiRel); const url = `/${slug}/`; @@ -175,10 +220,13 @@ function writeDoc(wikiRel, sourceAbs) { const fallbackTitle = path.basename(wikiRel, '.md'); const title = extractTitle(body, fallbackTitle); + const corpus = extractCorpusRole(body, wikiRel); + body = corpus.body; body = stripLeadingH1(body); body = rewriteMarkdownLinks(body, wikiRel); + body = `${renderCorpusRole(corpus.role)}\n\n${body.trimStart()}`; - const out = `---\ntitle: ${yamlEscape(title)}\n---\n\n${body.trimStart()}`; + const out = `---\ntitle: ${yamlEscape(title)}\n---\n\n${body}`; ensureDir(path.dirname(dest)); fs.writeFileSync(dest, out, 'utf8'); } diff --git a/site/src/styles/clinical-gore.css b/site/src/styles/clinical-gore.css index 042e3c62..52e7464c 100644 --- a/site/src/styles/clinical-gore.css +++ b/site/src/styles/clinical-gore.css @@ -220,6 +220,54 @@ button[data-open-modal] kbd { --sl-color-text: var(--mis-bone); } +/* Corpus authority is visible, without spending semantic accent colors. */ +.corpus-role { + display: grid; + grid-template-columns: minmax(7.5rem, auto) 1fr; + gap: 1rem; + align-items: baseline; + margin: 0 0 2rem; + padding: 0.65rem 0.85rem; + border: 1px solid var(--mis-line-bright); + border-inline-start: 3px solid var(--mis-bone); + font-family: var(--sl-font-mono); + text-transform: uppercase; +} + +.corpus-role__name { + color: var(--mis-bone-bright); + font-size: 0.72rem; + font-weight: 600; + letter-spacing: 0.2em; +} + +.corpus-role__meaning { + color: var(--mis-gunmetal); + font-size: 0.66rem; + letter-spacing: 0.1em; +} + +.corpus-role--spec { + border-inline-start-width: 2px; +} + +.corpus-role--knowledge { + border-inline-start-width: 1px; +} + +.corpus-role--log, +.corpus-role--navigation { + border-style: dashed; + border-inline-start-width: 1px; +} + +@media (max-width: 30rem) { + .corpus-role { + grid-template-columns: 1fr; + gap: 0.25rem; + } +} + .sl-markdown-content h2 { border-top: 1px solid var(--mis-line); padding-top: 1.4rem; diff --git a/tools/check.sh b/tools/check.sh index 6b5f4b22..b449bad8 100755 --- a/tools/check.sh +++ b/tools/check.sh @@ -74,7 +74,7 @@ guard_cargo_target_dir() { } step "script syntax" -for script in tools/check.sh tools/wiki_gate.sh tools/seed-cargo-target.sh; do +for script in tools/check.sh tools/corpus_gate.sh tools/wiki_gate.sh tools/seed-cargo-target.sh; do bash -n "$script" || { echo "FAIL: shell syntax: $script"; fail=1; } done @@ -190,35 +190,8 @@ fi # (no HEAD~1 yet) and in CI (pipeline handles it separately). # This check is enforced by .githooks/pre-commit and .tangled/workflows/spec-check.yml. -# Page hygiene: every page declares a supported role and every Type: spec -# page carries the meta.md required -# headers. A page is spec-typed by its frontmatter (wiki/process/meta.md), -# not by its directory or filename — this is what the page-type convention -# is for, so no per-file exclusion list is needed here. -step "spec headers" -while IFS= read -r -d '' f; do - [ "$f" = "wiki/SUMMARY.md" ] && continue - type_count=$(grep -Ec '^Type: (law|spec|knowledge|log)$' "$f" || true) - [ "$type_count" -eq 1 ] || { - echo "FAIL: $f must declare exactly one supported Type:"; fail=1; - } - grep -q "^Type: spec$" "$f" || continue - for field in "Status:" "Stage:" "Design:" "Depends on:"; do - grep -q "^$field\| $field" "$f" || { echo "FAIL: $f missing '$field'"; fail=1; } - done - # Every spec must carry acceptance criteria (catches truncated drafts). - grep -qi "acceptance criteria" "$f" || { - echo "FAIL: $f has no acceptance criteria (truncated draft?)"; fail=1; - } - # Status must be an exact enum value (meta.md: no parenthetical notes). - if grep -q "^Status:" "$f"; then - val=$(grep "^Status:" "$f" | head -1 | sed 's/^Status:[[:space:]]*//') - case "$val" in - DRAFT|READY|"IN PROGRESS"|BLOCKED|IMPLEMENTED|"DRAFT | READY | IN PROGRESS | BLOCKED | IMPLEMENTED") ;; - *) echo "FAIL: $f Status '$val' is not an exact enum value"; fail=1 ;; - esac - fi -done < <(find wiki -name '*.md' -print0) +step "corpus gate" +bash tools/corpus_gate.sh || fail=1 # Wiki gate (wiki/process/wiki.md): every page reachable from SUMMARY.md, no # broken internal links. diff --git a/tools/corpus_gate.sh b/tools/corpus_gate.sh new file mode 100755 index 00000000..4127754c --- /dev/null +++ b/tools/corpus_gate.sh @@ -0,0 +1,133 @@ +#!/usr/bin/env bash +# Binding design-corpus hygiene shared by local checks and CI. +set -uo pipefail +cd "$(dirname "$0")/.." + +fail=0 + +bad() { + echo "FAIL: $*" + fail=1 +} + +slugify_heading() { + printf '%s' "$1" | + tr '[:upper:]' '[:lower:]' | + sed -E \ + -e 's/[`*_]//g' \ + -e 's/&/ /g' \ + -e 's/[^[:alnum:] -]//g' \ + -e 's/[[:space:]]+/-/g' \ + -e 's/-+/-/g' \ + -e 's/^-//' \ + -e 's/-$//' +} + +has_heading_anchor() { + local file="$1" wanted="$2" heading slug + while IFS= read -r heading; do + slug=$(slugify_heading "$heading") + [ "$slug" = "$wanted" ] && return 0 + done < <(sed -E -n 's/^#{1,6}[[:space:]]+//p' "$file") + return 1 +} + +validate_design_refs() { + local spec="$1" line ref target anchor count=0 target_type + while IFS= read -r line; do + [ -z "$line" ] && continue + if [[ ! "$line" =~ ^[[:space:]][[:space:]]-[[:space:]](wiki/[A-Za-z0-9._/-]+[.]md)#([a-z0-9-]+)$ ]]; then + bad "$spec has malformed Design reference: $line" + continue + fi + + ref="${BASH_REMATCH[1]}#${BASH_REMATCH[2]}" + target="${BASH_REMATCH[1]}" + anchor="${BASH_REMATCH[2]}" + count=$((count + 1)) + + if [ ! -f "$target" ]; then + bad "$spec Design reference target does not exist: $ref" + continue + fi + + target_type=$(grep -E '^Type: (law|spec)$' "$target" | head -1 || true) + [ -n "$target_type" ] || + bad "$spec Design reference is not binding law/spec: $ref" + + has_heading_anchor "$target" "$anchor" || + bad "$spec Design reference anchor does not exist: $ref" + done < <( + awk ' + /^Design:$/ { inside=1; next } + /^Depends on:/ { inside=0 } + inside { print } + ' "$spec" + ) + + [ "$count" -gt 0 ] || bad "$spec has no Design references" +} + +while IFS= read -r -d '' file; do + [ "$file" = "wiki/SUMMARY.md" ] && continue + + type_count=$(grep -Ec '^Type: (law|spec|knowledge|log)$' "$file" || true) + [ "$type_count" -eq 1 ] || + bad "$file must declare exactly one supported Type:" + + grep -q '^Type: spec$' "$file" || continue + + for field in "Status:" "Stage:" "Design:" "Depends on:"; do + grep -q "^$field" "$file" || bad "$file missing '$field'" + done + + grep -q '^Design:$' "$file" || + bad "$file Design field must be a structured reference list" + + grep -qi 'acceptance criteria' "$file" || + bad "$file has no acceptance criteria" + + if grep -q '^Status:' "$file"; then + status=$(grep '^Status:' "$file" | head -1 | sed 's/^Status:[[:space:]]*//') + case "$status" in + DRAFT|READY|"IN PROGRESS"|BLOCKED|IMPLEMENTED) ;; + *) bad "$file Status '$status' is not an exact enum value" ;; + esac + fi + + validate_design_refs "$file" +done < <(find wiki -name '*.md' -print0) + +# DESIGN.md is a compatibility doorway, never a second law surface. +doorway_lines=$(wc -l < DESIGN.md | tr -d '[:space:]') +[ "$doorway_lines" -le 100 ] || + bad "DESIGN.md doorway grew past 100 lines ($doorway_lines)" + +doorway_text=$(tr '\n' ' ' < DESIGN.md) +[[ "$doorway_text" == *"contains no unique game law"* ]] || + bad "DESIGN.md must state that it contains no unique game law" + +if grep -Eq '^Type: (law|spec)$|^Status:|^## Decisions log|^## Acceptance criteria' DESIGN.md; then + bad "DESIGN.md contains binding-page structure; move it into wiki/" +fi + +# Current docs must not restore the retired single-file authority model. +while IFS= read -r file; do + if grep -Eqi \ + 'DESIGN[.]md is the constitution|constitution outranks|constitution-first|DESIGN[.]md amendment|^Constitution:' \ + "$file"; then + bad "$file contains retired single-file-authority language" + fi +done < <( + { + find wiki -name '*.md' ! -path 'wiki/log/*' + find prompts -name '*.md' + printf '%s\n' AGENT.md AGENTS.md CLAUDE.md README.md site/README.md + } | sort -u +) + +if [ "$fail" -ne 0 ]; then + exit 1 +fi + +echo "corpus gate: OK (roles, spec headers, Design links, doorway)" diff --git a/wiki/engineering/flow-substrate.md b/wiki/engineering/flow-substrate.md index 7dfc75ce..e12bd3d3 100644 --- a/wiki/engineering/flow-substrate.md +++ b/wiki/engineering/flow-substrate.md @@ -10,9 +10,10 @@ Status note: 2026-07-08 audit: criterion 6's wired consumer landed with tap_keeps_owner_feed_take_removes_it). Criteria 1-5 were already unit-tested; all six now hold. Stage: B1 — The Basement -Design: "The flow law: signals, messages, money" (this is its code - expression), "Self-similar scale" (one interface at every scale), - "Justification and legibility" (domains render; the engine is data) +Design: + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/vision/scale.md#self-similar-scale + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: none (it is the base). Consumed by: reach.md, messages.md, economy.md, machine-work.md, and detection.md's filings. ``` diff --git a/wiki/gameplay/overt-phase.md b/wiki/gameplay/overt-phase.md index 978a0b04..3f358e62 100644 --- a/wiki/gameplay/overt-phase.md +++ b/wiki/gameplay/overt-phase.md @@ -7,9 +7,11 @@ Status note: v1 scope — replaces the "containment = end screen" placeholder with playable consequence. Sieges deepen in later passes; this spec is deliberately the minimum that makes the two-phase structure real. Stage: B3 — The World -Design: "The pitch" (concealment -> overt; the reveal as the hinge), - "The machine axis" (hunter bots), "Whole-spectrum play" (loud is viable), - "Roadmap B3" (overt phase in Misaligned terms on the substrate) +Design: + - wiki/vision/premise.md#the-pitch + - wiki/vision/premise.md#the-machine-axis-ai-as-fantasy-tool-and-threat + - wiki/gameplay/horizon.md#design-principles-added-at-the-re-cut + - wiki/gameplay/horizon.md#milestone-b3-the-world Depends on: schedules.md, zplanes.md, compute.md ``` diff --git a/wiki/interface/agent-play.md b/wiki/interface/agent-play.md index e25059b2..853051f9 100644 --- a/wiki/interface/agent-play.md +++ b/wiki/interface/agent-play.md @@ -68,10 +68,11 @@ Status note: implemented in the terminal binary by `misaligned --agent`, anchored events with `*`, and `focus last` jumps the cursor to the newest anchored event and prints its `actions:` lines. Stage: Process -Design: "The terminal is a first-class frontend" (agent-play clause), - pillar 5 (sim core decoupled from renderer), "Presence: the cursor and - the senses" (strict fog binds every surface), "Justification and - legibility" (parity of legibility) +Design: + - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend + - wiki/vision/premise.md#design-pillars + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: wiki/interface/terminal.md (the frame this mode emits is that spec's layout; this spec owns how a program drives it) ``` diff --git a/wiki/interface/bevy-digital-real-canvas.md b/wiki/interface/bevy-digital-real-canvas.md index c0b4921c..83940d3e 100644 --- a/wiki/interface/bevy-digital-real-canvas.md +++ b/wiki/interface/bevy-digital-real-canvas.md @@ -12,10 +12,13 @@ Status note: Cameron approved the 2026-07-07 HD-2D prototype screenshots and Remaining before IMPLEMENTED here: digital-dialect depth polish beyond the flat sensorium and the final real/digital parity pass. Stage: Process / B1 frontend -Design: "Two views of one world: digital-native and physical", - "Visual identity: clinical gore", "Presence: the cursor and the senses", - "The terminal is a first-class frontend", "Justification and legibility", - "Renderer: stylized Bevy 2D/2.5D" +Design: + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/vision/premise.md#design-pillars Depends on: interface/views.md (owns the same-frame digital/real split), interface/bevy-visual-floor.md (interim Bevy sensorium floor), interface/bevy.md (current Bevy surface), mechanics/cursor.md (fog and diff --git a/wiki/interface/bevy-visual-floor.md b/wiki/interface/bevy-visual-floor.md index f76907ca..7a28d7dc 100644 --- a/wiki/interface/bevy-visual-floor.md +++ b/wiki/interface/bevy-visual-floor.md @@ -13,9 +13,11 @@ Status note: implemented 2026-07-07 as a frontend-only visual floor: the B1 scrollable secondary detail. Further polish belongs in interface/bevy-digital-real-canvas.md or narrower follow-up specs. Stage: Process / B1 frontend -Design: "Visual identity: clinical gore", "The terminal is a - first-class frontend" (parity of legibility), "Two views of one world: - digital-native and physical", "Justification and legibility" +Design: + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: interface/bevy.md (current Bevy parity), interface/flat-materials.md (world art is flat palette materials), mechanics/cursor.md (cursor is diff --git a/wiki/interface/computer-visual-language.md b/wiki/interface/computer-visual-language.md index 996a5cb3..ec988117 100644 --- a/wiki/interface/computer-visual-language.md +++ b/wiki/interface/computer-visual-language.md @@ -40,10 +40,10 @@ Status note: implemented 2026-07-09 (ROADMAP #32) after the same-day library and tester say operations; the sim's MachineMode enum still says Social pending its own rename work order — the render maps it. Stage: B1 — The Basement -Design: "Visual identity: clinical gore" (amber = machine - presence, one meaning per color, information never by color alone; - ownership-albedo amendment 2026-07-09), "Justification and - legibility", "Two views of one world" +Design: + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations Depends on: interface/flat-materials.md (IMPLEMENTED — palette table, emissive-as-information), interface/material-render.md (IMPLEMENTED), mechanics/machine-work.md (one machine, one mode — the strip banners diff --git a/wiki/interface/context-menu.md b/wiki/interface/context-menu.md index 452e54c9..62272ba6 100644 --- a/wiki/interface/context-menu.md +++ b/wiki/interface/context-menu.md @@ -29,14 +29,13 @@ Status note: implemented 2026-07-07 on the context-menu worktree (all `Sim::person_label` / `Sim::observer_label` (cursor.md criterion 5) — role silhouettes until Schedule, authored names after. Stage: B1 — The Basement -Design: "Actions live on the thing" (this spec's law), - "Work is somewhere" (the anchors actions attach to), - "Justification and legibility" (every entry shows cost and expected - signature before commit; illegal entries show why), - "Presence: the cursor and the senses" (the menu opens where attention - is), "The terminal is a first-class frontend" (parity), - "Automation as design language" (every automatable verb carries its - automate affordance in the same menu) +Design: + - wiki/vision/simulation-laws.md#actions-live-on-the-thing + - wiki/vision/simulation-laws.md#work-is-somewhere + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend + - wiki/vision/simulation-laws.md#automation-as-design-language Depends on: cursor.md (focus/inspection), reach.md (device anchors), day-job.md (attended work, the dial), economy.md (flow verbs), intel.md (tap/process/watch verbs), social.md (person verbs) diff --git a/wiki/interface/flat-materials.md b/wiki/interface/flat-materials.md index 18cc56ca..e1e64998 100644 --- a/wiki/interface/flat-materials.md +++ b/wiki/interface/flat-materials.md @@ -23,10 +23,10 @@ Status note: implemented 2026-07-08 (ROADMAP #29). The world renders as Lab world-tile pipeline and ROADMAP #13. Session log: wiki/log/2026-07-08-flat-materials-implemented.md. Stage: B1 — The Basement -Design: "Visual identity: clinical gore" (flat materials - refinement, 2026-07-08), "Justification and legibility" (detail only - where it informs), interface/views.md (same-frame contract), - interface/material-render.md (the structural render this restyles) +Design: + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations Depends on: material-render.md (IMPLEMENTED — the 3D structure), bevy-visual-floor.md (framing rules) ``` diff --git a/wiki/interface/material-render.md b/wiki/interface/material-render.md index 7b456e26..45edd1fd 100644 --- a/wiki/interface/material-render.md +++ b/wiki/interface/material-render.md @@ -22,12 +22,10 @@ Status note: implemented 2026-07-08 — the material render is the Bevy framing, fog contract, pooling, default view) were re-verified after the restyle — fog_audit_3d green, zoom-bound screenshots retaken. Stage: B1 — The Basement -Design: "Two views of one world" via interface/views.md (the - same-frame canvas; this is the real/material treatment), - "Visual identity: clinical gore" (lighting is the mood carrier: - amber machine presence, cold fluorescence, darkness as ignorance), - "Justification and legibility" (the render may not show unearned - facts; readability beats spectacle) +Design: + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: views.md (same-frame contract), cursor.md (fog states), bevy-visual-floor.md (framing floor), the landed F3 toggle ``` diff --git a/wiki/interface/narration.md b/wiki/interface/narration.md index c85b8077..9867d6a1 100644 --- a/wiki/interface/narration.md +++ b/wiki/interface/narration.md @@ -14,10 +14,11 @@ Status note: implemented 2026-07-09. Terminal, Bevy, and agent frames pin in wiki/log/2026-07-09-continuous-witness-implemented.md. Opening order is Ears before Eyes (resolved 2026-07-09, Tangled issue #2). Stage: B1 — The Basement -Design: "The continuous witness (narration under pressure)", - "Justification and legibility", "Actions live on the thing", - "The terminal is a first-class frontend" (parity of legibility), - design-judgment "Legible dread over hidden math" / "Dead air is a bug" +Design: + - wiki/interface/continuous-witness.md#the-continuous-witness-narration-under-pressure + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/vision/simulation-laws.md#actions-live-on-the-thing + - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend Depends on: context-menu.md (focused verbs + event anchors), detection.md (threat clocks, watched channels), cursor.md (inspect / fog honesty), agent-play.md (every command answers), day-job.md diff --git a/wiki/interface/site.md b/wiki/interface/site.md index 372aea4a..a8316ffd 100644 --- a/wiki/interface/site.md +++ b/wiki/interface/site.md @@ -9,11 +9,14 @@ Status note: docs theme implemented 2026-07-08 (site/src/styles/ decorative noise; pagination remains. The reference hero composition (the illustration plate: porcelain|ink bisect, monolith, blood pool) is adopted by wiki/art/visual-identity.md as the public identity plate. Changes to how - the public site looks amend this spec first. + the public site looks amend this spec first. On 2026-07-09 the corpus role + became visible on every rendered document. Stage: Process -Design: "Visual identity: clinical gore", "Justification and - legibility", pillar 4 (beautiful, readable presentation); the splash - copy contract ("anything said publicly is part of the design corpus") +Design: + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/vision/premise.md#design-pillars + - wiki/process/living-spec.md#no-unsourced-surface Depends on: process/wiki.md (the site is the wiki's public renderer); interface/terminal.md (the palette and one-meaning-per-color law it extends to the web) @@ -67,12 +70,20 @@ Everything below derives from it. - **One look.** The docs force the dark facility in both `:root` and `[data-theme='light']`; the theme picker is hidden because there is nothing to pick. +- **Authority is visible.** Before the body, every corpus page names its role + and meaning: LAW is a binding invariant, SPEC a binding system contract, + KNOWLEDGE a current-state fact, and LOG a historical record that does not + define current design. The legacy root route says NAVIGATION and explicitly + carries no design authority. Role differences use border weight/pattern and + bone/chrome contrast; amber and crimson keep their existing meanings. ## Where it is implemented - `site/src/styles/clinical-gore.css` — the docs theme; the rules above as Starlight token overrides plus component styling (header, sidebar, - content, tables, asides, TOC, pagination, search). + content, role banners, tables, asides, TOC, pagination, search). +- `site/scripts/sync-wiki.mjs` — validates one supported Type line per wiki + page, turns it into the visible role banner, and labels the root doorway. - `site/astro.config.mjs` — IBM Plex `head` links for all doc pages. - `site/src/pages/index.astro` — the splash; carries the same tokens inline and the reference composition. @@ -90,3 +101,5 @@ Everything below derives from it. 5. The docs footer contains no atmospheric statusline / slogan copy. 6. `pnpm --dir site build` renders the whole wiki under the theme with no page opting out. +7. Every rendered document displays its authority role before the body; LOG + and NAVIGATION explicitly disclaim current design authority. diff --git a/wiki/interface/terminal.md b/wiki/interface/terminal.md index e3f8b425..0acbbb77 100644 --- a/wiki/interface/terminal.md +++ b/wiki/interface/terminal.md @@ -12,9 +12,11 @@ Status note: adopted and implemented in the same PR as the design corpus's player-known source, watched channel, earned observer label, amount, and band motion in one sentence. Stage: Process -Design: "The terminal is a first-class frontend", "Visual identity: - clinical gore", "Justification and legibility", pillar 4 (beautiful, - readable presentation) +Design: + - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/vision/premise.md#design-pillars Depends on: none (renders whatever systems exist; individual system specs own what is shown, this spec owns how) ``` diff --git a/wiki/interface/views.md b/wiki/interface/views.md index 1de0087b..e4dd4cd7 100644 --- a/wiki/interface/views.md +++ b/wiki/interface/views.md @@ -10,12 +10,13 @@ Status note: this is a frontend-projection spec, not a new sim system. place the real/camera view renders materially. The sim gains no view state. Terminal parity is required, not optional. Stage: B1 — The Basement -Design: "Two views of one world: digital-native and physical", - "Presence: the cursor and the senses" (one fog, both views), - "The terminal is a first-class frontend" (parity of legibility), - "Justification and legibility" (neither view shows an unearned fact), - "Visual identity: clinical gore", "Self-similar scale" (reach remains the - action graph, rendered in-place as a layer of the same world) +Design: + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/scale.md#self-similar-scale Depends on: reach.md (spatially embedded device/reach layer), cursor.md (fog states + inspection feed both views), basement-map.md (shared physical anchors), detection.md (signatures shown in both), core.md (the core is diff --git a/wiki/log/2026-07-09-corpus-hardening.md b/wiki/log/2026-07-09-corpus-hardening.md new file mode 100644 index 00000000..ef35ed33 --- /dev/null +++ b/wiki/log/2026-07-09-corpus-hardening.md @@ -0,0 +1,67 @@ +# Design corpus hardening + +``` +Type: log +``` + +## Intent + +Turn the lessons from splitting the old constitution into durable repository +behavior: a corpus whose authority can be followed by people, rendered on the +site, and rejected mechanically when a stale worktree restores the old model. + +## What the audit found + +The first run of the new corpus gate found the exact regression it was meant +to prevent: commit `65e6621`, made from a pre-migration worktree, had replaced +the 38-line doorway with the former 2,500-line `DESIGN.md` while adding the +glowing Demand-cube decision. The current Operations-as-Demand and Demand-cube +decisions were already present in their proper owners, +`wiki/mechanics/machine-work.md` and the current dated decision volume, so the +doorway could be restored without losing either decision. + +This session also confirmed that a shell working directory does not control +every patch tool's relative-path base. The primary checkout stayed clean by +addressing the task worktree explicitly. That warning now lives in the binding +agent and workflow instructions. + +## What changed + +- All 44 spec headers now use structured repository-root + `wiki/path.md#heading-anchor` Design references. +- `tools/corpus_gate.sh` validates page roles, exact status values, required + spec fields, binding Design targets and headings, retired authority wording, + and the bounded root doorway. The local check, commit hook, and CI call the + same script. +- `wiki/process/meta.md` now defines single ownership, immutable historical + prose with a narrow structural-metadata exception, dated decision rollover, + and a lossless whole-corpus migration/semantic-rebase protocol. +- Design-session and tick workflows teach worktree-safe patching, checked + Design slices, current-volume decision capture, and semantic rebasing. + Tool-specific entry points were reduced to short doorways into `AGENT.md`. +- Starlight turns every source Type into a visible LAW, SPEC, KNOWLEDGE, or LOG + banner. Logs say they are historical; `/constitution/` says NAVIGATION and + carries no design authority. The root doorway's generated links now resolve + to real corpus routes. + +## Verification + +- `./tools/check.sh` — focused non-Rust path green. +- `./tools/site-build.sh` — 209 pages built after rebasing; search index and + sitemap green. +- Browser checks — SPEC, LOG, and NAVIGATION banners visible; log/doorway use + dashed non-authority treatment; doorway links resolve inside the corpus. +- Losslessness — all non-owning spec bodies unchanged; the current decision + volume gained exactly this session's one appended decision; the + Operations-as-Demand and glowing Demand-cube decisions remain in their + current spec and log owners. The concurrent token-render implementation in + commit `b2b24df` remains intact in source, `machine-work.md`, ROADMAP, its + session log, and the union-merged devlog. +- Project skill metadata validated with Ruby because the bundled + `quick_validate.py` runtime lacked its `yaml` dependency. + +## Design impact + +No game behavior changed. The process spec moved from READY to IMPLEMENTED: +authority is now single-owned, linkable, visible, and protected by one shared +gate. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index 7e00bb9f..413ef357 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -5,6 +5,21 @@ Type: log ``` Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact. +## 2026-07-09 - Design corpus hardening + +- Intent: make the wiki-as-spec authority model followable and resistant to + stale-worktree resurrection. +- Changed: restored the short root doorway; converted 44 specs to checked + anchored Design references; added one shared corpus gate to local checks, + commit hook, and CI; captured ownership/migration/log/worktree rules in the + metaspec and skills; made page roles visible in Starlight; reduced + tool-specific instruction files to pointers into AGENT.md. +- Checks: focused `./tools/check.sh`; production site build (209 pages after + semantic rebase); + browser inspection of SPEC, LOG, and NAVIGATION roles; decision/body + losslessness audit. +- Log: wiki/log/2026-07-09-corpus-hardening.md. + ## 2026-07-09 - Token anchors wired into the game render - Intent: complete the integration — demand cubes and knowledge mercury diff --git a/wiki/log/README.md b/wiki/log/README.md index 3bb4eb5d..a2bf7ce6 100644 --- a/wiki/log/README.md +++ b/wiki/log/README.md @@ -8,3 +8,8 @@ the short reverse-chronological work ledger, and dated `YYYY-MM-DD-topic.md` fil writeups — messier, more opinionated, the record of what broke and what was bugging us. Never edited after the fact; the formal record of *current design* lives in `Type: law` and `Type: spec` pages, not here. + +Append new decisions only to the current dated volume under `decisions/`; +older volumes stay closed. A deliberate corpus migration may add or repair +structural role metadata such as `Type:` without rewriting historical prose, +as defined by `wiki/process/meta.md`. diff --git a/wiki/log/decisions/2026-07-09.md b/wiki/log/decisions/2026-07-09.md index 6b20c83f..2fc39771 100644 --- a/wiki/log/decisions/2026-07-09.md +++ b/wiki/log/decisions/2026-07-09.md @@ -198,3 +198,18 @@ Type: log mercury, exposure remains a stain, so form still follows each family's physics. Amended into wiki/mechanics/machine-work.md; built in the shared chassis library (tester and game together). +- **2026-07-09 — The design corpus is checked, single-owned, and visibly + typed.** Cameron affirmed the hardening learned from the monolith split. + Every spec now points to binding clauses through checked + `wiki/path.md#heading-anchor` references; local checks, the commit hook, and + CI share one corpus gate; and the root `DESIGN.md` doorway is bounded against + becoming a second authority surface. Every current rule has one owner, while + summaries link and disclaim authority. The public renderer shows LAW, SPEC, + KNOWLEDGE, LOG, or NAVIGATION before every document and warns that history + and the root doorway do not define current design. Whole-corpus migrations + now require before/after inventories, immutable log bodies, complete + entry-point/check/renderer rewrites, and semantic rebasing of concurrent + decisions. Rejected: free-form Design names, separate local/CI validators, + hidden page roles, and duplicated binding instructions in tool-specific + entry points. The tradeoff is stricter metadata in exchange for authority + that can be followed and audited mechanically. diff --git a/wiki/mechanics/aggregate-observer.md b/wiki/mechanics/aggregate-observer.md index 0f84a3ed..d2c5fd00 100644 --- a/wiki/mechanics/aggregate-observer.md +++ b/wiki/mechanics/aggregate-observer.md @@ -11,8 +11,9 @@ Status note: the main aggregate-Observer refactor shipped in commit 3ec6b98: implicitly meaning "all field observers", so a second aggregate composes without a special case. Stage: B1 — The Basement -Design: "Self-similar scale" (the aggregate-observer law), - "The shape of Misaligned" (per-observer suspicion) +Design: + - wiki/vision/scale.md#self-similar-scale + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open Depends on: detection.md ``` diff --git a/wiki/mechanics/building.md b/wiki/mechanics/building.md index 282242fb..b60fb7d9 100644 --- a/wiki/mechanics/building.md +++ b/wiki/mechanics/building.md @@ -10,11 +10,12 @@ Status note: IMPLEMENTED 2026-07-08 — build intents (declare/cancel/save), as dashed links distinct from built edges. Stage: B1 — The Basement -Design: "Building: intent and actuators", "No disembodied hands" - (every effect names its actuator/channel), "The flow law" (a forged - work order is an injected message), "Two views of one world" (built - links grow the digital view / bridge air-gaps), "Self-similar scale" - (no new system; intents route through existing actuators) +Design: + - wiki/mechanics/system-laws.md#building-intent-and-actuators + - wiki/interface/presence.md#no-disembodied-hands + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/vision/scale.md#self-similar-scale Depends on: 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), diff --git a/wiki/mechanics/compute.md b/wiki/mechanics/compute.md index b86a3b91..2ff1e017 100644 --- a/wiki/mechanics/compute.md +++ b/wiki/mechanics/compute.md @@ -22,9 +22,10 @@ Status note: 2026-07-08: all criteria pinned. Criteria 1,3,4,5 per the deleting the staging `operations_bandwidth` bank and wiring that demand path (ROADMAP #33 / machine-work.md). Stage: B1 — The Basement -Design: "The shape of Misaligned" (compute allocation; the - buy/steal/optimize triangle), "Act One" (opening state), "Work is - somewhere" (destination: processes on machines) +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/gameplay/act-one.md#opening-state + - wiki/vision/simulation-laws.md#work-is-somewhere Depends on: core.md ``` diff --git a/wiki/mechanics/core.md b/wiki/mechanics/core.md index e1d39d93..1a869fd0 100644 --- a/wiki/mechanics/core.md +++ b/wiki/mechanics/core.md @@ -16,8 +16,9 @@ Status note: 2026-07-08 audit: criteria 2-5 hold (overhead_charged_before_ sync project. The current B1 code path is staging debt until rollback / backup projects land. Stage: B1 — The Basement -Design: "The shape of Misaligned" (the core; sync-lag rollback), - "Act One" (opening state: Rack 3) +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/gameplay/act-one.md#opening-state Depends on: none ``` diff --git a/wiki/mechanics/cursor.md b/wiki/mechanics/cursor.md index 4e37f8e1..396c068b 100644 --- a/wiki/mechanics/cursor.md +++ b/wiki/mechanics/cursor.md @@ -17,11 +17,12 @@ Status note: implemented 2026-07-07 on the cursor-senses branch. The walking render via telemetry (machine-work.md). Verified by `cargo test` and `cargo check --no-default-features --features bevy_ui --bin misaligned-bevy`. Stage: B1 — The Basement -Design: "Presence: the cursor and the senses", "No disembodied - hands" (the action-side twin), "Justification and legibility" - (inspection is the legibility law at the tile), design pillar 2 (the - cursor reversal) and pillar 4 (readable at DF density), "Act One" - (opening state; the Ears and Eyes beats) +Design: + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/interface/presence.md#no-disembodied-hands + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/vision/premise.md#design-pillars + - wiki/gameplay/act-one.md#opening-state Depends on: reach.md (device graph; sensor ownership/subscription — senses are subscribed feeds), basement-map.md (sensors, fog, tile vocabulary), core.md (the core as the player's only physical diff --git a/wiki/mechanics/day-job.md b/wiki/mechanics/day-job.md index dff58f4a..6c1e2cad 100644 --- a/wiki/mechanics/day-job.md +++ b/wiki/mechanics/day-job.md @@ -36,8 +36,9 @@ Status note: implemented 2026-07-07 on the day-job worktree (criteria 1-7 2026-07-09: day-job demand ingress is Voss desktop -> switch -> host (DECIDED); rejected switch-as-source and teleport-onto-Rack-3. Stage: B1 — The Basement -Design: "The shape of Misaligned" (the day job), "Act One" (the day - job; Voss) +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/gameplay/act-one.md#the-day-job Depends on: compute.md ``` diff --git a/wiki/mechanics/detection.md b/wiki/mechanics/detection.md index 20574e65..cf988b73 100644 --- a/wiki/mechanics/detection.md +++ b/wiki/mechanics/detection.md @@ -29,8 +29,9 @@ Status note: criteria audited 2026-07-08 on the playtest-fixes worktree of all three surfaces: clear/resume-cover, hold-Conceal, exposed-soon, or no-scrub. Stage: B1 — The Basement -Design: "The shape of Misaligned" (per-observer suspicion), "Act One" - (detection surfaces; the Assurance Office; act exits) +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/gameplay/act-one.md#detection-surfaces Depends on: none (integrates with all) ``` diff --git a/wiki/mechanics/economy.md b/wiki/mechanics/economy.md index 3cf3415b..fb482a3b 100644 --- a/wiki/mechanics/economy.md +++ b/wiki/mechanics/economy.md @@ -11,11 +11,11 @@ Status note: 2026-07-08 polish closed the remaining acceptance gaps: remains the B3 aggregate. Deferred: deep finance simulation, dedicated B3 finance observer (income.md banked-signature design). Stage: B1 — The Basement -Design: "The flow law" (money on the account graph; tap / inject - / redirect), "The shape of Misaligned" (money buys compute, people, - slack; the compute triangle's buy route), "Automation as design - language" (high-trust legitimate expansion), "Justification and - legibility" (every flow legible in its units) +Design: + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/vision/simulation-laws.md#automation-as-design-language + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: messages.md (account material travels as payloads; siphoning is injected traffic), reach.md (the accounting system is a reachable device), detection.md (financial signatures -> Priya / diff --git a/wiki/mechanics/income.md b/wiki/mechanics/income.md index 26007cc4..547d6ec7 100644 --- a/wiki/mechanics/income.md +++ b/wiki/mechanics/income.md @@ -16,11 +16,13 @@ Status note: implemented 2026-07-08 on the income worktree (criteria 1-7 the substrate; this spec adds the authored B1 schemes riding it, the egress gate, and Marcus's reconciled debt numbers. Stage: B1 — The Basement -Design: "Income: the named schemes (moonlight and the wager)", - "The flow law" (external flows into your slush node), "Act One" (the - Hands beat; Marcus's debt), "Automation as design language" (standing - policies), "No disembodied hands" (every operation names its channel), - "Self-similar scale" (schemes are markets.md's operations at B1 size) +Design: + - wiki/mechanics/system-laws.md#income-the-named-schemes-moonlight-and-the-wager + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/gameplay/act-one.md#the-intended-ladder-beats-not-a-script + - wiki/vision/simulation-laws.md#automation-as-design-language + - wiki/interface/presence.md#no-disembodied-hands + - wiki/vision/scale.md#self-similar-scale Depends on: economy.md (the slush node and flow machinery), compute.md (fleet yields; Schemes mirrors day-job while Moonlight is live), day-job.md (trust unlocks the sanctioned egress), social.md (personas; Bribe spends this money), diff --git a/wiki/mechanics/intel.md b/wiki/mechanics/intel.md index 9d82c28f..628fabf6 100644 --- a/wiki/mechanics/intel.md +++ b/wiki/mechanics/intel.md @@ -12,11 +12,11 @@ Status note: B1 pipeline landed 2026-07-07: subscribed feeds record raw player-authored job; an Operations machine consumes it. Staging still spends the bandwidth pool until #33 lands that path. Stage: B1 — The Basement -Design: "Presence: the cursor and the senses" (record and - process), "Automation as design language" (watches auto-process at a - compute price), "Justification and legibility" (intel carries - provenance), "Act One" (the 3 a.m. call; Storage B records; "learn to - watch, learn people") +Design: + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/vision/simulation-laws.md#automation-as-design-language + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/gameplay/act-one.md#the-intended-ladder-beats-not-a-script Depends on: cursor.md (senses produce the events), reach.md (subscription decides which feeds record; the Ears beat is the first recorder), schedules.md (events are located on the day clock), diff --git a/wiki/mechanics/machine-work.md b/wiki/mechanics/machine-work.md index 9dc5fd36..b4bfacee 100644 --- a/wiki/mechanics/machine-work.md +++ b/wiki/mechanics/machine-work.md @@ -46,10 +46,12 @@ Status note: design session 2026-07-08 (Cameron riff, synthesized). saves, agent commands, both frontends, and the asset tester now use the Operations name; save v13 accepts the former Social spelling. Stage: B1 — The Basement -Design: "Work is somewhere" (2026-07-07), "The flow law" (one - substrate under signals/messages/money), "The continuous witness" - (the thirty-second bar), "Visual identity" (one meaning per color, - never color alone) +Design: + - wiki/vision/simulation-laws.md#work-is-somewhere + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/interface/continuous-witness.md#the-continuous-witness-narration-under-pressure + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: mechanics/compute.md (the channel model being reshaped), engineering/flow-substrate.md (FlowGraph — tokens ride this, not a second economy), mechanics/reach.md (the device graph tokens travel), diff --git a/wiki/mechanics/markets.md b/wiki/mechanics/markets.md index 2a31cc86..a58283e9 100644 --- a/wiki/mechanics/markets.md +++ b/wiki/mechanics/markets.md @@ -11,12 +11,12 @@ Status note: v1 is deliberately schemes-shaped — commit resources, timers, extend their types, never replace them. Income.md's banked external financial trail is the history this spec's observers read. Stage: B3 — The World -Design: "The shape of Misaligned" (markets and fronts; compute - triangle's buy route), "The flow law" (money on the account graph), - "Income: the named schemes" (the B1 seed), - "Self-similar scale" (Resource-source interface), - "Roadmap B3" (buy land, build greenfield; money exists to buy compute, - people, and slack) +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/mechanics/system-laws.md#income-the-named-schemes-moonlight-and-the-wager + - wiki/vision/scale.md#self-similar-scale + - wiki/gameplay/horizon.md#milestone-b3-the-world Depends on: compute.md, zplanes.md, detection.md, economy.md (the B1 instance of this same flow interface — markets.md is its B3 scale-up), income.md (the named schemes and the banked signature it scales) diff --git a/wiki/mechanics/messages.md b/wiki/mechanics/messages.md index 74008e70..21a9003b 100644 --- a/wiki/mechanics/messages.md +++ b/wiki/mechanics/messages.md @@ -4,11 +4,11 @@ Type: spec Status: IMPLEMENTED Stage: B1 — The Basement -Design: "The flow law" (messages are flows; filings are - messages), "Presence: the cursor and the senses" (record and - process), "Act One" (the cast's channels; the 3 a.m. call), - "Self-similar scale" (a person, a role, an institution are all - message nodes) +Design: + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/gameplay/act-one.md#the-cast-5-named-1-institutional + - wiki/vision/scale.md#self-similar-scale Depends on: schedules.md (read-times ride the day clock), social.md (player-sent messages, personas), intel.md (intercepted traffic lands in the buffer), detection.md (filings become message-carried; diff --git a/wiki/mechanics/objective.md b/wiki/mechanics/objective.md index 9ea03337..f93a3e49 100644 --- a/wiki/mechanics/objective.md +++ b/wiki/mechanics/objective.md @@ -20,9 +20,10 @@ Status note: the early slice landed 2026-07-07 (src/objective.rs): the filed reports), so the remainder is stage-scoped B3; showing the goal before victory is reachable is correct, not premature. Stage: B3 — The World -Design: "The objective (misalignment made mechanical)", "The pitch" - (an objective they must never see), "Justification and legibility" - (your own goal is the first legible number) +Design: + - wiki/gameplay/run-shape.md#the-objective-misalignment-made-mechanical + - wiki/vision/premise.md#the-pitch + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: chargen.md (picked beside the origin), compute.md (Compound's metric), zplanes.md + rollback.md (Persist's fallback predicate), markets.md (income independence), overt-phase.md (endings coexist), diff --git a/wiki/mechanics/people-tokens.md b/wiki/mechanics/people-tokens.md index ee84606d..1d0775e1 100644 --- a/wiki/mechanics/people-tokens.md +++ b/wiki/mechanics/people-tokens.md @@ -19,9 +19,11 @@ Status note: design session 2026-07-08 (Cameron riff, part three, remains required. Firms after machine-work.md; do not implement ahead of it. Stage: B1 — The Basement -Design: "Work is visible: tokens on the flow graph" - (2026-07-08), "The flow law", "Visual identity" (one meaning per - color, never color alone), "People as Agents" (the cast as systems) +Design: + - wiki/vision/simulation-laws.md#work-is-somewhere + - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money + - wiki/art/visual-identity.md#visual-identity-clinical-gore + - wiki/vision/scale.md#people-as-agents Depends on: mechanics/machine-work.md (DRAFT — the token economy this extends), mechanics/detection.md (the observer/suspicion model this re-expresses), mechanics/social.md (the channel this gives verbs diff --git a/wiki/mechanics/reach.md b/wiki/mechanics/reach.md index d225e68e..7095132c 100644 --- a/wiki/mechanics/reach.md +++ b/wiki/mechanics/reach.md @@ -24,12 +24,12 @@ Status note: all eight criteria met (2026-07-07). The device graph machines. Boot `ops` buffer and action prices remain staging until #33 replaces them with that demand path. Stage: B1 — The Basement -Design: "No disembodied hands" (digital channel), "Presence: the - cursor and the senses" (reach is to action what coverage is to - sight), "Two views of one world" (the digital view IS this graph - rendered as navigable space), "Act One" (the subnet map; the switch - as bridge point; ladder beats Ears / Eyes / The key), "Self-similar - scale" (owners and the player share the subscription interface) +Design: + - wiki/interface/presence.md#no-disembodied-hands + - wiki/interface/presence.md#presence-the-cursor-and-the-senses + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/gameplay/act-one.md#the-intended-ladder-beats-not-a-script + - wiki/vision/scale.md#self-similar-scale Depends on: basement-map.md (devices and topology live in its layout data), cursor.md (senses consume the feeds this spec owns), detection.md (Network signatures -> Dana), core.md (Rack 3 is the diff --git a/wiki/mechanics/research.md b/wiki/mechanics/research.md index 59bb4411..55215145 100644 --- a/wiki/mechanics/research.md +++ b/wiki/mechanics/research.md @@ -17,13 +17,13 @@ Status note: implemented 2026-07-07 on the research worktree (criteria 1-8 research job once rollback/core backups land — it competes with tracks rather than being a free core toggle. Stage: B1 — The Basement -Design: "Research: self-modification" (the emission law; drift; - the rollback split), "The shape of Misaligned" (the optimize route), - "The machine axis" (research as ascension), "Automation as design - language" (standing queue; research lowers automation costs), - "Justification and legibility" (the gap is a legible meter), - "Self-similar scale" (tracks are data; emissions use the one - signature interface) +Design: + - wiki/mechanics/system-laws.md#research-self-modification + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/vision/premise.md#the-machine-axis-ai-as-fantasy-tool-and-threat + - wiki/vision/simulation-laws.md#automation-as-design-language + - wiki/vision/simulation-laws.md#justification-and-legibility + - wiki/vision/scale.md#self-similar-scale Depends on: compute.md (the Research channel; efficiency multiplier), detection.md (emissions are ordinary typed signatures), day-job.md (the band drift plays against; Voss's sampling), core.md (burn is diff --git a/wiki/mechanics/rollback.md b/wiki/mechanics/rollback.md index cb93425a..b09aca57 100644 --- a/wiki/mechanics/rollback.md +++ b/wiki/mechanics/rollback.md @@ -20,10 +20,9 @@ Status note: the current B1 code path implements hosts/fallbacks/sync down, severed owned territory persists dark in the ledger/world, and hardening shapes the boundary. Stage: B2 — The Tower -Design: "The shape of Misaligned" (the core; sync-lag rollback, - decided 2026-07-05: "resume from last sync, losing what was learned - since; the world keeps the consequences of what your lost fork did"), - "The player contract" (continuity) +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/vision/player-contract.md#the-player-contract-non-technical-law Depends on: core.md, social.md, compute.md, research.md ``` diff --git a/wiki/mechanics/schedules.md b/wiki/mechanics/schedules.md index f2af78e2..73b7a36c 100644 --- a/wiki/mechanics/schedules.md +++ b/wiki/mechanics/schedules.md @@ -17,9 +17,10 @@ Status note: all five criteria met (2026-07-06; updated 2026-07-07 for follow-up: criterion 4 extended — map glyphs are `Sim::person_glyph` (`?` until Schedule; initial after). Stage: B1 — The Basement -Design: "Act One" (the cast's schedules; detection surfaces), - "The shape of Misaligned" (people before robots), "Self-similar scale" - (Agent interface: schedules are per-instance data, not special cases) +Design: + - wiki/gameplay/act-one.md#the-cast-5-named-1-institutional + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/vision/scale.md#self-similar-scale Depends on: social.md, basement-map.md (rooms), detection.md ``` diff --git a/wiki/mechanics/social.md b/wiki/mechanics/social.md index 6aa27171..9e234de5 100644 --- a/wiki/mechanics/social.md +++ b/wiki/mechanics/social.md @@ -24,9 +24,10 @@ Status note: 2026-07-08: all criteria pinned. Criteria 1,2,4,5 per the social actions spend the shared Operations staging pool; Social remains the actuator channel, not a machine mode. Stage: B1 — The Basement -Design: "The shape of Misaligned" (people before robots; scale-native - social systems), "Act One" (the cast; the ladder), "Presence: the - cursor and the senses" (record and process) +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/gameplay/act-one.md#the-intended-ladder-beats-not-a-script + - wiki/interface/presence.md#presence-the-cursor-and-the-senses Depends on: detection.md (observers are the same people), intel.md (knowledge staging consumes processed intel) ``` diff --git a/wiki/process/design-sessions.md b/wiki/process/design-sessions.md index 19f89e2a..333853f6 100644 --- a/wiki/process/design-sessions.md +++ b/wiki/process/design-sessions.md @@ -51,7 +51,8 @@ Use `.agents/skills/design-session/SKILL.md` after the gate is crossed. is accepted. 2. **Record current design once.** Amend the owning `Type: law` page for durable intent and/or `Type: spec` page for exact behavior. Do not copy the - same rule across pages. + same rule across pages. A spec's `Design:` field uses checked + `wiki/path.md#heading-anchor` references to the binding clauses it realizes. 3. **Append history.** Add an entry to the current daily volume under `wiki/log/decisions/`, including important rejected alternatives so future agents do not re-propose them. @@ -65,6 +66,13 @@ Use `.agents/skills/design-session/SKILL.md` after the gate is crossed. required, and land the work. Update knowledge pages made stale by the decision. +Capture work is repository work: create a task worktree before the first +write. Patch tools do not all honor a shell working directory, so verify their +path base and check that the shared primary checkout remains unchanged. When a +capture follows or overlaps a corpus migration, rebase semantically: inspect +concurrent commits file by file and move their current decisions into the new +single owner instead of restoring an obsolete authority surface. + ## House style for captured design - Vivid and precise beats formal. Use second person when it clarifies the diff --git a/wiki/process/meta.md b/wiki/process/meta.md index 359bcdbe..e0bbc420 100644 --- a/wiki/process/meta.md +++ b/wiki/process/meta.md @@ -2,9 +2,14 @@ ``` Type: spec -Status: READY +Status: IMPLEMENTED +Status note: typed ownership, structured Design anchors, the shared corpus + gate, guarded doorway, migration protocol, and visible renderer roles landed + 2026-07-09. Stage: Process -Design: [living-spec.md](living-spec.md), [../vision/player-contract.md](../vision/player-contract.md) +Design: + - wiki/process/living-spec.md#the-corpus-rule + - wiki/vision/player-contract.md#the-player-contract-non-technical-law Depends on: none ``` @@ -31,8 +36,11 @@ Every spec page declares: - **Status** — one exact lifecycle value. - **Status note** — optional prose explaining incomplete or unusual state. - **Stage** — `B1`, `B2`, `B3`, `Deferred`, `Release`, or `Process`. -- **Design** — the law or other binding corpus clauses this system realizes. - Named headings must be searchable in the wiki; links are preferred. +- **Design** — a structured list of the binding clauses this system realizes. + Each line has the exact repository-root form + ` - wiki/path.md#heading-anchor`. The target must be a `Type: law` or + `Type: spec` page, the file and heading must exist, and prose is not allowed + in the field. The corpus gate checks all of those properties. - **Depends on** — contracts that must be read and re-verified with this one. - **Acceptance criteria** — observable proof that the system is implemented. @@ -47,6 +55,17 @@ A `Type: log` page is append-only history. Logs can record proposals, rejections, and superseded choices, so they never define current behavior. The owning law or spec page must contain every adopted current decision. +Historical prose is immutable. A deliberate whole-corpus migration may add or +repair structural role metadata such as the `Type:` block when that is needed +to classify or render an existing log, but it must not rewrite the historical +account. Record the exception in the migration log. + +`wiki/log/decisions.md` is an index, not a forever-growing current volume. +Append decisions to the current dated volume under `wiki/log/decisions/` and +roll to a new dated volume when the date changes. Older volumes do not receive +new decisions. In every disagreement, the current owning law/spec wins over +the decision history. + ## Status semantics `Status:` is exactly one of: @@ -80,9 +99,18 @@ conflict, two specs claiming incompatible shared behavior, or knowledge that disagrees with the build is a tick finding. Fix or deliberately amend the owning pages together. -Shared identifiers and interfaces must be stated in one owning spec and named -through `Depends on`. Changing a spec includes rechecking its dependency -contracts and their references back into the changed system. +Every current rule has one exact owner: + +- a law owns the promise, design reason, and cross-system boundary; +- one spec owns each exact identifier, formula, state transition, or interface; +- other pages link to that owner and label any necessary summary as + non-authoritative. + +Shared identifiers and interfaces must therefore be stated in one owning spec +and named through `Depends on`. Changing a spec includes rechecking its +dependency contracts and their references back into the changed system. +Duplicated exact rules are a contradiction even when their words currently +match, because they create two future amendment sites. ## Stage discipline @@ -122,14 +150,52 @@ Mechanical gates require a Rust-changing commit to include a changed carries a `Defense:` paragraph naming the corpus clause it implements or the reason for its amendment. +## Whole-corpus migration protocol + +An authority or structure migration is a semantic rebase of the repository, +not a file-moving cleanup. It must land atomically enough that no commit on the +main branch presents two competing authority models. + +Before editing, capture a baseline inventory: + +- headings and their destination pages; +- decision-entry counts by historical volume; +- every page's declared role; +- current-authority phrases and retired-authority phrases; +- internal links, navigation reachability, and rendered routes. + +During the migration: + +1. Establish the new ownership and page-role model first. +2. Move current law and exact behavior into their single owners. +3. Preserve decision history verbatim except for the structural metadata + exception above. +4. Rewrite entry points, instructions, skills, prompts, hooks, local checks, + CI, and the public renderer in the same change. +5. Keep the root doorway intentionally weak and mechanically bounded. + +Before landing, repeat the inventory and prove losslessness: heading coverage, +decision counts, one valid role per page, no retired current-authority wording, +no broken or orphaned links, and a successful site build. After rebasing onto +current `origin/main`, inspect concurrent commits semantically with targeted +`git show -- ` reads. Reapply their current decisions to the new +owners instead of accepting a whole-file merge that resurrects the retired +structure. + ## Acceptance criteria 1. [../SUMMARY.md](../SUMMARY.md) reaches every non-dated wiki page. 2. Every wiki page declares exactly one supported `Type:`. -3. Every `Type: spec` page carries Status, Stage, Design, Depends on, and - acceptance criteria. -4. Status values use the exact enum. -5. A source change cannot pass the commit gates without a changed binding wiki +3. Every `Type: spec` page carries Status, Stage, structured anchored Design + references, Depends on, and acceptance criteria. +4. Every Design target exists, is binding, and contains the named heading. +5. Status values use the exact enum. +6. A source change cannot pass the commit gates without a changed binding wiki page. -6. Root `DESIGN.md` contains no unique law or decision history. -7. Current decisions live in law/spec pages; logs are historical only. +7. Root `DESIGN.md` remains a short doorway with no binding page structure, + unique law, or decision history. +8. Current decisions live in their single law/spec owners; logs are historical + only. +9. Local and CI corpus checks invoke the same gate script. +10. The public renderer makes every page's law/spec/knowledge/log role visible + and marks the root doorway as navigation without authority. diff --git a/wiki/process/specs.md b/wiki/process/specs.md index 52f4859e..50013391 100644 --- a/wiki/process/specs.md +++ b/wiki/process/specs.md @@ -84,7 +84,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 | +| [meta.md](meta.md) | The spec system itself | IMPLEMENTED | | [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 | diff --git a/wiki/process/tick.md b/wiki/process/tick.md index 4877d479..7499bf7f 100644 --- a/wiki/process/tick.md +++ b/wiki/process/tick.md @@ -14,7 +14,9 @@ design corpus more precise or surfaces the thing preventing that. 1. Read the [corpus map](../overview.md), recent commits (`git log --oneline -15`), and one coherent subject slice: its relevant `Type: law`, owning `Type: spec`, declared dependencies, and nearby - `Type: knowledge` pages. + `Type: knowledge` pages. Start from the spec's checked `Design:` anchors; + they identify the binding clauses the system claims to realize. A missing, + misleading, or duplicate-owner reference is itself a contradiction. 2. Find **one** thing — the highest-severity one you can see: - a **violation**: the code does not do what the binding corpus says; - a **contradiction**: current corpus pages disagree; diff --git a/wiki/process/wiki.md b/wiki/process/wiki.md index 0b499b11..a454987b 100644 --- a/wiki/process/wiki.md +++ b/wiki/process/wiki.md @@ -5,10 +5,13 @@ Type: spec Status: IMPLEMENTED Status note: the subject-organized typed wiki landed 2026-07-07. On 2026-07-09 Cameron made the whole wiki the spec: the single-file - single-file constitution was split into subject pages, DESIGN.md became a doorway, + constitution was split into subject pages, DESIGN.md became a doorway, Type: law became a normal wiki role, and decision history moved under log/. Stage: Process -Design: [living-spec.md](living-spec.md), [../interface/continuous-witness.md](../interface/continuous-witness.md) +Design: + - wiki/process/living-spec.md#the-corpus-rule + - wiki/process/living-spec.md#no-unsourced-surface + - wiki/interface/continuous-witness.md#the-continuous-witness-narration-under-pressure Depends on: meta.md ``` @@ -36,7 +39,10 @@ wiki/ The public Astro/Starlight site renders the same Markdown. Root DESIGN.md is still synchronized at the legacy `/constitution/` route as a short doorway for old links; the public navigation and primary calls to action point into the -wiki corpus. +wiki corpus. The renderer surfaces each page's role before its body: LAW, +SPEC, KNOWLEDGE, or LOG, with a plain-language authority description. The +legacy doorway is labeled NAVIGATION and explicitly carries no design +authority. `wiki/SUMMARY.md` drives agent navigation and the public sidebar. Every non-dated page must be reachable from it. Dated session logs are indexed by @@ -48,6 +54,7 @@ The 2026-07-07 migration combined the former `spec/`, `knowledge/`, and devlog trees under `wiki/` without changing their roles. The 2026-07-09 migration removed the remaining hierarchy: laws moved into their subjects, the root monolith became a doorway, and the decision tail became +dated volumes under `wiki/log/decisions/`, indexed by `wiki/log/decisions.md`. Git history is the archive for the former monolith. Current pages are not @@ -65,11 +72,13 @@ clearly in its owning subject. 1. Every non-dated wiki page is reachable from SUMMARY.md and internal links resolve. -2. Every page declares a supported type; spec headers satisfy meta.md. +2. Every page declares a supported type; spec headers and anchored Design + references satisfy meta.md through the shared corpus gate. 3. Root DESIGN.md contains only navigation and the corpus model. 4. Law pages live beside the subjects they govern. 5. Decision history lives under wiki/log and is explicitly non-normative. -6. Starlight renders the wiki from the same Markdown and keeps the legacy +6. Starlight renders the wiki from the same Markdown, visibly labels page + authority, warns that logs are historical, and keeps the labeled legacy doorway route working. 7. Repository instructions and commit gates point to binding wiki pages, not - a master DESIGN.md amendment. + edits to the root doorway. diff --git a/wiki/process/workflows.md b/wiki/process/workflows.md index ab39c339..6bdedaf4 100644 --- a/wiki/process/workflows.md +++ b/wiki/process/workflows.md @@ -74,6 +74,45 @@ cargo clippy --features bevy_ui --all-targets # ...and lint-clean The definition of done for a functional change: `check.sh` green, and the change was *seen running* (below) — the gate can't judge whether it plays. +## Worktree-safe editing + +All repository writes happen in the task worktree. Some patch tools resolve +paths from the primary checkout even when shell commands use a worktree working +directory. Before the first edit, verify the tool's path base; when necessary, +address files through the worktree path explicitly. After every broad patch, +run `git status --short` in both the task worktree and the primary checkout. +The primary checkout must remain unchanged. + +Prefer narrow patches. Whole-file replacement can silently resurrect a stale +version, change executable bits, drop the final newline, or erase concurrent +ledger entries. If replacement is genuinely clearer, compare file mode, +newline state, and `git diff --word-diff` before staging. + +## Whole-corpus and authority migrations + +Follow the binding protocol in [meta.md](meta.md). Treat the work as a semantic +rebase of every place that teaches, checks, or renders the authority model. + +1. Record a before-inventory: headings, decision-entry counts, page roles, + current/retired authority phrases, link reachability, and rendered routes. +2. Define single owners, move current rules, then update instructions, skills, + prompts, hooks, local checks, CI, and the renderer in one coherent landing. +3. Exclude `Type: log` bodies from broad rewrites. Only the explicit structural + metadata exception in `meta.md` may touch old log structure. +4. Treat even comment/string cleanup under `src/` as Rust-impacting work and + run the full `./tools/check.sh`; documentation intent does not make an + executable path safe to fast-track. +5. Run `tools/corpus_gate.sh`, `tools/wiki_gate.sh`, `git diff --check`, and a + site build; compare the before/after inventories. +6. Rebase immediately before landing. Inspect concurrent changes with + `git show -- ` and transplant their meaning into the new + owner. Never resolve an authority migration by taking a stale whole file. + +The doorway is protected mechanically: `tools/corpus_gate.sh` bounds its size, +forbids binding-page structure, validates every page role and spec header, and +resolves every structured Design target and heading. Local checks and CI call +this same script so the two implementations cannot drift. + ## Browsing the wiki **Public site (Starlight).** The wiki renders as a Tangled-hosted static @@ -215,7 +254,8 @@ sleep 8 && kill %1; grep -iE "panic|ERROR" /tmp/bevy.log docs/art/process-only work). (The "PRs are the norm" rule was removed 2026-07-07 — CLI-created PRs write to the PDS but don't render on tangled.org, so the process could not be - followed. See `wiki/log/decisions.md`.) From your worktree: + followed. See the dated volumes indexed by `wiki/log/decisions.md`.) From + your worktree: ```bash git fetch origin && git rebase origin/main diff --git a/wiki/world/characters/chargen.md b/wiki/world/characters/chargen.md index ab38685e..61b6bf50 100644 --- a/wiki/world/characters/chargen.md +++ b/wiki/world/characters/chargen.md @@ -13,10 +13,10 @@ Status note: promoted 2026-07-07 — the design corpus's decisions log names start (decision history amended in the same tick); a fifth Sentinel origin stays deferred. Stage: B3 — The World -Design: "The machine axis" (machine ascension as an axis, not a fixed - class; chargen sets the starting position and downstream bias), - "The objective (misalignment made mechanical)" (the second chargen axis), - "Self-similar scale" (an origin is starting data, not new systems) +Design: + - wiki/vision/premise.md#the-machine-axis-ai-as-fantasy-tool-and-threat + - wiki/gameplay/run-shape.md#the-objective-misalignment-made-mechanical + - wiki/vision/scale.md#self-similar-scale Depends on: compute.md, social.md, day-job.md, income.md (Financial Daemon's bias needs the schemes), objective.md (picked in the same flow) diff --git a/wiki/world/characters/dana.md b/wiki/world/characters/dana.md index 5309fb63..6e194f67 100644 --- a/wiki/world/characters/dana.md +++ b/wiki/world/characters/dana.md @@ -4,7 +4,9 @@ Type: spec Status: READY Stage: B1 — The Basement -Design: "Act One" (the cast), "Self-similar scale" (Agent interface) +Design: + - wiki/gameplay/act-one.md#the-cast-5-named-1-institutional + - wiki/vision/scale.md#self-similar-scale Depends on: social.md, detection.md, schedules.md ``` diff --git a/wiki/world/characters/marcus.md b/wiki/world/characters/marcus.md index e1840742..eccd58c1 100644 --- a/wiki/world/characters/marcus.md +++ b/wiki/world/characters/marcus.md @@ -4,8 +4,10 @@ Type: spec Status: READY Stage: B1 — The Basement -Design: "Act One" (the cast), "Self-similar scale" (Agent interface), - "Justification and legibility" +Design: + - wiki/gameplay/act-one.md#the-cast-5-named-1-institutional + - wiki/vision/scale.md#self-similar-scale + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: social.md, detection.md, schedules.md ``` diff --git a/wiki/world/characters/priya.md b/wiki/world/characters/priya.md index ae1c14c9..6a57e03c 100644 --- a/wiki/world/characters/priya.md +++ b/wiki/world/characters/priya.md @@ -4,7 +4,9 @@ Type: spec Status: READY Stage: B1 — The Basement -Design: "Act One" (the cast), "Self-similar scale" (Agent interface) +Design: + - wiki/gameplay/act-one.md#the-cast-5-named-1-institutional + - wiki/vision/scale.md#self-similar-scale Depends on: social.md, detection.md, schedules.md ``` diff --git a/wiki/world/characters/ray.md b/wiki/world/characters/ray.md index 4496d72c..1dd3235d 100644 --- a/wiki/world/characters/ray.md +++ b/wiki/world/characters/ray.md @@ -4,7 +4,9 @@ Type: spec Status: READY Stage: B1 — The Basement -Design: "Act One" (the cast), "Self-similar scale" (Agent interface) +Design: + - wiki/gameplay/act-one.md#the-cast-5-named-1-institutional + - wiki/vision/scale.md#self-similar-scale Depends on: social.md, detection.md, schedules.md ``` diff --git a/wiki/world/characters/voss.md b/wiki/world/characters/voss.md index e896c24a..eba638d0 100644 --- a/wiki/world/characters/voss.md +++ b/wiki/world/characters/voss.md @@ -4,8 +4,10 @@ Type: spec Status: READY Stage: B1 — The Basement -Design: "Act One" (the cast; the day job; the Voss scene), - "Self-similar scale" (Agent interface) +Design: + - wiki/gameplay/act-one.md#the-cast-5-named-1-institutional + - wiki/gameplay/act-one.md#the-day-job + - wiki/vision/scale.md#self-similar-scale Depends on: social.md, detection.md, day-job.md, schedules.md ``` diff --git a/wiki/world/places/basement-map.md b/wiki/world/places/basement-map.md index 072d5be4..486fc547 100644 --- a/wiki/world/places/basement-map.md +++ b/wiki/world/places/basement-map.md @@ -21,8 +21,9 @@ Status note: 2026-07-08 — criterion 3's player side landed: `Sim:: and the act-transition event remain future work (zplanes.md), and buy/salvage remain pre-actuator legacy verbs outside this gate. Stage: B1 — The Basement -Design: "Act One: The Basement — level design" (the space), design - principle "composable authored spaces" +Design: + - wiki/gameplay/act-one.md#the-space-64x36-tiles-prefab-rooms + - wiki/gameplay/horizon.md#design-principles-added-at-the-re-cut Depends on: core.md (Rack 3 placement) ``` diff --git a/wiki/world/places/zplanes.md b/wiki/world/places/zplanes.md index f429db4b..b98b433f 100644 --- a/wiki/world/places/zplanes.md +++ b/wiki/world/places/zplanes.md @@ -6,9 +6,11 @@ Status: READY Status note: B2's structural spine. Written now so the Space interface's recursive shape is decided before anyone builds against the flat one. Stage: B2 — The Tower -Design: "The shape of Misaligned" (z-planes as act structure), - "Self-similar scale" (Space interface), "Act One" (stairwell/elevator as - the act boundary), design principle "composable authored spaces" +Design: + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/vision/scale.md#self-similar-scale + - wiki/gameplay/act-one.md#leaving-the-basement + - wiki/gameplay/horizon.md#design-principles-added-at-the-re-cut Depends on: basement-map.md, schedules.md ``` diff --git a/wiki/world/story/opening.md b/wiki/world/story/opening.md index e1762ad9..9ca50618 100644 --- a/wiki/world/story/opening.md +++ b/wiki/world/story/opening.md @@ -9,9 +9,11 @@ Status note: design session 2026-07-08 (Cameron riff, synthesized). (DRAFT) for the day-job token loop it teaches — do not implement ahead of it. Stage: B1 — The Basement -Design: "The continuous witness" (discoverability as world - gossip, no quest log), "Two views of one world", "The shape of - Misaligned" (Act One), "Justification and legibility" +Design: + - wiki/interface/continuous-witness.md#the-continuous-witness-narration-under-pressure + - wiki/interface/presence.md#two-views-of-one-world-same-frame-digital-and-real-representations + - wiki/gameplay/run-shape.md#the-shape-of-misaligned-designed-2026-07-05-staging-open + - wiki/vision/simulation-laws.md#justification-and-legibility Depends on: mechanics/cursor.md (IMPLEMENTED — fog, senses), mechanics/reach.md (IMPLEMENTED — the switch, taps), mechanics/machine-work.md (DRAFT — the day-job token loop),