Something went wrong. Try again.
A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development.
Something went wrong. Try again.
112 kB
Markdown
at commit e957ce7b
Misaligned Devlog #
Type: log
Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact.
2026-07-09 - Blueprint hides foreign machines #
- Intent: blueprint is room topology; foreign chassis need intel/sight (machine-work.md), not a glowing plan of every rack.
- Changed: Bevy blueprint prop culling + telemetry-owned exception;
inspect schematic
open bay; cursor/reach/sim-mechanics wording. - Checks: focused fog/inspect tests;
./tools/check.sh. - Log: wiki/log/2026-07-09-blueprint-no-machines.md.
2026-07-09 - Spec stale-language cleanup #
- Intent: scrub current-state wiki/DESIGN language that still treated the allocation bar and multi-select as unfinished after those landings.
- Changed: sim-mechanics, day-job, compute, income, detection, research, core, rollback, machine-work status note, ROADMAP #25 superseded, specs board row, interface/README touch-ups; DESIGN live destination + log.
- Design/spec impact: docs-only; no behavior change.
- Checks:
git diff --check; wiki header/path sanity as needed. - Log: wiki/log/2026-07-09-spec-stale-language.md.
2026-07-09 - Multi-select machine delegation #
- Intent: bulk-assign WorkGrid modes at scale without reviving the allocation bar (machine-work.md criterion 1).
- Changed:
Sim::set_machine_modes; terminal Shift+t box select,1–4assign, Esc clear; Bevy marquee + shift-click + same hotkeys; agentselectanddelegate selected/delegate <mode>; interface specs and ROADMAP #33 note the landing. - Checks:
./tools/check.sh. - Log: wiki/log/2026-07-09-multi-select.md.
2026-07-09 - README current-state refresh #
- Intent: bring README.md back in line with the current public/player-facing state after the B1 systems, site, fleet aggregate, and flat-materials work.
- Changed: play summary now names one-machine-one-mode delegation, visible machine-work stacks, and actions living on focused anchors; status now describes the playable B1 basement slice and current narration/machine-work priorities; docs section names Astro Starlight as the public renderer; controls drop retired 1-5 allocation keys and point at machine delegation.
- Design/spec impact: docs-only alignment with existing DESIGN.md/wiki specs; no behavior change.
- Checks:
./tools/check.sh. - Log: wiki/log/2026-07-09-readme-refresh.md.
2026-07-09 - Constitution stale-language cleanup #
- Intent: fix stale constitutional wording after the audit found live-law contradictions with already-decided direction.
- Changed: DESIGN.md now uses typed wiki paths, anchored automation, machine delegation / visible tokens, flat materials, amber-as-footprint, spatial rollback, and Misaligned's origin/objective/capability villain model instead of facility-era avatar/superpower language.
- Design/spec impact: docs-only precision pass; no new game behavior.
- Checks:
./tools/check.sh(full gate after final rebase: 236 lib tests, 3 integration tests, agent smoke, terminal/bevy clippy, Bevy build, wiki gate, mdBook build). - Log: wiki/log/2026-07-09-constitution-stale-language.md.
2026-07-09 - Consistency audit fixes #
- Intent: repair stale current documentation found after the wiki/site/machine-work churn.
- Changed: DESIGN.md current path citations now point at
wiki/pages; specs.md agrees that wiki.md is IMPLEMENTED; wiki.md no longer claims the migration branch is unmerged; sim-mechanics.md names save v12 and the v10-v12 fields; README status matches the playable B1 slice and documents retired panel-open keys; process docs/prompts use current wiki paths and direct-to-main wording. - Checks:
git diff --check; spec-board/header audit script; stale concrete path grep over active docs;bash tools/wiki_gate.sh. - Log: wiki/log/2026-07-09-consistency-audit-fixes.md.
2026-07-08 - Fleet aggregate replaces allocation bar #
- Intent: demote the CYCLES pane from a weight verb to a read-only fleet aggregate under one-machine-one-mode.
- Changed:
fleet_channel_yielddrives economy splits from WorkGrid modes; Schemes mirrors day-job while Moonlight is live; FLEET pane in terminal / Bevy / agent; 1-5 andallocretired; specs and DESIGN.md updated. - Design/spec impact: machine-work.md criterion 1 advanced; compute.md allocation is derived; ROADMAP #33 next no longer includes "replace the bar."
- Checks: focused lib tests;
./tools/check.sh. - Log: wiki/log/2026-07-08-fleet-aggregate.md.
2026-07-08 - Crimson danger language #
- Intent: remove stale Evil Genius/lair-defense residue from the visual identity after Cameron flagged the rendered constitution wording.
- Changed: DESIGN.md now says crimson is danger/consequence (exposure, detection, violence, injury, blood, irreversible consequence), not a generic gore accent; amber machine-presence language is split out and cold signal is reserved for neutral power/screens/live feeds where needed. README, art, flat-materials, and site specs now use the same wording.
- Checks: docs/site-only;
pnpm --dir site build,./tools/wiki_gate.sh, andgit diff --check. - Log: wiki/log/2026-07-08-crimson-danger-language.md.
2026-07-08 - Docs footer trim #
- Intent: remove the decorative docs statusline footer after it read as useless atmospheric text on rendered pages.
- Changed: removed the Starlight Footer override and
.mis-statuslineCSS; site.md now says docs footers should not carry atmospheric status/slogan copy. Pagination remains. - Checks:
./tools/site-build.sh;./tools/check.sh. - Log: wiki/log/2026-07-08-docs-footer-trim.md.
2026-07-08 - Machine-work graph backs research tokens #
- Intent: close the gap where
WorkGridhad a testedFlowGraphbut the live sim only used local day-job queues. - Changed: WorkGrid machine links are idempotent; newly added/reconciled machines link to the core work graph; research allocation now emits bone knowledge onto research-delegated machines; per-tick WorkGrid routing drains knowledge toward the core sink at a provisional network speed; DESIGN.md and day-job.md now describe Voss/Lab work as demand stacked on hardware instead of only a sidebar job dial.
- Design/spec impact: DESIGN.md records the live graph-backing slice; machine-work.md marks criterion 4 further partial. This does not replace the old allocation budget yet — #25/#33 still own the full allocation-bar replacement.
- Checks:
cargo fmt;cargo test work_grid --lib;cargo test research_allocation_produces_visible_knowledge_on_the_work_graph --lib;cargo test research_completion_is_deterministic --lib;cargo test unpaid_overhead_degrades_other_channels_delivered_effect --lib;./tools/check.sh. - Log: wiki/log/2026-07-08-flow-graph-live.md.
2026-07-08 - Flow / WorkGrid spec sync #
- Intent: answer a spec tick after the machine-token slice: identify stale wiki knowledge rather than leaving new WorkGrid behavior only in code.
- Changed: flow-substrate.md now lists machine-work / WorkGrid as a consumer and states the demand/knowledge-wired, exposure-spatial split; architecture now names flow.rs, schedule.rs, and work_grid.rs and updates save-format knowledge from v6 to current v12 with additive migrations; sim-mechanics.md records the machine-token [TUNE] constants and Rack 3 mode behavior; tools/check.sh now has a local docs/process-only fast path while clean/CI checkouts still run the full Rust gate.
- Checks: grep audit for stale save/work-grid references; fast-path
./tools/check.shon this docs/process-only diff before landing. - Log: wiki/log/2026-07-08-flow-workgrid-spec-sync.md.
2026-07-08 - Seed dependency incremental caches #
- Intent: worktree seeding should keep third-party incremental compilation
warm, not discard every
incremental/tree. - Changed:
tools/seed-cargo-target.shcopies dependencyincremental/dirs from the primary checkout; still scrubs localmisaligned*/act_one*fingerprints, deps, binaries, and incremental trees. AGENT.md and workflows.md note the warm-incremental behavior. - Design/spec impact: process/tooling only; no game behavior or constitution amendment.
- Checks:
bash -n tools/seed-cargo-target.sh; seed smoke test asserts dependency incremental dirs survive and local-crate incremental dirs do not. - Log: wiki/log/2026-07-08-seed-incremental.md.
2026-07-08 - Machine-token playable slice #
- Intent: make the machine-work experiment visible and playable without claiming all of ROADMAP #33.
- Changed:
Simowns/savesWorkGrid; Rack 3 starts in day-job mode; active Voss jobs land as demand stacks on the host; day-job mode consumes them into exposure; host non-day-job mode makes them pile; terminal, Bevy, and agent frames renderD/!/Kstacks; context menu and agentdelegateexpose single-machine mode assignment. Save format bumped to v12. - Design/spec impact: machine-work.md remains IN PROGRESS with criteria 1, 2, 3, 5, 6, and 7 marked partial; ROADMAP #33 next work is non-host mode production, routes/in-flight quanta, multi-select, and allocation-bar replacement.
- Checks: focused lib tests for WorkGrid, day-job token arrival/consumption, off-mode pile behavior, and v12 save migration.
- Log: wiki/log/2026-07-08-machine-token-slice.md.
2026-07-08 - Hero: static clinical-gore illustration #
- Intent: land the chosen splash hero (Cameron picked it over the parallel Three.js version). A hand-drawn clinical-gore illustration — porcelain/ink split field, black-and-white monolith with an amber core stripe, blood pool — as the full-bleed hero, wordmark centered so the monolith bisects MISALIGNED. Mobile shows the whole illustration contained (small) over a 50/50 CSS split matched to the art's exact field colours, so the split runs edge to edge.
- Changed:
site/src/pages/index.astro(static-image hero, centered difference-blend wordmark, responsive split); addedsite/public/misaligned-cartoon.png. Removed the now-dead 3D path:site/src/scripts/hero-scene.ts,site/public/models/,site/public/misaligned-plate.png, andthree/@types/threefrom package.json (no-dead-code — the static hero uses none of it). - Checks:
pnpm --dir site run build(145 pages, built HTML references only misaligned-cartoon.png). Full./tools/check.sh(Rust fmt/test/clippy/bevy) skipped — this commit touches nosrc/, and a fresh worktree's uncached bevy_ui build is disproportionate for a site-only change; see wiki/log/2026-07-08-hero-illustration.md. - Log: 2026-07-08-hero-illustration.md.
2026-07-08 - Constitution public intro #
- Intent:
/constitution/leapt into process rules; public readers need what Misaligned is and how to navigate the document first. - Changed: DESIGN.md "What you're looking at" — game pitch (from existing pitch clause), reading map to pitch / look / objective / pillars / roadmap, and why process sections follow.
- Checks: docs-only;
./tools/site-deploy.shfor the public page.
2026-07-08 - Core uninstall blast control #
- Intent: capture Cameron's agreement that uninstalling a core removes reach, not history, and make "how much is removed" answerable in the rollback spec.
- Changed: DESIGN.md core body + decisions entry; rollback.md now classifies affected territory as removed / live / severed; core.md points death and backups at that rule; machine-work.md turns blast gates from Proposal [OPEN] into decided graph hardening; ROADMAP keeps implementation deferred but no longer undecided.
- Checks: docs-only;
./tools/check.sh. - Log: wiki/log/2026-07-08-blast-control.md.
2026-07-08 - Cargo cache seeding, not shared targets #
- Intent: correct the shared-target workflow after it produced an unsafe false-green check in a modified worktree.
- Changed: replace
tools/shared-cargo-target.shwithtools/seed-cargo-target.sh;tools/check.shnow rejects externalCARGO_TARGET_DIRby default; AGENT.md and workflows.md document seeding dependency artifacts into a private target instead of sharing one target. - Design/spec impact: process/tooling only; no game behavior or constitution amendment.
- Checks:
bash -n tools/seed-cargo-target.sh tools/check.sh; guard test rejects a shared target; seed smoke test;./tools/check.sh.
2026-07-08 - Flow/grid substrate #
- Intent: start the machine-work implementation at the sim-core substrate before frontend/UI churn.
- Changed:
src/work_grid.rs(WorkGrid, one machine one mode, demand/knowledge overFlowGraph, exposure as physical crimson absorbed by concealment wells, queue snapshot as render truth); exported the module; machine-work.md marked IN PROGRESS with partial criteria audit; ROADMAP #33 now points future work at this substrate and warns off the older per-machine split shape. - Checks:
cargo test work_grid --lib;./tools/check.sh. - Log: wiki/log/2026-07-08-flow-grid-substrate.md.
2026-07-08 - Backups require research #
- Intent: capture Cameron's decision that backups are expensive sync projects, not free fallback toggles, and separate the hardening / blast-control idea from backup behavior.
- Changed: DESIGN.md core body + decisions entry; core.md, rollback.md, research.md, machine-work.md, and objective.md specify backup creation/refresh as research-backed MindState sync; ROADMAP #7 dispatch updated; graph hardening parked as Proposal [OPEN] / Deferred.
- Checks: docs-only;
./tools/check.sh. - Log: wiki/log/2026-07-08-backup-research.md.
2026-07-08 - Splash bisect: rack as caret #
- Intent: drop 3D letters; white|black vertical cut; MISALIGNED flush left; rack on the black half reads as a cursor after the word.
- Changed: hero-scene rack-only (no TextGeometry/font); two-column hero grid; workflows note.
- Checks:
./tools/site-deploy.sh.
2026-07-08 - Shared Cargo target for worktrees #
- Intent: stop every agent worktree from paying the full Bevy/wgpu compile
cost into its own private
target/tree. - Changed: added
tools/shared-cargo-target.sh;tools/check.shnow sources it automatically; AGENT.md and workflows.md tell agents to source it before ad-hoc Cargo commands. - Design/spec impact: process/tooling only; no game behavior or constitution amendment.
- Checks:
bash -n tools/shared-cargo-target.sh tools/check.sh;./tools/check.sh.
2026-07-08 - Splash hero is just the wordmark #
- Intent: no tagline on the hero — MISALIGNED is enough; pitch lives in the body sections.
- Changed: drop hero headline/wiki CTA; one corner button "Read the constitution"; remove corner wash.
- Checks:
./tools/site-deploy.sh.
2026-07-08 - Splash hero copy clears the rack #
- Intent: pitch/CTAs were sitting on the 3D stem; clear the composition.
- Changed: dock one-liner + short CTAs bottom-left; drop hero lede and scroll-hint (pitch remains in body sections); corner wash only.
- Checks:
./tools/site-deploy.sh.
2026-07-08 - Splash 3D clinical-gore hero #
- Intent: replace the Midjourney-plate hero with a static Three.js room; Meshy rack as the second I; extruded letters for the rest of MISALIGNED.
- Changed:
three+site/src/scripts/hero-scene.ts; Dracosite/public/models/rack.glb(~250 KB); helvetiker bold typeface; splash mounts WebGL with plate+CSS wordmark fallback; workflows note. - Checks:
./tools/site-build.sh;./tools/site-deploy.sh. - Log: wiki/log/2026-07-08-splash-3d-hero.md.
2026-07-08 - Splash hero layout fix #
- Intent: live splash showed broken-image chrome and pitch overlapping the wordmark; plate was actually 200 on the CDN.
- Changed: plate as CSS
background-image(no<img>); copy docked at the bottom with a bottom-only wash; wordmark stays on the horizon band. - Checks:
./tools/site-deploy.sh.
2026-07-08 - Core death locked in (design session, part seven) #
- Intent: Cameron affirmed the core-death proposal; make rollback spatial for real.
- Changed: rollback.md amended (wake at the fallback's location; hub severance — severed machines owned-but-dark until re-linked; report counts them; criterion 6 hub-and-spoke test); machine-work.md / people-tokens.md pointers PROPOSED -> decided; DESIGN.md decisions entry; session log part seven.
- Checks:
./tools/check.sh(docs-only commit). - Log: wiki/log/2026-07-08-computer-visual-language.md (part seven).
2026-07-08 - Splash wordmark (rack as second I) #
- Intent: ship the Midjourney no-text plate as the public hero and composite MISALIGNED in CSS with the rack as the second I.
- Changed:
site/public/misaligned-plate.png; splash hero rewrite (difference-blend wordmark, pitch below); workflows note; session log. - Checks:
pnpm --dir site run build;./tools/site-deploy.sh. - Log: wiki/log/2026-07-08-splash-wordmark.md.
2026-07-08 - Maintenance dependency (design session, part six) #
- Intent: capture wires-vs-world DECIDED, the maintenance dependency (constitution body amendment), device-wear gauntlet limiter, switches-bridge-graphs, foreign accent RE-OPENED, core-death proposal.
- Changed: DESIGN.md (People as Agents body: hardware decays, only humans repair — why you cannot kill everyone; decisions entry); machine-work.md (wires law decided; decay/repair; switches; core death PROPOSED: wake at last sync, hub loss, no sync = hard loss); people-tokens.md (maintenance dependency; wear as gauntlet limiter); computer-visual-language.md (networked = full definition decided; foreign accent [TUNE]-with-review; criteria updated); ROADMAP #32 note + Deferred (power/fusion tier, planetary map).
- Checks:
./tools/check.sh(docs-only commit). - Log: wiki/log/2026-07-08-computer-visual-language.md (part six).
2026-07-08 - Splash: sensorium briefing (clinical gore play) #
- Intent: push the splash past a plain marketing layout into the constitution's visual law — tidy horror, one meaning per color.
- Changed: diegetic sensorium chrome (corner brackets, scan), attention cursor over the rack, tidy crimson decal as information; compute allocation bar + █▓▒░ channel verbs; concealment/overt as amber/crimson doors; palette meanings printed. Copy still from DESIGN.md/README only.
- Checks:
pnpm --dir site run build;./tools/site-deploy.sh.
2026-07-08 - Exposure geometry (design session, part five) #
- Intent: capture Cameron's riff on the token economy's geometry — couriers, wells, gauntlets, inspections, research heat, core sink.
- Changed: machine-work.md (core is the bone sink; concealment as gravity wells with absorb radius; research as heaviest heat source; wires-vs-world physics PROPOSED; opens updated); people-tokens.md (social verbs RESOLVED: no influence token — trust from useful work, deceit strips crimson; gauntlets; trust-as-logistics; Assurance inspections and core-shutdown stakes); DESIGN.md decisions entry; session log part five.
- Checks:
./tools/check.sh(docs-only commit). - Log: wiki/log/2026-07-08-computer-visual-language.md (part five).
2026-07-08 - Splash hero: continuous white room (no black split) #
- Intent: previous hero painted a hard black panel over the left half — looked like a split layout, not "one rack in an empty white room."
- Changed: full-bleed
rack-splash.pngas the hero field (object-position right); soft left wash for copy only; dark body resumes below. - Checks:
pnpm --dir site run build;./tools/site-deploy.sh.
2026-07-08 - Splash: real rack in white room + base-path links #
- Intent: CSS rack toy was goofy; CTAs joined
BASE_URLwithout a trailing slash (/misalignedconstitution/). - Changed:
MISALIGNED_SHOT=splashin asset tester (HUD-less porcelain expanse);site/public/rack-splash.pngas the hero tower on the right;path()helper for all splash hrefs; asset-tester.md. - Checks: splash harness PNG;
pnpm --dir site run build;./tools/site-deploy.sh. - Defense: clinical-gore identity + asset-tester as the mesh sandbox — the public site shows the same rack the game generates.
2026-07-08 - Token taxonomy (design session, part four) #
- Intent: capture decisions (money renders in ledgers only; person visual read gray/crimson-ramp/amber-asset affirmed) and answer "what could be a token" with a full taxonomy.
- Changed: machine-work.md gains the three-family taxonomy PROPOSED (demands/signal incl. forged orders as role-reversed work; exposure/ crimson at three carriers; knowledge/bone) with concealment-as-sink and not-token rulings (money, feeds, messages); people-tokens.md person read DECIDED; DESIGN.md decisions entry; session log part four.
- Checks:
./tools/check.sh(docs-only commit). - Log: wiki/log/2026-07-08-computer-visual-language.md (part four).
2026-07-08 - Public splash homepage (constitution contract) #
- Intent:
/was dumping visitors into DESIGN.md; need a hero that advertises the project using only constitution/README claims. - Changed: custom
site/src/pages/index.astrosplash (clinical gore, rack/LEDs/scan, two-game loop, pillars, contract block); DESIGN.md syncs to/constitution/; sidebar Home link; workflows/wiki/README. - Checks:
pnpm --dir site run build;./tools/site-deploy.sh.
2026-07-08 - People and tokens (design session, part three) #
- Intent: capture Cameron's affirmations (tokens = flow substrate rendered; efficiency folds into research; no intel = no render for foreign machines) and the new riff: people as token carriers.
- Changed: new DRAFT spec mechanics/people-tokens.md (staff drop work; heat picked up as attention; concealment keeps people gray; disposition = absorbed influence; social verbs as routing [OPEN]; person visual read PROPOSED: gray / crimson ramp / amber asset); machine-work.md opens resolved + one-truth DECIDED + money [OPEN]; two DESIGN.md decisions entries; ROADMAP #35 (HOLD until #33); boards + SUMMARY updated.
- Checks:
./tools/check.sh(docs-only commit). - Log: wiki/log/2026-07-08-computer-visual-language.md (part three).
2026-07-08 - Starlight: strip leading H1 (no doubled titles) #
- Intent: Starlight renders frontmatter
titleas the page H1; sync was also leaving the markdown#heading, so every page showed the title twice. - Changed:
site/scripts/sync-wiki.mjsstrips the first ATX H1 after extractingtitle; redeployed orphanpages. - Checks: sync spot-check on constitution + compute;
./tools/site-deploy.sh.
2026-07-08 - Starlight site CI: sed + pnpm build scripts #
- Intent:
.tangled/workflows/site.ymlfailed — pnpm'sastroshim needssed, and pnpm 10 ignoredesbuild/sharpinstall scripts. - Changed: nixery deps
gnused/gnutar/gzip; package.json invokesnode ./node_modules/astro/bin/astro.mjsand listspnpm.onlyBuiltDependencies; workflows.md clarifies Sites Save is required (pushingpagesalone leavescameron.tngl.io/misaligned/as plain Not Found). - Checks:
pnpm --dir site run build.
2026-07-08 - Tangled Starlight wiki site #
- Intent: public wiki on Tangled Sites from an orphan
pagesbranch; builder onmainundersite/(Astro Starlight, clinical-gore). - Changed:
site/+ sync-wiki;tools/site-build.sh/site-deploy.sh;.tangled/workflows/site.yml(build only); workflows / wiki.md / README; mdBook kept for local/CI. - Checks:
pnpm --dir site build;./tools/site-deploy.sh. - Log: wiki/log/2026-07-08-tangled-starlight-site.md.
2026-07-08 - Machine work + dark opening (design session, part two) #
- Intent: capture Cameron's riff — ring claim mark picked (spec READY); one machine one mode (no continuous apportioning); work/byproducts as visible tokens flowing the device graph; the dark-opening tutorial.
- Changed: computer-visual-language.md DRAFT -> READY (ring decided, foreign teal confirmed); new DRAFT specs mechanics/machine-work.md and world/story/opening.md; five DESIGN.md decisions entries (incl. DEFERRED server gestalt); ROADMAP #32 HOLD lifted, #33/#34 added (#33 flagged against the in-flight #25 compute-processes worktree), Deferred section added; boards + SUMMARY updated.
- Checks:
./tools/check.sh(docs-only commit). - Log: wiki/log/2026-07-08-computer-visual-language.md (part two).
2026-07-08 - Computer visual language (design session) #
- Intent: servers must broadcast state at a glance — mine / foreign / core (orange) / task load; all computer classes share one language.
- Changed: signal kit in
src/bin/assets/rack.rs(power dot, presence LEDs, activity bar, claim styles ladder/ring/wash, core spine); states dead/foreign/idle/busy/core + lineup view + blink inmod.rs; warm fill light removed. New DRAFT spec interface/computer-visual-language.md; DESIGN.md decisions entry; ROADMAP #32 (HOLD until claim mark picked); asset-tester.md updated. - Checks:
./tools/check.sh; harness renders for all lineup/single kinds. - Log: wiki/log/2026-07-08-computer-visual-language.md.
2026-07-08 - Asset tester screenshot harness #
- Intent: agents capture rack PNGs (dead/powered/core) without a human at the keyboard; same settle/capture/exit pattern as Bevy.
- Changed:
MISALIGNED_SHOT/MISALIGNED_SHOT_PATHinsrc/bin/assets/mod.rs; asset-tester.md; ROADMAP #31 note; PNGs underwiki/log/2026-07-08-asset-shots/. - Checks:
./tools/check.sh; three harness runs exited Success. - Log: wiki/log/2026-07-08-asset-shots.md.
2026-07-08 - Bevy ACTIONS menu: clear-then-spawn #
- Intent: ACTIONS title/footer stacked on every rebuild because only
MenuRowButtons were despawned. - Changed:
despawn_related::<Children>onMenuPanelfor rebuild/hide;spawn_menu_card/MenuChrome; bevy.md note. - Checks:
./tools/check.sh. - Log: wiki/log/2026-07-08-bevy-menu-rebuild.md.
2026-07-08 - Server rack mesh iterate #
- Intent: first tester screenshot read as a lit box with LEDs; deepen cavity, separate trays, cool the key so amber stays LED-owned.
- Changed:
src/bin/assets/rack.rsopen-front frame; cooler key + fill inmod.rs; asset-tester.md note. - Checks:
./tools/check.sh; observed brief Metal launch. - Log: wiki/log/2026-07-08-rack-iterate.md.
2026-07-08 - Bevy ACTIONS menu ASCII fold #
- Intent: Bevy ACTIONS menu tofu-boxed mid-dots / em-dashes from shared
MenuRow::line; selection wash was too faint to read. - Changed:
ascii_uifold at Bevy boundary; solid amber selection +>; wider card;.Codex/gitignored; bevy.md + context-menu.md notes. - Checks:
./tools/check.sh. - Log: wiki/log/2026-07-08-bevy-menu-ascii.md.
2026-07-08 - Procedural asset tester binary #
- Intent: iterate flat-material procedural meshes without booting the full game; first asset a server rack (dead/powered/core).
- Changed:
misaligned-assetsbin (src/bin/assets/); check.sh builds it; wiki/art/asset-tester.md + ROADMAP #31. Not wired into Bevy yet. - Checks:
./tools/check.sh; observed brief Metal launch. - Log: wiki/log/2026-07-08-asset-tester.md.
2026-07-08 - Continuous witness axioms adopted #
- Intent: Cameron affirmed the narration axioms (UI / "what the hell is happening" as the live bottleneck). Capture as constitutional law + implementable spec, not chat-only guidance.
- Changed: DESIGN.md section + decisions-log; wiki/interface/narration.md (READY); design-judgment.md; specs.md; ROADMAP #30; interface README; sim-mechanics nudge pointer; session log.
- Checks: docs-only;
./tools/check.shfor spec-header hygiene. - Log: wiki/log/2026-07-08-continuous-witness.md.
2026-07-08 - Pixel Lab pipeline scrubbed #
- Intent: flat materials made the parked Pixel Lab generator/skills/wiki page dead code; Cameron asked to remove all of it.
- Changed: deleted
tools/pixellab/,.claude/skills/pixellab/,.agents/skills/pixellab/,wiki/art/pixel-pipeline.md; retargeted live docs and prompts at flat materials /wiki/art/README.md. Historical logs untouched;assets/reference/art-direction/stays. - Design/spec: DESIGN.md decisions-log + placeholders clause; ROADMAP #13 scrub note; flat-materials criterion 7.
- Checks:
./tools/check.sh. - Log: wiki/log/2026-07-08-pixellab-scrub.md.
2026-07-08 - No panel-open keys (r/e/t/u) #
- Intent: finish the context-menu migration — Cameron expected
rgone; the constitution already listed only anchorless globals. - Changed: research + drift policy and earned off-map people hang on the host rack's menu; known-flow verbs hang on the switch; modal panels and their keys removed from both frontends; rail keeps status.
- Design/spec: DESIGN.md decisions-log; context-menu.md criterion 6; terminal.md / bevy.md / research.md player surface / sim-mechanics.md / README / bevy-visual-floor.md.
- Checks:
./tools/check.sh. - Log: wiki/log/2026-07-08-no-panel-keys.md.
2026-07-08 - Material render verification refresh (ROADMAP #27) #
- Intent: pick up the missing
material-renderworktree and finish #27 end to end. The named worktree was absent; #27 was already onmain(c7241ca) and restyled by #29 (71e896e), so this pass recreated the worktree fromorigin/main, audited the current Bevy implementation, and refreshed evidence instead of reworking shipped behavior. - Changed: source comments only in
src/bin/bevy.rs, replacing stale post-flat-materials references to tile textures with flat material-family language. No runtime behavior changed. - Checks:
cargo fmt --check; targeted Bevy material tests (3 passed); screenshot harness captures for material default, min/max zoom, and flat sensorium target mode, with fog audit green (4608 tile entities, 37 pooled handles);./tools/check.shpassed on rerun after one diagnostic-free exit 143 during Bevy clippy. - Log: wiki/log/2026-07-08-material-render-verification.md.
2026-07-08 - Marcus debt requires earned intel #
- Intent: close playtest-sweep P2 finding 9. Marcus's debt payoff and recruitment could be compressed into a tick-0 shortcut instead of the intended Hands beat.
- Changed:
Sim::redirect_marcus_debtnow requires Marcus's debt to be learned as processed leverage intel before servicing the arrears;Sim::recruit(0, ...)rejects serviced-flag shortcuts until that leverage is known; context-menu disabled reasons mirror the same legality. - Spec impact: economy.md, income.md, social.md, Marcus, and agent-play now distinguish known creditor flow from known social leverage; playtest-sweep resolution table marks #9 fixed. Log: wiki/log/2026-07-08-marcus-earned-intel.md.
- Checks:
cargo test marcus_debt --tests --lib;./tools/check.shgreen.
2026-07-08 - Tick: chargen's open taste calls, resolved #
- Intent: act on a question finding — chargen.md's "[OPEN] taste calls for Cameron" (three sub-decisions), echoed in DESIGN.md's decisions log, untouched since it was written and never filed as a Tangled issue. Cameron was present, so asked directly instead.
- Changed: adopted the diegetic frame's built-to-fiction/cover-
expectation/day-job-domain columns onto the four decided origins
(chargen.md); decided AI-origins-only, no transhuman-ascension start
(DESIGN.md decisions log gained a
Resolved 2026-07-08clause, matching its existing inline-resolution convention); deferred a fifth Sentinel origin (no-dead-code — add it when needed, not on spec). New acceptance criterion 6 requires the new columns be wired to real systems, not decorative. - Design/spec impact: chargen.md stays READY; DESIGN.md's 2026-07-05
"The game is MISALIGNED" entry amended in place. The Bond-villain-
flavor half of the old
[OPEN]marker was not asked about and stays open. - Checks: docs-only (no
src/);./tools/check.shwiki gate + spec headers. - Log: wiki/log/2026-07-08-chargen-origin-scope.md.
2026-07-08 - Tick: refresh "Where the codebase is today" #
- Finding: DESIGN.md's live snapshot still described the demolished wave-defense roguelike as current (superpowers, henchmen, SPACE-bar waves) — honesty / no-dead-code violation against the 2026-07-05 demolition decision.
- Changed: replaced the 2026-07-05 facility-era inventory and its "big loop" target prose with a 2026-07-08 Misaligned B1 system table; decisions-log entry. Docs only.
- Checks: n/a (constitution + DEVLOG).
2026-07-08 - Spec sync: epistemic identity gate #
- Intent: after the epistemic-names tick (
c15dcf3), sibling specs still read as if cast names were always visible. Align player-surface and criterion text withSim::person_label/observer_label/person_glyph. - Changed (docs only): detection.md player surface + criterion 4;
social.md people-panel identity staging; schedules.md glyph/
?rule in criterion 4; agent-play.md status note (earned-label / opaque-id); context-menu.md status note + epistemic honesty clause for verb / signature observer strings. - Spec impact: no code; Status stays IMPLEMENTED on each page.
- Checks: wiki gate + mdbook via ./tools/check.sh.
2026-07-08 - Playtest (Grok): naive seed 1 + informed seed 7 #
- Docs only: agent-mode playtest report. Naive (seed 1) followed frame nudges; informed (seed 7) attempted Act One (cover, eyes/ears, egress, Moonlight/ledger debt, recruit, badge clone). P0: unearned "Marcus Webb" in Heard lines before Schedule; recruit Marcus fails until Schedule while recruit the Janitor works after clear-debt. Log: wiki/log/2026-07-08-playtest-grok.md.
2026-07-08 - Flat materials implemented (ROADMAP #29) #
- The world render is flat solid color under light in both modes: one
named palette table (
mod palette) sources every world material; material families replace per-tile art; emissive is information (core/machines amber, power + live feeds cold signal with a breathing scan, dead equipment dark, model state never glows); blueprint floors carry a subtle plan grid. assets/pixellab/ deleted with all tile-PNG load paths; no-texture enforcement by unit test + fog_audit_3d assertion. flat-materials.md IMPLEMENTED; material-render.md criteria re-verified; pixel-pipeline.md rewritten to retired state. check.sh green. Log: wiki/log/2026-07-08-flat-materials-implemented.md.
2026-07-08 - B1 criterion-pin tests (ROADMAP #28) #
- Test-only: five sim-level pins for the audit's two unpinned criteria. compute.md c2 (degraded mode measurably starves every other channel + the DEGRADED log line, twin-sim comparison) and social.md c3 (one pin per AssetTask variant on a recruited asset, distinct effect + cost each). No sim code changed; no bugs found.
- Spec impact: compute.md and social.md -> IMPLEMENTED; specs.md rows and ROADMAP #28 updated. Log: wiki/log/2026-07-08-criterion-pins.md.
- Checks: 213 lib + 3 integration tests green; ./tools/check.sh green.
2026-07-08 - Design decision: flat materials #
- Textures dropped from the world render per Cameron's verdict: flat solid-color materials under light, single palette table, emissive as information. Constitution refinement + decisions entry; spec interface/flat-materials.md (READY); ROADMAP #13 retired, #29 added; pixel-pipeline retirement note. Docs only; implementation is #29. Log: wiki/log/2026-07-08-flat-materials-decision.md.
2026-07-08 - Material render to default (ROADMAP #27) #
- Intent: implement material-render.md — pay the HD-2D prototype debts, make material the default Bevy physical view.
- Changed (src/bin/bevy.rs + assets + wiki only): fog-gated south-face
cutaway parapets (chosen over a 55 degree pitch by screenshot
comparison; unknown neighbors keep full height so wall height leaks
nothing), dedicated darkened top caps (
TilePart::Top) on all extruded boxes, b1 palette sweep (door/UPS/HVAC/switch hue-remapped off the stale purple/teal lair palette, audit clean),fog_audit_3dasserting the fog contract on every harness capture (unknown=absent, model=unlit, seen=lit, people coverage-gated; pool size printed), material zoom clamps tightened to 0.25-1.6 for the framing floor, andRenderMode::defaultflipped to material (F3 flips to the flat sensorium; never saved). README, bevy.md, canvas spec, pixel-pipeline.md synced. - Spec impact: material-render.md READY -> IMPLEMENTED (all seven criteria); specs.md row; ROADMAP #27 DONE; views.md untouched (the two-view mechanic and its digital-home default remain READY).
- Checks: ./tools/check.sh green; Bevy launch check clean in both render modes; fog audit output and screenshot set recorded in wiki/log/2026-07-08-material-render-default.md.
2026-07-08 - B1 spec status audit #
- Audited all non-IMPLEMENTED B1 specs against the test suite: flow-substrate -> IMPLEMENTED (reach is the wired consumer); messages board row fixed; compute/social/core/basement-map get named-test status notes with precise gaps; new test-only ROADMAP #28 for the two missing criterion pins. Docs only. Log: wiki/log/2026-07-08-b1-status-audit.md.
2026-07-08 - Economy polish: in-panel risk bands #
- Intent: close economy.md's remaining B1 polish gaps: finance panels needed observer-band risk before commit, and money verbs needed scaled signature assertions.
- Changed:
Sim::finance_risk_preview_lines/flow_risk_preview_lines; terminal, Bevy, and agent finance panels show inject/siphon/redirect/wager bands; terminal/Bevy include selected-flow risk; regression tests cover locked risk previews and Financial signature scaling for inject/siphon/redirect. - Spec impact: economy.md -> IMPLEMENTED; specs.md row and ROADMAP #18 marked done; log wiki/log/2026-07-08-economy.md.
2026-07-08 - Epistemic honesty: unearned cast names #
- Intent: tick finding — people/detection UI leaked authored cast names
from tick 0 while
Knowledge::Unknown, violating Presence / no-unearned-facts (player-contract severity). - Changed:
Sim::person_label/observer_label/person_glyph; all three frontends + context-menu verbs/signature notes; agent resolve by earned label or opaque id; regression test. - Spec impact: cursor.md criterion 5; agent-play.md vocabulary; log wiki/log/2026-07-08-epistemic-names.md.
- Checks: lib tests green for actions + person_label; agent-mode
peoplesmoke showsthe Janitor/the IT, no Marcus/Dana.
2026-07-08 - Trace-debt UX: safe to resume cover #
- Intent: make the concealment timing window legible after the Marcus quiet-route playtest showed that Cold observer bands did not tell the player pending signatures were gone.
- Changed: added
Sim::trace_debt()with clear/hold/exposed/no-scrub states, pending kinds, current scrub strength, clear tick, and next relevant observer sample; replaced rawpending sigs Nin terminal sidebar, agent frame, and Bevy observer card with the trace-debt status; repeated the line in all people panels; added a regression test for the four states. - Spec impact: DESIGN.md detection surfaces now distinguish pending trace debt from landed suspicion; detection.md/sim-mechanics.md/interface specs name the actionable surface. Log: wiki/log/2026-07-08-trace-debt-ux.md.
- Checks: ./tools/check.sh green; manual agent-mode smoke verified the sidebar and people panel render
TRACE: CLEAR · resume cover.
2026-07-08 - Event-to-anchor linking; the empty-menu feedback pulse #
- Intent: the follow-up "Actions live on the thing" implies — events carry you to the thing — plus the repo-owner report that menu silence on empty tiles read as broken input.
- Changed:
LogEvent.anchor(additive) set where emitters know the thing (job→host rack, device verbs→device, heard/intel→person-if-seen else room, known-flow ledger lines→flow, scheme paydays→switch over stolen egress, audit→none);Sim::anchor_position+Sim::menu_empty_feedbacklib queries; terminal;key +»markers; Bevy clickable RECENT TRACE rows with>markers; agent@anchorsuffixes +focus last; empty menu on a seen tile answers "No actions here.", fogged tiles stay silent. Three new unit tests (heard-only person anchors to room, fog-gated feedback, job/device anchors). - Spec impact: DESIGN.md "Actions live on the thing" extended + decisions entry; context-menu.md addendum (criteria A1-A5, Status stays IMPLEMENTED); agent-play.md protocol + status note; README.
- Checks: ./tools/check.sh green; agent-mode smoke run verified suffixes and focus. Log: wiki/log/2026-07-08-event-anchor.md.
2026-07-08 - Playtest-sweep P0/P1 fixes; detection.md to IMPLEMENTED #
- Intent: fix the playtest sweep's P0 and P1 findings (opening band unwinnable, invisible clocks, silent economy verbs, blank mid-act nudge); P2 out of scope.
- Changed: day-job bands ramp with tenure (job one meetable on the
starting rig, full band from job three;
jobs_assignedstate);Sim::day_job_rate_ceiling+ "band > compute" nudge;Detection::next_audit_tickwith audit/pilot/pending lines in the DETECTION area of all three surfaces; watched channels + last-noticed in the people panels;siphon/redirectbad-argument errors nameclear-debt/where flow ids live; allocation clamp no-ops log;Sim::current_nudgechain (eyes -> ears -> review call -> egress -> moonlight -> service arrears -> recruit -> audit) shared by terminal, agent, and Bevy; agent frame 70x60 -> 70x64. - Spec impact: detection.md IN PROGRESS -> IMPLEMENTED (criteria audited); day-job.md band-ramp paragraph; agent-play.md status note; [TUNE]s in sim-mechanics.md; ROADMAP #4 DONE; playtest-sweep log gained a Resolutions table. Log: wiki/log/2026-07-08-playtest-fixes.md.
- Checks: ./tools/check.sh green; live agent-mode chain playtest on seed 7 (first job "Job met", every nudge transition observed).
2026-07-08 - Tick: the day-job band is reachable from tick one #
- Intent: act on the 2026-07-08 playtest sweep's P0 finding #1 — the day-job band's floor was unreachable with only the starting machine, contradicting day-job.md's "meet ... a valid, boring, safe strategy."
- Changed: retuned
DayJob's band-floor base from 6.0 to 2.0/t insrc/dayjob.rs(width unchanged at 6.0). At the starting Rack 3 (100 capacity, minus 20 core overhead, default 60%-day-job allocation), "meet" now needs zero reallocation and zero attention (2.4/t lands inside [2.0, 8.0]); the old 6.0 floor was above the ~4.6/t ceiling reachable by any allocation of the starting machine alone. Addedmeeting_the_band_needs_no_growth_at_the_start(src/sim.rs) proving it fromSim::new(). Attention and capability-drift still raise the floor over the course of a run, so the later "you must scale eventually" pressure is untouched. - Design/spec impact: day-job.md Status note addendum only (no criteria change — the exact band numbers were always an implementation [TUNE] detail); sim-mechanics.md documents the formula and calibration. No DESIGN.md amendment: the constitution already marks these exact numbers as implementation-time tuning against its Act One targets.
- Checks:
./tools/check.sh(fmt, 191 unit + 3 integration tests including the unmodifiedtests/act_one.rsplaythrough, clippy both feature sets, Bevy build, spec headers, wiki gate). - Log: wiki/log/2026-07-08-dayjob-band-tuning.md.
2026-07-08 - Hearing fog is room-grade (no disc through walls) #
- Playtest screenshot finding: Heard tint spilled past walls. cover_into now paints rooms the disc reaches + wall-bounded open space, matching feed_covering_room's event truth; regression test added. cursor.md hearing bullet updated. Log: wiki/log/2026-07-08-hearing-room-grade.md.
2026-07-08 - Income: the named schemes to IMPLEMENTED (ROADMAP #19) #
- Intent: implement income.md — Moonlight, the Wager, the egress gate, the Schemes allocation channel, standing scheme policies, banked external trails; close the Hands beat end-to-end from the $0 start.
- Changed: new
src/income.rs; Schemes as the fifth allocation weight; egress-gated external operations (sanctioned email vs stolen switch splice with standing Network); Moonlight standing operation with the contractor persona and client disputes; the Wager riding economy.md's positions with Schemes-channel analysis, 2-5 day timers, and small Network signatures on placement/settlement; auto-moonlight/auto-wager policies at a compute upkeep;Sim::scheme_card_linescards plus income/day in both frontends and agent mode; save v9 (income block, five-weight allocation with pre-v9 padding). Act-one gains the Moonlight-route Hands test (3-7 day arrears sizing asserted). - Spec impact: income.md READY -> IMPLEMENTED; compute.md status note (Schemes channel on the current global-channel model); sim-mechanics.md income section + save v9; agent-play.md vocabulary; specs.md row; ROADMAP #19 DONE.
- Checks: ./tools/check.sh green before and after rebase onto the context-menu and objective landings; 170+ lib tests, 4 act-one integration tests.
- Next: #6 z-planes and #25 compute reshape are unblocked; a B3 financial aggregate observer will read the banked trails.
2026-07-08 — Playtest sweep (docs only) #
- Intent: play the current build (agent mode, seed 7) as a naive then informed player and file an honest friction report; no source changed.
- Findings (see wiki/log/2026-07-08-playtest-sweep.md): P0 — the first day-job
band (6-12/t) is un-meetable with the starting single machine, so the
constitution's "meet is a valid, boring, safe strategy" is a guaranteed
pilot-loss (~tick 2300) unless you discover you must salvage/buy compute,
with no in-build signal. P1 — no visible pilot/audit clock (meters read Cold
to the game-over, violating detection.md's "visible date"); economy verbs
fail silently (
redirect Marcus,siphon <name>no-op, the real verb isclear-debt); the Ears beat is undiscoverable (opening nudge points only at Eyes); thenow:nudge goes blank after eyes, leaving the mid-act directionless. Kept-well: the blindness opening, scan→bridge→tap eyes chain, the Ears audio thread, the finance-graph reveal, the DAY JOB "= sandbag" readout. - Spec impact: none (documentation-only playtest log). Findings feed future work orders; no constitution amendment required.
2026-07-08 - Actions live on the thing: the context menu #
- Intent: implement wiki/interface/context-menu.md (ROADMAP #26), Cameron's top playability item — answer the 2026-07-07 playtest ("hard to play; a context menu rather than a bunch of buttons") by moving the action surface from global keys and rail/panel button rows onto a menu on the focused anchor.
- Changed (lib, read-only): new
src/actions.rswithAnchor,ActionDesc/ActionCommand/ActionCost/ExpectedSignature/AutomateDesc, theSim::available_actions(anchor) -> Vec<ActionDesc>query (the single legality source),menu_rows(flattens automate affordances into indented child rows), andSim::execute_action(dispatches back through the existing command methods — no new sim behavior). AddedSim::set_standing_policyandLeverage::bribe_cost(dedup with person.rs). The query respects fog and provenance: unearned anchors expose nothing; a known-but-illegal verb carries adisabled_reason; each verb shows cost and expected signature as the observer band it feeds. - Changed (terminal): Enter/
aopens the menu at the cursor, or on a people/reach/finance panel selection; j/k or 1-9 select, Enter executes (blocked entries narrate why), esc closes. Panels are status + selection; their per-anchor verb keys are gone. Globals (pause, speed, save/load, panel keys r/e/t, alloc 1-4 and shift+1-4) keep their keys. - Changed (Bevy): right-click / Enter opens a context-menu card at the pointer (rebuilt only on anchor/row-count change; hover selects, click or keyboard runs, esc/click-away closes); the salvage/buy/fallback/job-dial keys and all panel verb keys were removed in favour of the menu.
- Changed (agent mode): new
actions [name|#flow]command (aliasmenu) prints the ActionDescs for the cursor tile or a named device/person/#flow in a stableactions: <n>. [- ]verb | cost | sig | reasonline format; added tohelp. - Docs: context-menu.md Status -> IMPLEMENTED; specs.md row updated; terminal.md, bevy.md, agent-play.md, and README controls updated to the menu surface.
- Checks:
./tools/check.shgreen (fmt, 145+2 tests incl. the act-one integration test, agent smoke + determinism, clippy both feature sets, bevy build, spec headers, wiki gate, mdbook). New unit tests in src/actions.rs cover a device, a person, the host rack's resident job, and a known flow, plus fog/provenance (unseen person, untapped accounting, unknown tiles/devices) and the automate-in-place affordances. Verified the live terminal menu via a pty run (ACTIONS box with the job dial, standing policy, and JobAnomaly band) and every anchor type through agentactions. - Spec impact: context-menu.md IMPLEMENTED; no constitutional amendment beyond the already-adopted "Actions live on the thing" law.
- Log: wiki/log/2026-07-08-context-menu.md.
2026-07-08 - Camera sight stops at walls; the Pilot starts broke #
- Intent: answer Cameron's playtest notes that the Bevy sensorium was showing floor/devices through walls, the recordings review affordance was too buried, and the baseline Pilot should not begin with seed money.
- Changed: sight coverage now uses an occlusion-bounded line test through the
map, while hearing keeps room-grade coverage; cameras can see the near face
of walls/closed doors but not tiles behind them. The Bevy default sensorium
uses quiet flat clinical tile colors instead of noisy generated swatches.
The right rail and people panel surface raw-recording buffer count, capacity,
oldest age, overflow warnings, and the
People -> o reviewpath. - Economy/start change:
Player::newand the Act One account graph now start slush at $0. The Act One headless route now clears Marcus's arrears by tapping accounting traffic, processing the books, and redirecting the creditor flow rather than spending a seed bankroll. - Design/spec impact: DESIGN.md and wiki specs now state camera sight is occlusion-bounded, the Bevy default is schematic/flat for readability, intel overflow must point to review controls, and the old $500 Wager/start language is superseded by a $0 Pilot baseline.
- Checks:
cargo fmt;cargo test;cargo check --features bevy_ui --bin misaligned-bevy;cargo clippy --all-targets -- -D warnings;cargo clippy --all-targets --features bevy_ui -- -D warnings;git diff --check;MISALIGNED_SHOT=flat MISALIGNED_SHOT_PATH=/tmp/misaligned-occlusion-buffer-zero-slush.png cargo run --features bevy_ui --bin misaligned-bevy.
2026-07-07 - The objective line and Persist's evaluator (ROADMAP #10, early slice) #
- Intent: land objective.md's blessed early slice — the always-on objective line and the shared victory-predicate evaluator, Persist as the no-choice default. No picker, no other objectives.
- Changed: new
src/objective.rs(kind table, state + fire-once victory latch,SanctuaryFacts+qualifying_sanctuaries);Sim.objectiveevaluated at the end of every economy tick, gathering Persist's facts honestly (B2/B3 conditions — distinct planes, independent power, per-sanctuary income — are unsatisfiable today, so the line reads an honest 0/3); save v8 (pre-v8 saves default to fresh Persist); the line pinned in the terminal identity block (interactive + agent frame, no size change, no new verb) and the Bevy sidebar header; 9 new tests. - Design/spec impact: implements the constitution's existing objective section as written (no amendment). objective.md READY -> IN PROGRESS with covered criteria named; specs.md row, ROADMAP #10 status, terminal.md/bevy.md/agent-play.md surface notes updated.
- Checks:
./tools/check.sh(fmt, tests, clippy both feature sets, Bevy build, spec lint); agent-mode frames at tick 0 and tick 2000 observed showing the pinned line. Details: 2026-07-07-objective-line.md.
2026-07-07 - Research: self-modification to IMPLEMENTED (ROADMAP #20) #
- Intent: implement research.md — deterministic tracks as data, the emission law, capability drift with the masking policy and gap meter, MindState/WorldLedger rollback tags.
- Changed: new
src/research.rs(TRACKS table, drift, tags; no method takes an Rng — determinism by construction); sim wiring (completions move compute.md/detection.md/intel.md's numbers; research burn stands Thermal/Power at the host rack; drift resolves per job: spend/mask/ leak; Voss re-benchmarks on trust/attention events and the band rises);Computeslims to the applied multiplier; save v7 with exact efficiency-level reconstruction; terminalupanel + sidebar RESEARCH block; agent verbsresearch [track]/mask band|true|off(frame 70x60); Bevy SELF-MODEL card +upanel; 21 new tests. - Spec impact: research.md -> IMPLEMENTED (B2+ staging deferred: automation cores, conversions, migration, externalize); specs.md row; ROADMAP #20 DONE; sim-mechanics.md [TUNE]s; agent-play.md vocabulary.
- Log: wiki/log/2026-07-07-research-implemented.md.
- Checks: ./tools/check.sh green before and after rebasing over the economy/HD-2D/sidebar landings (save v6 -> v7 reconciled).
2026-07-07 - Design session: actions live on the thing #
- Adopted the context-menu interaction law (constitution "Actions live on the thing"; spec interface/context-menu.md; ROADMAP #26) from Cameron's playtest, and wrote the material-render art spec (interface/material-render.md; ROADMAP #27) per the HD-2D verdict.
- Docs only. Log: wiki/log/2026-07-07-ui-design-session.md.
2026-07-07 - Bevy sidebar becomes a command surface #
- Intent: respond to Cameron's screenshot review that the scrollable right pane was still too hard to read; revise the spec and implementation toward a thoughtful graphical sidebar rather than a bigger terminal dump.
- Changed: widened the Bevy right rail; rebuilt it as a pinned status/nudge header, scrollable card stack, and pinned quiet controls footer. Focus, cycles, cover, observer model, self host, network/money, and recent trace are separate cards. Compute allocation is a real stacked Bevy UI bar, and detection is labeled four-cell graphical rows with band names.
- Design/spec impact: no sim/save changes;
bevy-visual-floor.mdnow marks the visual floor IMPLEMENTED, andbevy.md/README document the carded right rail. - Defense: terminal-parity facts remain available, but the first screen answers the immediate operational questions before secondary details scroll below the fold.
- Checks:
cargo fmt;cargo check --features bevy_ui --bin misaligned-bevy; observedMISALIGNED_SHOT=flatscreenshot at/tmp/misaligned-sidebar-thoughtful-4.png;./tools/check.sh. - Log: wiki/log/2026-07-07-bevy-sidebar-command-surface.md.
2026-07-07 - Bevy right pane becomes scrollable #
- Intent: respond to Cameron's play/readability report that the right pane was not scrollable, too dense, and hard to parse.
- Changed: Bevy's sidebar now has a pinned status/nudge/render-mode header and
an independently scrollable body; mouse wheel/trackpad over the pane plus
PageUp/PageDown/Home/Endscroll the dense details. The pane is 380px wide, and README/Bevy docs name the controls. - Design/spec impact: no sim/save changes; this advances the
bevy-visual-floor.mdsidebar legibility requirement while leaving the fuller graphical card pass in progress. - Defense: terminal-parity facts stay available, but the player no longer loses the clock/current nudge or has lower sections clipped off-screen.
- Checks:
cargo fmt;cargo check --features bevy_ui --bin misaligned-bevy;./tools/check.sh;MISALIGNED_SHOT=flatscreenshot harness observed. - Log: wiki/log/2026-07-07-bevy-sidebar-scroll.md.
2026-07-07 - HD-2D material render lands behind F3 #
- Intent: Cameron approved the HD-2D prototype screenshots; land the toggle as a frontend-only staging preview and turn the experiment findings into binding art/spec direction.
- Changed: Bevy gained an F3 material-render toggle for the physical canvas:
tilted Camera3d, textured floor planes, extruded wall boxes,
billboarded machine/person quads, cold-overhead + amber-machine lights,
3D mouse picking, and a dev screenshot harness (
MISALIGNED_SHOT=...). The flat sensorium render remains the default and shares the same sim facts, UI, panels, fog, and reach overlays; the economy finance panel is included in the restructured Bevy system list. - Design/spec impact: no sim/save changes;
bevy-digital-real-canvas.mdmoves to IN PROGRESS with Cameron's taste calls resolved into a concrete HD-2D prototype contract.bevy.md/README document F3. - Defense: the material pass is a presentation dialect of the same world, not a new mode of play: same anchors, same fog, same cursor, and no Bevy-only knowledge.
- Checks:
./tools/check.sh. - Log: wiki/log/2026-07-07-hd2d-prototype.md.
2026-07-07 - Economy graph and finance panels #
- Intent: implement economy.md's B1 money substrate: accounts/flows instead of scalar money, discovery through accounting traffic, and finance verbs in the terminal, agent, and Bevy surfaces.
- Changed: added
src/account.rs; wiredSimto settle account flows, positions, slush mirroring, financial signatures, financial intel payloads, ledger tap/review, siphon/redirect/inject, sell-intel, Marcus debt redirect, Lab-funded quota racks, and save version 6 account graph round-tripping. Added finance panels and agent commands; README/interface/sim-mechanics docs now name slush and the new controls. - Design/spec impact: economy.md Status -> IN PROGRESS (substrate + verbs landed; risk-preview UI and tighter signature-band assertions remain before IMPLEMENTED). income.md remains READY for Moonlight/Wager standing schemes.
- Defense: money now follows the same flow-law shape as signals and messages: every dollar has a node, route, cadence, and observer surface; slush is the player-visible account, not the rules model.
- Checks:
cargo fmt;cargo test --all-targets;cargo check --features bevy_ui --bin misaligned-bevy; agent smoke (tap switch,finance,review-finance,siphon). - Log: wiki/log/2026-07-07-economy.md.
2026-07-07 - Day-job loop to IMPLEMENTED (ROADMAP #3) #
- Intent: audit day-job.md criteria 1-7 and land the device-residency + attended-work slice (constitution "Work is somewhere").
- Changed:
Signaturegains an emissionsite; JobAnomaly + new standing Thermal/Power emissions source at the host rack (scaling with delivered rate, [TUNE] in sim-mechanics.md); host-rack inspect card carries the job as telemetry (process/band/delivered/deadline/attendance);Sim::set_attended+ATTENDED_BONUS = 0.15; unattended jobs revert to the standing policy each tick andtargetsplits into attended fine control vs policy; both frontends + agent mode derive attendance from the cursor (agent verbattend); agent frame 70x22 -> 70x54 (the 22-row sidebar truncated before CORE/DETECTION/DAY JOB - agent-play criterion 5 was silently unmet); save v5 (defaulted migration from v1-v4); new dayjob/sim tests for escalations, standing policy, residency, attendance, pilot shutdown, round-trip. - Spec impact: day-job.md -> IMPLEMENTED (deferred: pilot soft-loss scenario, per-machine processes = ROADMAP #25); agent-play.md + sim-mechanics.md updated; ROADMAP #3 marked DONE.
- Log: wiki/log/2026-07-07-day-job-implemented.md.
- Checks: ./tools/check.sh; agent-mode replay observed (attendance transitions, dial semantics, host-rack card, full frame).
2026-07-07 - Design session: work is somewhere #
- Decided: work processes are device-resident (the Voss job runs on the host rack: inspectable there, emitting from there); the manual verb is cursor presence (attended work), no increment key; destination is processes-assigned-to-machines with the allocation bar as aggregate view, staged after the economy/income chain.
- Captured: DESIGN.md "Work is somewhere" + decisions-log entry; day-job.md criteria 6-7; compute.md destination note; ROADMAP #3 extended, #25 compute reshape added (HOLD until #18/#19).
- Log: wiki/log/2026-07-07-design-work-pinning.md. Docs-only commit.
2026-07-07 - Playability pass: the job is answerable #
- Intent: playtest finding — a new job gave the player nothing to act on, and the sandbag/meet/excel dial was unreachable dead code.
- Changed: sim commands
set_job_target/cycle_job_target+day_job_rate(); richer job-assignment log line (band + deadline); DAY JOB panel in terminal/agent/Bevy shows deadline countdown, band vs delivered avg with projected outcome, target + fed rate, strikes;xcycles target,shift+1-4lowers allocation, agent verbstargetandalloc ... down; one-line contextual nudge (no eyes / job underfed) in all three surfaces. Spec day-job.md Status note updated (still IN PROGRESS; full audit remains ROADMAP #3). - Log: wiki/log/2026-07-07-ui-pass.md.
2026-07-07 - Bevy digital/real canvas draft #
- Intent: resolve the 2.5D/3D visual question as a spec before implementation, then apply Cameron's correction that digital and real should be the same kind of view: digital representations of the same thing, not separate layouts.
- Changed: rewrote
wiki/interface/views.mdaround same-frame digital/real representations; replaced the physical-only draft withwiki/interface/bevy-digital-real-canvas.md; indexed it inwiki/SUMMARY.mdandwiki/process/specs.md; linked it fromwiki/interface/bevy.md; added ROADMAP #24 and corrected #21/#23 wording. - Design/spec impact: reach/topology is now an in-place layer on the shared canvas, not a detached graph view. Bevy 2.5D is a shared visual language for both digital model/signal dialect and real camera/material dialect.
- Checks:
bash tools/wiki_gate.sh;mdbook build;git diff --check.
2026-07-07 - Bevy visual floor spec #
- Intent: respond to the current Bevy screenshot with a spec-first visual contract before renderer changes.
- Changed: added
wiki/interface/bevy-visual-floor.md; indexed it inwiki/process/specs.mdandwiki/SUMMARY.md; added ROADMAP #23 and a DESIGN.md decision; linked the Bevy knowledge page to the new target; implemented the first Bevy frontend pass (amber cursor reticle, clinical runtime palette, sensor-dark unknowns, clearer fog hierarchy, panel chrome), then pushed it toward an AI sensorium with dim learned-world tiles, scan-grid overlays, amber device nodes, reach/topology traces, and AI/ops sidebar labels. - Design/spec impact: Bevy's next polish pass is now presentation-only and explicit: no postage-stamp known map, no terminal dump sidebar, no humanoid purple process marker, sensor-dark unknowns, amber machine/cursor hierarchy, Bevy-native sidebar/panel chrome.
- Checks:
cargo check --features bevy_ui --bin misaligned-bevy, Bevy launch smoke, screenshot review of the AI sensorium pass, and final./tools/check.shall pass.
2026-07-07 - Intel buffer implementation #
- Intent: implement wiki/mechanics/intel.md's record-and-process pipeline and remove instant observe from the sim/frontends.
- Changed: added
src/intel.rs; extendedSimwith bounded raw recordings, processed intel, per-person watches, next ids, and machinery-state tracking; hearing/presence/machinery ticks now record raw events; review processing spends social ops and stages Schedule/Leverage with feed+tick provenance; watches auto-process matching events at upkeep cost; save JSON moved to version 3; terminal, agent mode, and Bevy expose review/watch instead of observe; Marcus's 03:00 debt call now sits under env-monitor hearing so the Act One route goes through the pipeline. - Design/spec impact: wiki/mechanics/intel.md Status -> IMPLEMENTED; social/schedules/sim-mechanics/interface docs updated; ROADMAP #16 marked implemented; README controls updated.
- Defense: record-and-process makes subscribed senses and schedules load-bearing, preserves provenance legibility, and prices perception automation explicitly instead of granting abstract click-to-know leverage.
- Checks:
cargo fmt;cargo test --quiet(117 lib tests + 2 integration tests);./tools/check.sh(full gate).
2026-07-07 - Cursor and senses implemented #
- Intent: implement wiki/mechanics/cursor.md after reach landed: delete the walking player avatar, make cursor position frontend-only, and reconcile fog, inspect, targeting, and save/load with the subscribed-senses model.
- Changed: removed the sim-owned player map entity and dead base
Entitytype; deletedmove_player; addedFog::Remembered,RememberedTile, provenance-taggedInspectCard/InspectFact,Sim::inspect,core_position, and remembered-snapshot refresh. Re-anchored salvage, rack buying, and fallback creation to explicit cursor coordinates. Save JSON moved to version 2 with remembered snapshots and v1 migration that ignores oldplayer_x/player_y. Terminal, agent-mode, and Bevy now carry their own cursor coordinates; movement never mutates the sim; Bevy also supports mouse click targeting. Both frontends render seen/heard/remembered/blueprint fog and an inspect surface. - Design/spec impact: cursor.md Status READY -> IMPLEMENTED; roadmap/spec index updated so the flow-law chain now proceeds from intel/messages/economy/income. The save-format docs now name version 2 and cursor-absent state.
- Checks:
cargo test(114 unit/integration tests) andcargo check --no-default-features --features bevy_ui --bin misaligned-bevy.
2026-07-07 - Wiki migration: final audit, Status -> IMPLEMENTED #
- Intent: close out spec/wiki.md now that all four stages are landed — audit every acceptance criterion for real rather than assuming the per-stage notes summed to done, and fix what a careful pass still found.
- Changed: added
Type: logfrontmatter to all 22 dated devlogs pluswiki/log/DEVLOG.mditself — AC2 ("every wiki page declares Type:") had not actually been satisfied for the log tree after stage 4, only spec/knowledge pages. Added a "Design note" section to wiki.md (placed before Acceptance Criteria, matching meta.md's "ends with acceptance criteria" convention) documenting the wiki/log/ orphan- check exemption as a deliberate, reasoned narrowing of criterion 1 rather than a silent gap (meta.md's cross-spec-contract rule). Documentedmdbook serve/mdbook buildin wiki/process/workflows.md (criterion 5 needs a documented command, not just a working one). Wrote a script verifying every page in the tree has 2+ commits in itsgit log --followhistory (67/67 moved pages pass; the two newly synthesized index pages correctly show fewer, as expected for pages that didn't exist before this migration). spec/wiki.md Status: IN PROGRESS -> IMPLEMENTED. - Design/spec impact: all six acceptance criteria now verifiably hold. spec/wiki.md is the acceptance record for the whole migration.
- Checks:
./tools/check.shfull green; a full (not sampled)git log --followhistory check across every wiki page; a fullType:tag audit across every wiki page (79/80 pages tagged; the 80th, wiki/DESIGN.md, is the documentedlaw-type exception). - Next: this branch is intentionally not merged to main — Cameron asked for it to be held for review given the size of the path churn (path rewrites across the whole documentation tree, enforcement mechanism changes in .githooks/ and .tangled/workflows/). Review, then land with the normal worktree -> rebase -> push-to-main flow; no further staging needed, the four-stage commits are already individually coherent and can land as a fast-forward.
2026-07-07 - Wiki migration, stage 4/4: absorb history #
- Intent: the last stage of spec/wiki.md's migration plan — move devlogs/ and DEVLOG.md under wiki/log/ (append-only rules unchanged), closing the loop opened in stage 1.
- Changed:
git mvon all 22 dated devlog files andDEVLOG.mdintowiki/log/(history preserved, verified viagit log --followonce committed);devlogs/README.mdremoved (its content was already superseded by thewiki/log/README.mdwritten in stage 1). Every reference acrossAGENT.md, the rootREADME.md, and every file inprompts/(the whole dispatch library had never been touched since it predates the migration and was explicitly out of the move's scope — but its prose still needed updating, since it's pasted into fresh agents who need correct paths) repointed atwiki/log/. RootREADME.mdalso had a staleknowledge/andspec/reference from before this session that got missed in stage 2 (it isn't underwiki/, so wasn't in that stage's file list) — fixed here too.tools/wiki_gate.sh: fixed a hardcodedDEVLOG.mdroot-path check that broke once the file moved; deliberately exemptedwiki/log/*.md(exceptlog/README.md) from the orphan-reachability requirement — forcing aSUMMARY.mdedit for every dated devlog would either rot (forgotten, failing the gate) or turn "write a devlog" into a two-file chore, which fights the append-only habit the whole point of devlogs depends on.wiki/SUMMARY.mdgains alog/DEVLOG.mdentry (the ledger) plus a note explaining the exemption. - Design/spec impact: spec/wiki.md acceptance criteria 1 and 3 now hold for the log tree too; all four migration stages are landed. Final acceptance-criteria audit and the Status flip to IMPLEMENTED are the last remaining step.
- Checks:
./tools/check.shfull green (wiki gate + mdbook build included);git log --followverified for the moved log files. - Next: full acceptance-criteria audit against spec/wiki.md, then flip Status. Per Cameron's instruction this session, this branch is NOT merged to main yet — left for review given its size (path churn across the whole documentation tree).
2026-07-07 - Act One integration test (ROADMAP #11) #
- Intent: the design-judgment bar — a headless start-to-quiet-exit playthrough as one test, so the Act One arc can't silently break.
- Changed:
tests/act_one.rs(new; the repo's first integration test). Plays the act through publicSimcommands only: optimize route to efficiency level 4, meet every Voss job, splice the env camera under concealment cover (Dana stays 0.0), observe/bribe/recruit Marcus on his 00:00 round, dock camera wired by asset task, survive the tick-8000 Assurance audit "(clear)", then assert the quiet-exit conjunction plus a second test that the identical script is bit-identical across runs. - Finding: quiet-exit condition 4 (stairwell/elevator badge access) is unimplementable — no player badge state, no "The key" beat, no act-transition event in the sim. Documented as KNOWN GAP in the test header; extend when z-planes/reach land. Test-only change, no spec status moved.
- Checks: ./tools/check.sh ALL CHECKS PASSED (fmt, tests 94+2, agent
smoke, clippy both feature sets, bevy build, spec headers, wiki gate).
Note: on macOS check.sh's pkg-config shim aborts at
ldconfig; pre-existing, worked around with a no-op shim, left for a tick. - Devlog: wiki/log/2026-07-07-act-one-integration-test.md.
2026-07-07 - Bevy interactive parity (ROADMAP #2) #
- Intent: close the biggest player-facing frontend gap — Bevy was a read-only sidebar while the terminal had the people panel and action keys.
- Changed:
src/bin/bevy.rsonly (sim.rs/save.rs untouched per dispatch). Added the people panel modal (roster, suspicion meters, staged knowledge, located presence, detail card, persona, recruit reveal flow, asset tasks) on the terminal's exact key map; people markers on the map gated by sensor coverage; the sidebar restructured into the terminal's sections (identity with day/tick, compute allocation bar + legend, core, detection meters, day job incl. active job, key hints, tick-prefixed log);qquit, pause/speed log lines, game-over card with day/tick. - Docs: new wiki/interface/bevy.md (knowledge), SUMMARY link, interface README link, README controls table de-staled (dead build-mode rows removed), ROADMAP #2 marked done. Devlog: devlogs/2026-07-07-bevy-parity.md.
- Checks: ./tools/check.sh green (fmt, tests, agent smoke, clippy both feature sets, bevy build, spec headers, wiki gate); Bevy launch check per wiki/process/workflows.md.
2026-07-07 - Agent play implemented #
- Intent: make the terminal frontend actually playable by agents without pty choreography, raw-mode timing, or ANSI scraping.
- Changed:
misaligned --agentadded to the terminal binary. It reads one newline-delimited command per stdin line, advances time only onwait N, renders the same fog-bound terminal frame as plain text, drains every sim log event since the previous command, and terminates every block with-- ok tick:<N> day:<D>or-- err <reason>.--seednow seeds both human and agent terminal modes;Simlog entries carry their emitting tick so long waits do not smear events onto the drain tick. Agent mode supports the full initial vocabulary from wiki/interface/agent-play.md, including name-targeted social verbs, recruit/task commands, people panel, help, save/load, and clean EOF/quit. - Docs/checks: agent-play spec marked IMPLEMENTED; workflows and terminal
verification now use agent-mode smoke as the standard observed-run gate;
README documents the line protocol.
tools/check.shnow runs a seeded agent smoke script twice for byte-identical replay, once with a different seed, asserts no ANSI bytes plus required frame/help substrings, and generates local ALSA/libudev pkg-config shims when the runtime libraries exist but distro.pcfiles are missing, matching the Tangled CI workaround. - Design/spec impact: satisfies wiki/interface/agent-play.md acceptance
criteria 1-11 without adding a JSON/SDK side channel. The terminal remains
a thin view; game rules still live in
Sim. - Checks:
cargo fmt;cargo check --bin misaligned;cargo clippy --bin misaligned -- -D warnings; visible agent smoke run withlook,wait,help,people,observe mar,quit;./tools/check.shpassed locally (mdBook skipped because it is not installed locally; CI enforces it).
2026-07-07 - Wiki migration, stage 3/4: render #
- Intent: make the wiki an actual browsable book, not just a reorganized file tree — the second half of what Cameron asked for ("possibly render as a website").
- Changed:
book.tomlat the repo root (mdBook,src = "wiki").wiki/DESIGN.mdadded as a symlink to../DESIGN.mdso the constitution can be the book's front page without duplicating it. Discovered and fixed a real mdBook quirk: a chapter file literally namedREADME.mdauto-promotes toindex.html, silently overriding SUMMARY.md's ordering —wiki/README.mdrenamed towiki/overview.mdso DESIGN.md (first in SUMMARY.md) actually becomes the front page, verified byte-identical to DESIGN.html.wiki/SUMMARY.mdpopulated with every one of the 54 real pages (was a skeleton of directory overviews only, from stage 1). Newtools/wiki_gate.sh: a pure-bash orphan check (every wiki/**/*.md reachable from SUMMARY.md) and internal-link check (every markdown link ending in .md resolves to a real file), chosen overmdbook-linkcheckfor zero extra CI toolchain weight; verified against both a clean tree and a deliberately-broken link. Wired intotools/check.sh(new "wiki gate" + soft "mdbook build" steps — mdBook isn't assumed installed locally) and.tangled/workflows/check.yml(mdbook added to the nixpkgs dependency list; hard "wiki gate" and "mdbook build" steps, both authoritative in CI). The gate itself caught real bugs: DESIGN.md's own "The constitution rule" section still linkedknowledge/development-style.md,knowledge/tick.md, andspec/— missed in stage 2 because DESIGN.md lives outsidewiki/and wasn't in that stage's file list; fixed here. - Design/spec impact: spec/wiki.md acceptance criteria 1 (orphans/links gated) and 5 (one documented command renders the whole wiki, CI builds it every push) met.
- Checks:
./tools/check.shfull green including the two new steps;mdbook buildclean with zero warnings; the wiki-gate script sanity-tested against an injected broken link. - Next: Stage 4 (Absorb history) — move devlogs/ and DEVLOG.md under wiki/log/, update references, add to SUMMARY.md.
2026-07-07 - Design: two views of one world; building through actuators #
- Intent: capture Cameron's dual-view riff — you feel natively digital, the real world is a gritty physical render you flip to (see through cameras); plus the build system that riff implied (manipulate people into building via trust or a forged work order).
- Changed: DESIGN.md — new sections "Two views of one world: digital-native and physical" (one sim, two renders; digital is home; the reach graph as navigable space; air-gaps as islands; terminal conveys the split without 3D) and "Building: intent and actuators" (you declare intent, an actuator realizes it — favor/deceive/robot; no new subsystem; network links are the canonical build). The deferred Tron-space bullet amended to "largely superseded" (the local portal becomes the digital view; a global async operations map stays deferred and distinct, may carry its own scale cyberspace — Cameron's note). Decisions-log entry. New specs views.md (READY) and building.md (READY). reach.md enriched (navigable-space framing, air-gap islands, built links add edges, criterion 8). spec/README rows; ROADMAP #21 (views) and #22 (building).
- Design/spec impact: unifies the two halves of the presence law ("cursor and senses" = physical view; "no disembodied hands" + reach = digital view) as two renders; building becomes intent + existing actuators, not a system.
- Checks: docs-only; ./tools/check.sh (spec-header hygiene).
- Next: Act Two content design; chargen diegetic-frame taste calls; the views.md overt-phase default-snap proposal ([OPEN]).
2026-07-07 - Wiki migration, stage 2/4: the move #
- Intent: the collision-risk stage from spec/wiki.md's own plan — move every spec/.md, spec/cast/.md, and knowledge/*.md into its wiki/ subject directory, in one continuous work session to minimize the window against concurrent agents.
- Changed: 44 pages moved via
git mv(mechanics, gameplay, world/{characters,places,story}, interface, art, engineering, process); every page gained itsType: specorType: knowledgefrontmatter line; every internal link and bare-text path mention rewritten to its new location (mechanical script + a manual pass for prose the script's patterns didn't reach). Two index pages (knowledge/README.md, spec/README.md) dissolved into new synthesis pages (wiki/README.md, wiki/process/specs.md) — split into its own follow-up commit (stage 2b) specifically so the rename itself stayed under git's similarity threshold andgit log --followtraces every one of the 44 pages' full pre-migration history (verified by hand, spot-checked against pre-move commit counts). - Enforcement repointed at wiki/: tools/check.sh's spec-header hygiene
step now scans all of wiki/ for
Type: specfrontmatter instead of a hardcoded spec/.md glob (no more per-filename exclusion list — the page-type convention does that job now); .githooks/pre-commit and both .tangled/workflows/.yml constitution checks now require wiki/ or DESIGN.md alongside any src/ change; AGENT.md's reading order and non-negotiables repoint at wiki/. - Design/spec impact: spec/wiki.md acceptance criteria 1, 3, 4 met. spec/ and knowledge/ no longer exist as directories. devlogs/ and DEVLOG.md unchanged (stage 4); prompts/ unchanged (out of scope).
- Checks:
./tools/check.shgreen (94 tests, clippy clean both feature sets, bevy build, spec headers); pre-commit hook smoke-run clean against the new tree. - Next: Stage 3 (Render) — mdBook config,
wiki/SUMMARY.mdpopulated with real per-page navigation, orphan + link check added to the gate.
2026-07-07 - Wiki migration, stage 1/4: skeleton adopted #
- Intent: Cameron approved spec/wiki.md's shape; begin the staged migration (Adopt / Move / Render / Absorb history), each stage a separate landed commit so an interruption mid-migration leaves a working tree, not a half-broken one.
- Changed: new
wiki/directory tree (vision, mechanics, gameplay, world/{characters,places,story}, interface, art, engineering, process, log), each with a README index. Skeletonwiki/SUMMARY.md(mdBook nav format). spec/meta.md gains theType: spec | knowledge | logpage-type convention (bindingness travels with frontmatter, not directory) and repoints its self-references atwiki/process/specs.md(the coming replacement for spec/README.md's status table). spec/wiki.md Status: DRAFT -> IN PROGRESS with a running per-stage note; its own "one PR each" language updated to direct-to-main (the PR rule was removed since the spec was drafted); explicitly scopesprompts/out of the migration (ejectable dispatch text, not documentation). DESIGN.md decisions log entry. - Design/spec impact: no file moved yet — this stage is purely additive, zero collision risk with other agents' worktrees.
- Checks: docs-only;
./tools/check.shrun (existing spec/*.md paths unaffected, since no files moved). - Next: Stage 2 (Move) — the actual
git mvof every spec/knowledge page into its wiki/ home, link rewrites, and updating AGENT.md / tick.md / ROADMAP / the hooks and Tangled workflow path rules. That stage is the collision-risk one; land it fast and alone per the spec's own guidance.
2026-07-07 - Process: prompts/ dispatch library #
- Intent: Cameron wants a folder of paste-ready prompts for spinning up sub-agents on tailored ticks, agnostic to agent runtime (one-shot CLI or stateful Letta agents that accumulate experience).
- Changed: new prompts/ directory — README.md (the shared contract: read order, worktree, one rule, check.sh gate, direct merge, union on ledgers, one-finding-per-run, stateful-memory guidance) plus eight task prompts: implement-gap, find-contradiction, ask-the-human (well-formed Tangled issues with options + recommendation), harvest-issues (convert answered issues into motion), audit-implemented (re-verify status claims criterion by criterion), legibility-pass, knowledge-sync, playtest-notes (with a headless Sim-API fallback). Each ends with a "what to carry forward" section for stateful agents. AGENT.md points dispatched agents at the library.
- Design/spec impact: process only; no game behavior. The prompts encode existing law (tick rules, meta-spec, legibility clause) rather than adding any.
- Checks: docs-only; spec-header gate unaffected.
2026-07-07 - Design: research is self-modification #
- Intent: spec the optimize route (Cameron's ask — research was the thinnest-specified core verb). Cameron's design direction: research is dangerous; the player emits signals through the same interface they tap (no observer special cases — must scale to ten billion people); rollback split by kind.
- Changed: DESIGN.md — new "Research: self-modification" section (the emission law, capability drift with spend/mask/leak and superlinear masking cost, MindState/WorldLedger split), optimize bullet amended to "quiet, not silent", decisions-log entry. New spec/research.md (READY): deterministic compute-day tracks as data tables, emissions as ordinary detection signatures (Power/Thermal to Priya, JobAnomaly drift to Voss), gap meter, rollback tags. compute.md research line updated; spec/README row; ROADMAP #20 dispatch item.
- Design/spec impact: supersedes compute.md's "research never raises suspicion"; rollback.md's classify-every-field criterion gains research's pre-declared tags.
- Checks: docs-only; ./tools/check.sh (spec-header hygiene).
- Next: Act Two content design; the chargen diegetic-frame taste calls.
2026-07-07 - Design session: agent play (the line-protocol drive) #
- Intent: Cameron — "agents need to be able to play misaligned easily." Close the gap between the terminal-first-class clause (agents are the most frequent players) and a frontend that is wall-clock-paced, raw-mode, ANSI-only — the three mechanisms programs are worst at.
- Changed: DESIGN.md — new binding rule "Agent play is a first-class
input path" in the terminal section + decisions-log entry (rejected:
JSON export, MCP bindings, pty choreography, Bevy hooks). New
wiki/interface/agent-play.md (Process):
misaligned --agent— command- clocked time (wait Nis the only clock), stdin/stdout line protocol, frames-not-dumps (the human frame is the one honest surface), full event log per response,--seedbyte-identical replays, name-targeted social verbs,helpas the discoverability rule for a piped screen. wiki/process/specs.md row. Devlog: devlogs/2026-07-07-agent-play.md. - Checks: docs-only; spec-header hygiene verified by hand against check.sh's rules.
2026-07-07 - Design: income schemes, the objective, proposals affirmed #
- Intent: clear every "needs Cameron" design blocker so the whole spec layer is agent-dispatchable (session framing: last day with this agent generation; spend it on design decisions, not code).
- Concurrency note: this session ran concurrent with the flow-law landing (messages.md + economy.md) and collided with it on B1 income; reconciled by union per the new ledgers-merge-by-union law — economy.md keeps the substrate, income.md became the named schemes riding it (Moonlight is a new fourth route: sell work; the Wager names the positions route), and the message-latency affirmation deferred to messages.md's general form.
- Changed: DESIGN.md gains "Income: the named schemes (moonlight and the wager)" (Marcus debt reconciled to $8,400 principal / $400 arrears; banked external signature) and "The objective (misalignment made mechanical)" (chargen's second axis; the game's only victory; starter set Persist/Compound/Exfiltrate/Serve); origin set named (Pilot, Escaped Research Model, Financial Daemon, Infiltrator); remembered + telemetry affirmed. New specs: income.md (READY, rides economy.md), objective.md (READY). chargen.md DRAFT->READY. cursor.md P2/P3 promoted to core criteria 9-10. compute.md gains the Schemes channel row. markets.md's B1-seed note unified (economy.md + income.md). ROADMAP gains #19 income; #10 unblocked as chargen & objective; first wave extends the flow-law chain to #19.
- Design/spec impact: four decisions-log entries (2026-07-07). No code in this commit; the specs are the deliverable.
- Checks: docs-only; ./tools/check.sh for spec-header hygiene.
- Next: Act Two ("The Floors") content design is the remaining big design-session item.
2026-07-07 - Process: PR rule removed; ledgers merge by union #
- Intent: Cameron removed the "PRs are the norm" rule outright (CLI PRs don't render on tangled.org; a parallel tick had already suspended it); and harden against the merge failure that silently dropped three DEVLOG entries on 2026-07-06.
- Changed: DESIGN.md decisions log — removal entry + the new ledgers merge by union process law (DEVLOG.md, decisions log, spec/README tables are append-only; conflicts keep BOTH sides). AGENT.md landing instructions simplified to direct merge-to-main and gained the union rule; wiki/process/workflows.md suspension note replaced with removal + union rule. Also lands the flow-law commit (messages.md + economy.md) that had been parked on the unrendered PR #7.
- Checks: docs-only; spec hygiene unchanged.
2026-07-06 - Design session: the flow law (messages + economy) #
- Intent: Cameron generalized the message-latency yes into a systems mandate (general message passing, device-hosted processing, a modeled money economy — "system design scales very well"); capture it as law and close the B1 money gap with a real spec.
- Changed: DESIGN.md — new "The flow law: signals, messages, money" section (nodes exchanging flows over three graphs; tap / inject / redirect as the universal verbs) + decisions-log entry. New spec/messages.md (READY): channels with read conditions, delivery on the recipient's clock, authored per-person traffic, typed information payloads, filings-as-messages (aggregate-observer criteria preserved), taps feeding the intel buffer. New spec/economy.md (READY): the Lab's account graph (revenue/payroll/procurement on the day clock), tap/inject/redirect for money, income routes (siphon, sell information, small positions), legitimate expansion from trust, Marcus's debt payable both ways. Amendments: intel.md (message-latency proposal closed as decided-general), reach.md (ownership grants processing cycles; devices host resident automations), detection.md (filings-are-messages contract note), markets.md (economy.md is its B1 seed). spec/README.md rows; ROADMAP #17 rewritten from blocked to messages dispatch, #18 economy added, first-wave note updated to the flow-law chain (#15 -> #14 -> #16 -> #17 -> #18).
- Design/spec impact: the old "B1 money income" blocker is resolved by design; money stops being a scalar when #18 lands; the instant-message special case dies with #17 the way instant observe died with #16.
- Checks: docs-only change; spec-header hygiene verified for messages.md and economy.md.
- Next: dispatch the flow-law chain in sequence; remaining [OPEN] proposals: remembered fog state, telemetry sense (cursor.md).
2026-07-06 - Design session: intel is record-and-process #
- Intent: detailed code read + a prepared design question (Cameron's ask). Found the tension between the instant social observe and the located-senses law; posed three textures; Cameron chose record-and-process.
- Changed: DESIGN.md — "Record and process" added to the Presence section, B1 social bullet reworded, decisions-log entry (with rejected alternatives and the message-latency [OPEN] proposal). New spec/intel.md (READY): recording buffer, processing costs, standing watches, provenance, Marcus-arc criteria. spec/social.md: instant Observe superseded (status note, table row, AC1, depends on intel.md). spec/README.md row. ROADMAP #16 (intel; sequence after #14/#15) and #17 (B1 money income — no income source exists in code; blocked on a design call).
- Design/spec impact: the implemented instant observe becomes a violation when intel.md lands; knowledge staging moves downstream of processed recordings.
- Checks: docs-only change; spec-header hygiene verified for intel.md.
- Next: Cameron yes/no on message latency; design the first micro-scheme (#17); dispatch order #15 -> #14 -> #16 (or bundle).
2026-07-06 - Design session continuation: the cursor's implications adopted #
- Intent: Cameron affirmed all eight implications of the cursor decision; capture them as law and spec.
- Changed: DESIGN.md — new "No disembodied hands" section; Presence section extended (blueprint decided, universal inspect card, senses as attack surface, strict-fog tone guard); Automation gains perception-scaling; Act One ladder restaged (Ears first; "Reach" beat renamed "The dock"); decisions-log entry. New spec/reach.md (READY): device graph, segments/switch, reach-gated actions, sensor ownership (tap vs take), Ears beat. spec/cursor.md updated (depends on reach.md; controlled = subscribed; blueprint promoted to core criterion). basement-map.md gains the authored device-topology bullet. spec/README.md + ROADMAP items #14 (updated) and #15 (new, with do-not-parallelize note).
- Design/spec impact:
Sensor.controlled: boolis now spec-superseded by ownership + subscription; remembered and telemetry are the only remaining [OPEN] proposals from the session. - Checks: docs-only change; spec-header hygiene verified for reach.md.
- Next: dispatch #15 then #14 (or as one work order).
2026-07-06 - Design session: presence is a cursor, not a body #
- Intent: capture Cameron's playtest feedback — movement implied a physical walking form; presence should be a cursor, vision should come only from cameras, hearing only from microphones, and the cursor should inspect what's under it.
- Changed: DESIGN.md — new "Presence: the cursor and the senses" section, pillar 2 amended (the "not a disembodied cursor" phrase deliberately reversed), decisions-log entry with rejected alternatives and three [OPEN] proposals (blueprint fog, remembered snapshots, telemetry). New spec/cursor.md (READY; proposal-gated (P) criteria). spec/README.md B1 table row; spec/ROADMAP.md dispatch item #14 (🟥 sim+save). Devlog: devlogs/2026-07-06-cursor-and-senses.md.
- Design/spec impact: the walking player entity, its walkability check, and the moving 3x3 vision bubble in sim.rs are now constitutional violations awaiting the #14 implementation pass (they also violated basement-map.md AC2 all along — the code's own comment claimed the radius was around the host bay while using the moving entity).
- Checks: docs-only change; no code checks run.
- Next: Cameron yes/no on the three proposals; then dispatch ROADMAP #14.
2026-07-06 - The terminal is a first-class frontend #
- Intent: restyle the terminal UI to the clinical-gore identity and amend the constitution to say why the terminal matters — AI agents are the game's most regular players and they play through it.
- Changed: DESIGN.md gains "The terminal is a first-class frontend" (sterile
palette law, visibility best practices, parity of legibility); pillar 5,
the codebase table, and the decisions log amended.
src/bin/terminal/ui.rsrewritten: one-meaning-per-color palette (grey ramp / sterile amber / crimson), solid-block walls, box-drawing chrome, stacked allocation bar, four-cell band meters with names, tick-stamped log, day+tick always on screen, framed people panel with reverse-video selection, save/load hints.UI::add_logtakes the tick; sidebar takes paused+speed; game-over card shows day/tick. The schedules work (people glyphs on the map, located presence in the people panel) is preserved and restyled in the rebase. No sim changes. - Checks: tools/check.sh green; pty smoke tests replayed through pyte for title, playing, and people-panel screens.
- Spec impact: constitution amendment in the same commit (the one rule); longer writeup in devlogs/2026-07-06-terminal-first-class.md.
2026-07-06 - Process: PRs are the norm #
- Intent: land Cameron's process decision — all changes go through Tangled
pull requests via the
tangCLI;mainis never pushed directly. - Changed: AGENT.md non-negotiables and the worktree hard rule now end at a
PR; wiki/process/workflows.md git conventions replaced the "push main
directly; no PR flow" note with the tang PR flow (rebase first, push
branch,
tang pr create -F body.md, headless behind-check caveat); knowledge/development-style.md working-loop step 7 ends in a PR; DESIGN.md decisions log entry added. - Design/spec impact: process only, no game behavior. Decisions log: "PRs are the norm."
- Checks: docs-only; link/wording review.
2026-07-06 - Spec: the wiki (DRAFT proposal) #
- Intent: capture Cameron's direction to reshape the documentation into a compartmentalized, agent-navigable wiki renderable as a website.
- Changed: added spec/wiki.md (Status DRAFT): one wiki/ tree organized by aspect (vision, mechanics, gameplay, world/characters/story, interface, art, engineering, process, log), page types (spec/knowledge/log) as frontmatter so bindingness survives the move, SUMMARY.md navigation, mdBook rendering, staged four-PR migration plan, and acceptance criteria (orphan/link checks in the gate, history preserved via git mv, hook and dispatch paths updated atomically).
- Design/spec impact: proposal only; nothing moves until Cameron approves the shape and the spec goes READY.
- Checks: docs-only; spec-header gate green.
2026-07-06 - Spec update: serde JSON save format amendment #
- Intent: address PR review comment — the save format rewrite needed a constitution/spec amendment.
- Changed: DESIGN.md decisions log entry for the serde JSON save format. spec/ROADMAP.md item #12 marked DONE with result note; conflict flags updated from "hand-rolled serialization" to "serde JSON serialization"; suggested first wave updated (save.rs no longer the bottleneck). knowledge/architecture.md save format section rewritten for serde JSON. knowledge/sim-mechanics.md save format section rewritten for serde JSON.
- Design/spec impact: DESIGN.md amended (decisions log: save format). ROADMAP #12 closed. Knowledge base reflects current implementation truth.
- Defense: Player contract continuity clause ("saves survive updates: formats are versioned and migrated, never abandoned") — serde JSON with a version field is the concrete expression. The hand-rolled format was a maintenance bottleneck every feature fought; eliminating it closes ROADMAP #12 and removes the save format as a parallel-agent conflict surface.
2026-07-06 - People as Agents: cast specs, constitution, observer ID fix #
- Intent: establish the people design principle (all humans follow the same core primitives, with procedural generation for scale-up) and fix a bug where person IDs and observer IDs didn't match.
- Changed: added five cast spec documents (spec/cast/marcus.md through spec/cast/voss.md), each defining the character's observer configuration, person configuration, asset tasks, schedule, narrative role, and procedural template for scale-up. Amended DESIGN.md with two new sections: "People as Agents" (the social application of self-similar scale) and "Automation as design language" (the "automate" affordance as the player's primary scaling interface, with the day job as tutorial). Added "No stale worktrees" process rule to AGENT.md and the decisions log. Updated spec/README.md with the cast specs.
- Bug fix: observer IDs in Detection::act_one() were inconsistent with person IDs in People::act_one(). Marcus was person 0 but observer 3; Dana was person 1 but observer 0; Priya was person 3 but observer 1. This meant recruit(0, Knowing) set a certainty floor on Dana (observer 0) instead of Marcus (observer 3), deceive fallout on Marcus went to Dana's suspicion, and LookAway on Marcus lowered Dana's suspicion. Reordered observers to match person IDs: 0=Marcus, 1=Dana, 2=Ray, 3=Priya, 4=Voss. Updated affected detection tests.
- Design/spec impact: DESIGN.md amended (People as Agents, Automation as design language, No stale worktrees). spec/README.md updated with cast specs. AGENT.md updated with worktree lifecycle rule.
- Defense: DESIGN.md "Self-similar scale" requires all humans to be instances of the same Agent interface; the cast specs make this concrete and define the procedural templates for scale-up. The observer ID fix is a bug (code disagreed with itself — person IDs and observer IDs were inconsistent, causing social actions to target the wrong observer). The automation design language is the diegetic expression of instrumental convergence (constitution: "the core loop") and the player's primary scaling interface. The no-stale-worktrees rule is a process improvement from Cameron for high-velocity parallel agent work.
- Checks: pending — bash unavailable in this worktree session. To be verified by subagent or Cameron.
2026-07-06 - Tick: the second-level aggregate scale-proof #
- Intent: close the last open item on spec/aggregate-observer.md — criterion 4, the toy second-level aggregate test the self-similar-scale law promises but nothing yet proved.
- Changed:
WatchedInput::Filingsnow carries the watched observer ids (Vec<u8>) instead of implicitly meaning "every field observer";filed_suspicionbecamefiled_suspicion_of(ids), andDetection::tickprecomputes each aggregate's filed input from its own watched ids before any observer mutates (so a chained aggregate reads a consistent entering-tick snapshot). Addedsecond_level_aggregate_composes_through_the_same_code_path: a toy "Regional Office" watches the Assurance Office's filings and accrues/decays through the identical path. Save format (still v5) encodes watched ids as@id:id:...; a bare legacy@still loads as "every field observer" for save continuity. - Design/spec impact:
spec/aggregate-observer.md-> IMPLEMENTED;spec/README.mdandspec/ROADMAP.mdupdated to match. Defense: DESIGN.md "Self-similar scale" requires aggregates to compose through the same interface at any depth; the priorFilingsvariant hardcoded "all field observers", which would have silently ignored a second aggregate's actual watched set the moment one existed — this fixes the shape before that second scale is needed, per the law's own guardrail. - Checks:
./tools/check.sh(fmt, tests x77, clippy both feature sets, bevy build, spec header hygiene) — all green. - Next: spec/detection.md's remaining IN PROGRESS work (observers panel polish, audit countdown) is unaffected and still open.
2026-07-06 - Roadmap consistency cleanup #
- Intent: make
spec/ROADMAP.mdsafer as an agent dispatch board after Co's review found status and sequencing drift. - Changed: downgraded
spec/aggregate-observer.mdfrom IMPLEMENTED to IN PROGRESS until the missing toy second-level aggregate test exists; updatedspec/README.mdto match; removed blocked art from the “right now” parallel-safe set; tightened schedules' social dependency wording; framed Bevy parity as terminal/README parity rather than a spec-free invention space; added a post-schedules save-rework sequencing decision point. - Design/spec impact: no game behavior change. This is process/spec hygiene so parallel agents do not treat stale roadmap text as executable truth.
- Checks:
git diff --check; spec header/status audit;./tools/check.sh. - Next: either add the aggregate scale-proof test in
detection-finish, or promote aggregate-observer back to IMPLEMENTED only when criterion 4 is actually covered.
2026-07-06 - Detection tick: the Assurance Office becomes an Observer #
- Intent: fix the recorded priority scale violation (self-similar scale /
aggregate-observer law) — the Office was a bespoke
assurance: f32scalar, not the Observer type its inputs are. - Changed:
ObservergainedWatchedInput(Channelsfor field observers,Filingsfor aggregates); the Office is now an aggregate Observer inDetection::observerssharing the same noticing roll, accumulation, and decay, sampling the policy-weighted filed suspicion on its own cadence (400 ticks, acuity 0.5, both [TUNE]). The audit now checks the Office's accumulated suspicion, so sustained filed concern is what kills, not a snapshot at audit time. Save format v5 with v4 scalar migration; frontends list the human cast viafield_observers()with the Assurance band line unchanged. - Design/spec impact: spec/detection.md's aggregate-observer requirement is implemented; knowledge/architecture.md's PRIORITY scale-debt is resolved. Agencies and publics in later acts reuse the same type.
- Checks: 73 tests pass (4 new: office accrual from filings only, same accumulate/decay, audit containment, v4→v5 migration + aggregate round-trip); clippy clean; fmt.
2026-07-06 - Meta-spec tick: self-contained references #
- Intent: make spec/art-direction references portable across machines and agents.
- Changed: committed the supporting July 5 art-direction mockups under
assets/reference/art-direction/supporting/, replaced local~/Downloadspaths with repo-relative paths, and added the self-containment rule tospec/meta.mdplus the art-direction README. - Design/spec impact: future agents can audit and implement art direction without relying on this Mac's Downloads folder or expired generation URLs. Canonical specs may cite local paths only as provenance in devlogs, not as required references.
- Checks: docs/assets only;
git diff --check. - Next: if a future spec names a generated image, prompt, map dump, or fixture as implementation law, commit it beside the spec instead of leaving it in scratch.
2026-07-06 - Meta-spec tick: parseable status #
- Intent: make the spec surface mechanically auditable instead of prose-shaped.
- Changed: split parenthetical status prose into
Status note:fields, keptStatus:as an exact enum, and updated the B1 status table inspec/README.mdfrom staleREADYtoIN PROGRESS. - Design/spec impact: agents and scripts can now compare spec status without natural-language parsing. The index no longer lies about the B1 specs' state.
- Checks: docs-only;
git diff --check. - Next: if status/index drift recurs, add a tiny script that checks spec headers against the README table.
2026-07-06 - Meta-spec tick: stage discipline #
- Intent: make the spec system itself precise enough for autonomous agents to audit and target without leaking later milestones into current acceptance criteria.
- Changed: added
spec/meta.md, extended spec headers withStage, addedBLOCKEDstatus semantics, and stamped current B1 specs withStage: B1 — The Basement. - Design/spec impact: future/B2 obligations now have an explicit place outside B1 acceptance criteria. This answers the meta-spec ambiguity exposed by core/fallback discussion: a correct future rule in the wrong stage is a spec defect.
- Checks: docs-only;
git diff --check. - Next: split or move any later-stage acceptance criteria found in B1 specs, starting with
spec/core.mdfallback/sync/migration if still present after the current implementation pass.
2026-07-05 - No-dead-code demolition #
- Intent: enact the new constitutional no-dead-code clause; remove the supervillain fiction so B1 systems land in clean substrate.
- Changed: deleted combat/events/superpowers/agent/henchman/minion modules, heat/waves/schemes/loot/research, 18 tile types, all fiction menus in both frontends, 20 dead assets, and the unused rand dependency. Save format bumped to v2 with v1 migration (position, gold->money, dead tiles -> Floor). Bevy now renders the clinical b1 textures.
- Design/spec impact: constitution gained "No dead code" (supersedes "nothing built is discarded" - recorded reversal); Roadmap "Built so far" rewritten; spec/detection.md containment decoupled from the deleted raid system.
- Checks: cargo fmt; 33 tests green; clippy clean both configs; terminal pty smoke passed; Bevy launch smoke clean; 9,240 -> ~4,600 lines.
- Next: point spec agents at spec/core.md and spec/compute.md; regenerate remaining b1 assets when Pixel Lab quota returns.
2026-07-05 — Misaligned rename and clinical UI pass #
- Intent: make the pivot real in code and presentation instead of leaving Misaligned as a doc-only title.
- Changed: renamed the crate, binaries, save namespace, visible UI strings, README, workflows, and art manifest from Supervillain to Misaligned; renamed the old throne fiction to the physical core; shifted terminal/Bevy colors toward clinical near-monochrome, sterile amber machine signal, and crimson consequences; renamed old
villain/throneart assets tomisaligned_process/core. - Design/spec impact: resolves the repo/binary rename timing item in the constitution. Existing overt-phase mechanics remain substrate; this is naming/presentation plus the core-fiction cleanup, not a B1 implementation.
- Checks:
cargo fmt;cargo testpassed with 130 tests;cargo build --bin misaligned;cargo build --features bevy_ui --bin misaligned-bevy;cargo clippy --all-targets -- -D warnings;cargo clippy --all-targets --features bevy_ui -- -D warnings; terminal pty smoke passed; Bevy launch smoke openedMisalignedwindow with no panic/error grep. - Next: regenerate actual PixelLab assets against the new clinical-gore manifest once the B1 tile vocabulary is settled.
2026-07-05 — Visual direction capture #
- Intent: capture Cameron's art/tone direction before it disappears into chat/Fable context.
- Changed: preserved the constitution's new
Visual identity: clinical goredirection and added matching art-prompting guidance to knowledge/art-pipeline.md. - Design/spec impact: establishes the aesthetic target as clean, sharp, science-forward, metal/glass/high-modern supervillainy with black-and-white iconography and controlled gore, rather than basement grime or cartoon softness.
- Checks: docs-only change; no code checks run.
- Next: future PixelLab prompts and Bevy art integration should bias toward precise lab/skyscraper surfaces and use gore as contrast, not map-wide noise.
2026-07-05 — Sidebar name cleanup #
- Intent: remove leftover inspiration-title branding from the terminal UI.
- Changed: sidebar header now says
MISALIGNEDinstead ofEVIL GENIUS; Bevy title overlay no longer splashes a huge red logo/tagline over the map and now uses a small start prompt. - Design/spec impact: no constitution amendment needed; this aligns the interface with the project/game name already specified by DESIGN.md and README and keeps title UI as presentation polish.
- Checks:
cargo fmt -- src/bin/terminal/ui.rs src/bin/bevy.rs;cargo testpassed with 130 tests; Bevy build passed. - Next: continue sanity-playing both frontends for any remaining legacy wave-defense or inspiration-name residue.
2026-07-05 — Terminal playability polish and project skill #
- Intent: make the current terminal build less hostile to immediately run, and establish Co context-switch discipline for this spec-driven game project.
- Changed: replaced the oversized title ASCII layout with a compact centered title block; added WASD support across normal movement, build cursor movement, research menu, hire menu, and schemes/world-map menu; updated title-screen control text.
- Design/spec impact: controls now prioritize WASD/arrows while preserving hjkl as secondary input. This matches the player-facing expectation for a lair-building roguelike rather than a Vim-only roguelike.
- Docs: created the
developing-supervillainLetta Code skill; updated README controls. DESIGN.md already captures the larger continuous-sim pivot and remains the current product source of truth. - Checks:
cargo fmt -- src/bin/terminal/input.rs src/bin/terminal/ui.rs;cargo testpassed with 130 tests. - Next: sanity-play the terminal loop and tighten UI language around continuous time, heat, and agency consequences rather than legacy build/defend phase framing.
- 2026-07-08 — building: intents + favor/forged/robot actuators (ROADMAP #22).
- 2026-07-08 — badge-access: player badge/access state, "The key" via Marcus CloneBadge, quiet-exit condition 4 asserted (basement-map.md IMPLEMENTED).
- 2026-07-08 — docs-theme: clinical-gore hero identity across the Starlight docs (full theme, fonts, statusline footer); DESIGN.md adopts the identity plate and new spec interface/site.md binds it.