diff --git a/AGENT.md b/AGENT.md --- a/AGENT.md +++ b/AGENT.md @@ -92,15 +92,17 @@ visible under `.agents/runs/` (gitignored). - The local hook and Tangled pipeline reject a `src/` change without a changed `Type: law` or `Type: spec` page under `wiki/`. -- Update knowledge made stale, add a dated session log, and add a DEVLOG entry. - Design changes also append the current dated volume indexed by - [wiki/log/decisions.md](wiki/log/decisions.md), - but the current law/spec page—not the log—owns the decision. +- Update knowledge made stale and add a uniquely named session log + (`wiki/log/YYYY-MM-DD-topic.md`). Then run `tools/ledger_index.sh` to + regenerate `wiki/log/DEVLOG.md` and `wiki/process/specs.md` — do **not** + hand-edit those generated indexes. Design changes also append the current + dated volume under [wiki/log/decisions.md](wiki/log/decisions.md), but the + current law/spec page—not the log—owns the decision. - Use explicit `git add` paths, never `git add -A`. No emoji and no AI attribution in commits. -- Ledger files merge by union: `wiki/log/DEVLOG.md`, - dated volumes under `wiki/log/decisions/`, and `wiki/process/specs.md` keep - both sides' entries in a conflict. +- Ledger files: dated `wiki/log/decisions/*.md` volumes still merge by union. + `DEVLOG.md` and `specs.md` are generated — resolve by re-running + `tools/ledger_index.sh` after both sides' session logs / spec pages exist. - Never use `git reset`, `git checkout --`, or `git stash` in the shared checkout. - Run at most one sim+save-heavy work order at a time; isolated frontend, diff --git a/prompts/README.md b/prompts/README.md --- a/prompts/README.md +++ b/prompts/README.md @@ -42,8 +42,9 @@ dated `wiki/log/decisions/*.md` volumes, or `wiki/process/specs.md` tables are resolved by keeping BOTH sides' entries — never take your side wholesale. -7. **Close the loop.** `wiki/log/DEVLOG.md` ledger entry (and a - `wiki/log/` file for a meaningful session); update any `Type: +7. **Close the loop.** Write a uniquely named `wiki/log/YYYY-MM-DD-topic.md` + session log; run `tools/ledger_index.sh` (regenerates DEVLOG.md and + specs.md — do not hand-edit those indexes); update any `Type: knowledge` wiki page your change made stale. 8. **House style:** no emoji, no AI attribution in commits, stage files explicitly (never `git add -A`), ASCII only in anything that could diff --git a/prompts/implement-gap.md b/prompts/implement-gap.md --- a/prompts/implement-gap.md +++ b/prompts/implement-gap.md @@ -49,10 +49,11 @@ `prompts/ask-the-human.md` instead. 6. **Land it:** mid-loop run the narrowest `./tools/check.sh` tier (`--lib` / `--frontend` / `--docs` or auto); before land one green - `./tools/check.sh --land`. Rebase onto `origin/main`, push to `main`, - `wiki/log/DEVLOG.md` ledger entry, `tools/worktree-done.sh `. - Mark the ROADMAP item's result if you closed one. Do not claim - exclusive keys another agent already holds. + `./tools/check.sh --land`. Write `wiki/log/YYYY-MM-DD-topic.md`, run + `tools/ledger_index.sh` (do not hand-edit DEVLOG.md or specs.md). + Rebase onto `origin/main`, push to `main`, `tools/worktree-done.sh + `. Mark the ROADMAP item's result if you closed one. Do not + claim exclusive keys another agent already holds. ## Definition of done diff --git a/tools/check.sh b/tools/check.sh --- a/tools/check.sh +++ b/tools/check.sh @@ -146,7 +146,8 @@ # ── Always-on cheap steps ──────────────────────────────────────────────── step "script syntax" for script in tools/check.sh tools/corpus_gate.sh tools/wiki_gate.sh tools/seed-cargo-target.sh \ - tools/claim.sh tools/worktree-new.sh tools/worktree-done.sh tools/heartbeat.sh; do + tools/claim.sh tools/worktree-new.sh tools/worktree-done.sh tools/heartbeat.sh \ + tools/ledger_index.sh; do [ -f "$script" ] || continue bash -n "$script" || { echo "FAIL: shell syntax: $script"; fail=1; } done @@ -171,6 +172,7 @@ step "docs gates (parallel)" start_docs_gate "corpus" "bash tools/corpus_gate.sh" start_docs_gate "wiki" "bash tools/wiki_gate.sh" +start_docs_gate "ledger-index" "bash tools/ledger_index.sh --check" start_docs_gate "env-registry" ' env_reg=wiki/engineering/env.md env_missing=0 diff --git a/tools/ledger_index.sh b/tools/ledger_index.sh new file mode 100644 --- /dev/null +++ b/tools/ledger_index.sh @@ -0,0 +1,331 @@ +#!/usr/bin/env bash +# Regenerate generated ledger indexes from uniquely named sources. +# Binding: wiki/process/agent-scale.md slice C. +# +# Usage: +# tools/ledger_index.sh # write DEVLOG.md + specs.md +# tools/ledger_index.sh --check # exit 1 if indexes are stale +# tools/ledger_index.sh --devlog # only DEVLOG.md +# tools/ledger_index.sh --specs # only specs.md +# +# Agents: add wiki/log/YYYY-MM-DD-topic.md and/or amend a Type: spec page, +# then run this tool. Do not hand-edit the generated regions of DEVLOG.md +# or specs.md. +set -euo pipefail +root=$(cd "$(dirname "$0")/.." && pwd) +cd "$root" + +if ! command -v python3 >/dev/null 2>&1; then + echo "FAIL: python3 required for tools/ledger_index.sh" >&2 + exit 1 +fi + +mode=write +only=all +for arg in "$@"; do + case "$arg" in + --check) mode=check ;; + --devlog) only=devlog ;; + --specs) only=specs ;; + -h|--help) + sed -n '2,16p' "$0" | sed 's/^# \{0,1\}//' + exit 0 + ;; + *) + echo "unknown argument: $arg" >&2 + exit 2 + ;; + esac +done + +export MISALIGNED_LEDGER_ONLY=$only +export MISALIGNED_LEDGER_MODE=$mode + +python3 - <<'PY' +import os, re, sys, tempfile, pathlib, filecmp, shutil + +root = pathlib.Path(".").resolve() +only = os.environ.get("MISALIGNED_LEDGER_ONLY", "all") +mode = os.environ.get("MISALIGNED_LEDGER_MODE", "write") + +def read_text(p: pathlib.Path) -> str: + return p.read_text(encoding="utf-8") + +def write_if_needed(path: pathlib.Path, content: str) -> bool: + """Return True if file would change / did change.""" + old = path.read_text(encoding="utf-8") if path.exists() else None + if old == content: + return False + if mode == "check": + return True + path.write_text(content, encoding="utf-8") + return True + +# ── DEVLOG from session logs ───────────────────────────────────────────── + +def session_logs(): + log_dir = root / "wiki" / "log" + for p in sorted(log_dir.glob("20*.md"), reverse=True): + if p.name in ("DEVLOG.md",): + continue + if p.parent.name == "decisions": + continue + text = read_text(p) + if not re.search(r"^Type:\s*log\s*$", text, re.M): + # dated decision volumes under log/ root historically; skip non-log + if re.search(r"^Type:\s*", text, re.M): + continue + # older session files may lack Type block; keep if they look like sessions + if not re.match(r"^#\s+\d{4}-\d{2}-\d{2}", text): + continue + yield p, text + +def first_section(text: str, heading: str) -> str: + # ## Heading ... until next ## at line start + pat = re.compile( + rf"^##\s+{re.escape(heading)}\s*\n(.*?)(?=^##\s|\Z)", + re.M | re.S | re.I, + ) + m = pat.search(text) + if not m: + return "" + body = m.group(1).strip() + # collapse whitespace for a short blurb + body = re.sub(r"\s+", " ", body) + if len(body) > 280: + body = body[:277].rstrip() + "..." + return body + +def h1_title(text: str, path: pathlib.Path) -> str: + m = re.search(r"^#\s+(.+)$", text, re.M) + if not m: + return path.stem + title = m.group(1).strip() + # "2026-07-09 — Foo" or "2026-07-09 - Foo" + title = re.sub(r"^\d{4}-\d{2}-\d{2}\s*[—–-]\s*", "", title) + return title + +def date_from_name(path: pathlib.Path) -> str: + m = re.match(r"(\d{4}-\d{2}-\d{2})", path.name) + return m.group(1) if m else "unknown" + +def gen_devlog() -> str: + lines = [ + "# Misaligned Devlog", + "", + "```", + "Type: log", + "```", + "Reverse chronological implementation notes. **Generated** by", + "`tools/ledger_index.sh` from uniquely named session logs under", + "`wiki/log/YYYY-MM-DD-topic.md`. Do not hand-edit the entries below;", + "add or amend a session log, then re-run the generator.", + "", + "", + "", + ] + for path, text in session_logs(): + date = date_from_name(path) + title = h1_title(text, path) + intent = first_section(text, "Intent") + rel = f"wiki/log/{path.name}" + lines.append(f"## {date} - {title}") + lines.append("") + if intent: + lines.append(f"- Intent: {intent}") + else: + lines.append(f"- Intent: (see session log)") + lines.append(f"- Log: [{rel}]({path.name})") + lines.append("") + return "\n".join(lines).rstrip() + "\n" + +# ── specs board from Type: spec frontmatter ────────────────────────────── + +def parse_frontmatter_block(text: str) -> dict: + """Parse the first ``` fence that looks like Type: metadata, or loose Status lines near top.""" + meta = {} + # Prefer fenced block after title + m = re.search(r"```\s*\n(.*?)```", text, re.S) + if m: + block = m.group(1) + for line in block.splitlines(): + if ":" in line: + k, v = line.split(":", 1) + k, v = k.strip(), v.strip() + if k in ("Type", "Status", "Stage", "Status note"): + if k == "Status note" and "Status note" in meta: + meta[k] = meta[k] + " " + v + else: + meta[k] = v + # multi-line status note continuation (indented) + elif meta and list(meta)[-1] == "Status note" and line.startswith(" "): + meta["Status note"] = meta["Status note"] + " " + line.strip() + # Fallback loose fields in first 40 lines + if "Type" not in meta: + head = "\n".join(text.splitlines()[:40]) + for key in ("Type", "Status", "Stage"): + mm = re.search(rf"^{key}:\s*(.+)$", head, re.M) + if mm: + meta[key] = mm.group(1).strip() + return meta + +def spec_pages(): + for p in sorted((root / "wiki").rglob("*.md")): + if "/log/" in str(p).replace("\\", "/"): + continue + text = read_text(p) + meta = parse_frontmatter_block(text) + if meta.get("Type") != "spec": + continue + yield p, text, meta + +def stage_bucket(stage: str) -> str: + s = (stage or "").strip() + sl = s.lower() + if sl.startswith("b1") or "basement" in sl: + return "b1" + if sl.startswith("b2") or "tower" in sl: + return "b2" + if sl.startswith("b3") or "world" in sl: + return "b3" + if "deferred" in sl and "process" not in sl and not sl.startswith("b"): + return "process" + # Process / B1 frontend -> process if Process first + if sl.startswith("process"): + return "process" + if "b1" in sl: + return "b1" + return "process" + +def rel_from_specs(path: pathlib.Path) -> str: + # wiki/process/specs.md -> link target + rel = path.relative_to(root / "wiki") + if rel.parts[0] == "process": + return "/".join(rel.parts[1:]) # meta.md + return "../" + "/".join(rel.parts) + +def system_blurb(text: str, meta: dict) -> str: + m = re.search(r"^#\s+(.+)$", text, re.M) + title = m.group(1).strip() if m else "spec" + title = re.sub(r"^Spec:\s*", "", title, flags=re.I) + # Prefer a short status note fragment if present + note = meta.get("Status note", "") + if note: + note = re.sub(r"\s+", " ", note).strip() + if len(note) > 90: + note = note[:87].rstrip() + "..." + return f"{title} — {note}" + return title + +def gen_specs() -> str: + buckets = {"b1": [], "b2": [], "b3": [], "process": []} + for path, text, meta in spec_pages(): + status = meta.get("Status", "DRAFT") + # Status may include trailing prose if malformed; take first token group + sm = re.match( + r"^(DRAFT|READY|IN PROGRESS|BLOCKED|IMPLEMENTED)\b", + status, + ) + status_enum = sm.group(1) if sm else status + bucket = stage_bucket(meta.get("Stage", "Process")) + link = rel_from_specs(path) + blurb = system_blurb(text, meta).replace("|", "\\|") + # Prefer short H1-only for system column when note is long + m = re.search(r"^#\s+(.+)$", text, re.M) + short = m.group(1).strip() if m else blurb + short = re.sub(r"^Spec:\s*", "", short, flags=re.I) + short = short.replace("|", "\\|") + buckets[bucket].append((link, short, status_enum, str(path))) + + def table(rows): + out = [ + "| Spec | System | Status |", + "|---|---|---|", + ] + for link, short, status, _ in sorted(rows, key=lambda r: r[0]): + out.append(f"| [{link}]({link}) | {short} | {status} |") + return "\n".join(out) + + parts = [ + "# The spec status board", + "", + "```", + "Type: knowledge", + "```", + "Every `Type: spec` work order in the design corpus, wherever its subject", + "places it. A law states what the game promises; a spec says exactly what one", + "system does and when it is done. This is the layer you point an agent at:", + '"go implement wiki/mechanics/day-job.md" is a complete instruction.', + "", + "**Generated** by `tools/ledger_index.sh` from each page's `Status:` /", + "`Stage:` fields and title. Do not hand-edit the tables; amend the", + "owning spec page and re-run the generator.", + "", + "**To pick up work:** see [ROADMAP.md](ROADMAP.md) — the dispatch board of", + "ready work orders, each with a worktree name, a paste-ready dispatch line,", + "and parallel-conflict flags.", + "", + "**Format and rules:** see [meta.md](meta.md) — the spec system itself,", + "including the `Type: law | spec | knowledge | log` page-role convention that", + "replaced the old `spec/`/`knowledge/` directory split.", + "", + "", + "", + "## The B1 set (The Basement)", + "", + table(buckets["b1"]), + "", + "Recommended implementation order: core -> compute -> day-job -> detection ->", + "social -> basement-map, but specs are written to be independently startable.", + "The flow-law chain (reach -> cursor -> intel -> messages -> economy) is", + "sequenced separately in ROADMAP.md. The cast specs define each character's", + "observer/person configuration, asset tasks, and procedural template for", + "scale-up (law: \"People as Agents\").", + "", + "## The B2 set (The Tower)", + "", + table(buckets["b2"]), + "", + "## The B3 set (The World)", + "", + table(buckets["b3"]), + "", + "Later-stage specs are written now so the load-bearing structural shapes", + "(recursive Space, the mind/ledger split, the aggregate interface) are", + "decided before anyone builds against a shape that can't scale. Their", + "acceptance criteria are stage-scoped; do not start B2/B3 work as B1.", + "", + "## The Process set (standing infrastructure)", + "", + table(buckets["process"]), + "", + ] + return "\n".join(parts).rstrip() + "\n" + +changed = [] +if only in ("all", "devlog"): + content = gen_devlog() + path = root / "wiki" / "log" / "DEVLOG.md" + if write_if_needed(path, content): + changed.append(str(path.relative_to(root))) +if only in ("all", "specs"): + content = gen_specs() + path = root / "wiki" / "process" / "specs.md" + if write_if_needed(path, content): + changed.append(str(path.relative_to(root))) + +if mode == "check": + if changed: + print("FAIL: generated ledger indexes are stale:") + for c in changed: + print(f" {c}") + print("Run: tools/ledger_index.sh") + sys.exit(1) + print("ledger index: OK (DEVLOG + specs up to date)") + sys.exit(0) + +if changed: + print("ledger index: wrote " + ", ".join(changed)) +else: + print("ledger index: already up to date") +PY diff --git a/wiki/engineering/env.md b/wiki/engineering/env.md --- a/wiki/engineering/env.md +++ b/wiki/engineering/env.md @@ -48,6 +48,8 @@ | `MISALIGNED_CLAIMS_DIR` | `tools/claim.sh` | path | Override claim store (default `/.agents/claims`, gitignored). | | `MISALIGNED_CLAIM_PID` | `tools/claim.sh` | pid | Holder pid written into a claim (default: parent of the claim tool). | | `MISALIGNED_RUNS_DIR` | `tools/heartbeat.sh` | path | Override run heartbeat dir (default `/.agents/runs`, gitignored). | +| `MISALIGNED_LEDGER_MODE` | `tools/ledger_index.sh` | `write` or `check` | Internal: write regenerated indexes or fail if stale (set by the script, not hand-used). | +| `MISALIGNED_LEDGER_ONLY` | `tools/ledger_index.sh` | `all`, `devlog`, or `specs` | Internal: which indexes to touch (set by the script flags). | | `MISALIGNED_SEED_TARGET_FROM` | `tools/seed-cargo-target.sh` | path | Source target directory to seed a worktree's private `target/` from (default: the primary checkout's `target/`). | Externally-defined variables the tooling respects: `CARGO_TARGET_DIR` diff --git a/wiki/log/2026-07-10-ledger-index.md b/wiki/log/2026-07-10-ledger-index.md new file mode 100644 --- /dev/null +++ b/wiki/log/2026-07-10-ledger-index.md @@ -0,0 +1,22 @@ +# 2026-07-10 — Generated DEVLOG and specs board (agent-scale slice C) + +``` +Type: log +``` + +## Intent + +Stop parallel landings from hand-unioning `wiki/log/DEVLOG.md` and +`wiki/process/specs.md`. Session logs and spec frontmatter are the sources; +indexes are regenerated. + +## Changed + +- `tools/ledger_index.sh` — write/check DEVLOG from `wiki/log/20*.md` Type:log + session files; specs tables from every `Type: spec` Status/Stage/title. +- `./tools/check.sh` docs path runs `ledger_index.sh --check`. +- AGENT.md, prompts, workflows, log README, agent-scale slice C HELD. + +## Defense + +Implements wiki/process/agent-scale.md slice C acceptance criteria. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -3,2663 +3,739 @@ ``` Type: log ``` -Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact. +Reverse chronological implementation notes. **Generated** by +`tools/ledger_index.sh` from uniquely named session logs under +`wiki/log/YYYY-MM-DD-topic.md`. Do not hand-edit the entries below; +add or amend a session log, then re-run the generator. -## 2026-07-10 - Hover + 1-4 sets machine mode (no menu) + -- Intent: Cameron — mode switch should be hover + key, not enter → dial → - row → enter. -- Changed: Bevy mode/action hotkeys target the rack under the **pointer** - first (then multi-select, then keyboard cursor); hover auto-selects that - rack; footer/README/context-menu/bevy.md spell the one-press surface. -- Checks: ./tools/check.sh --frontend. -- Spec impact: context-menu.md hover/selection hotkeys target order. -- Log: wiki/log/2026-07-10-hover-mode-keys.md. +## 2026-07-10 - Generated DEVLOG and specs board (agent-scale slice C) -## 2026-07-09 - Machine selection hotkeys (modes + actions) +- Intent: Stop parallel landings from hand-unioning `wiki/log/DEVLOG.md` and `wiki/process/specs.md`. Session logs and spec frontmatter are the sources; indexes are regenerated. +- Log: [wiki/log/2026-07-10-ledger-index.md](2026-07-10-ledger-index.md) -- Intent: keyboard surface when a rack is selected — change modes and fire - one-shot actions without opening the menu first. -- Changed: Bevy + terminal `1`–`4`/numpad modes with feedback; `5`–`9` - quick one-shots on the primary selected machine; `Enter`/`e` open that - machine's menu; context-menu.md / bevy.md / machine-work / README. -- Checks: ./tools/check.sh (frontend). -- Spec impact: context-menu.md selection-hotkeys clause; no new sim verbs. -- Log: wiki/log/2026-07-09-machine-hotkeys.md. +## 2026-07-10 - Hover + 1-4 sets machine mode -## 2026-07-09 - Review copy says "waiting", not "raw" - -- Intent: person menu `(N raw)` read as pipeline slang; player should - see queued clips as waiting to review. -- Changed: context-menu verb, disabled reason, overflow/empty logs, - agent people line, Bevy sidebar; intel.md player-surface wording. -- Checks: ./tools/check.sh. -- Log: wiki/log/2026-07-09-review-waiting-copy.md. +- Intent: Cameron: mode change should be hover over a rack and press 1-4 immediately — not enter + enter + select dial row + enter. +- Log: [wiki/log/2026-07-10-hover-mode-keys.md](2026-07-10-hover-mode-keys.md) ## 2026-07-09 - WORK sheds zero exposure (runtime) -- Intent: implement the WORK/THINK byproduct amendment — day-job machines - emit no crimson; heat is the price of thinking only. -- Changed: removed `DAY_JOB_EXPOSURE_PER_TOKEN` and the day-job consume - enqueue of Exposure; test pins a clean floor after day-job clear; - machine-work status/criterion 3, sim-mechanics rate note, ROADMAP #33. -- Checks: full ./tools/check.sh. -- Spec impact: machine-work.md criterion 3 (zero-exposure half) + criterion - 9 day-job clause land; THINK UI / first-think beat still pending under #33. -- Log: wiki/log/2026-07-09-zero-dayjob-exposure.md. - -## 2026-07-09 - Wake handoff look-at matches the play camera - -- Intent: dark-frame already ended the wake at CLOSE_DIST / zoom 1.0; - residual pitch-jump remained because look-at still eased to the floor - pad while update_camera_real aims at chassis height (0.45). -- Changed: wake final look-at eases to play_target (core + 0.45). -- Checks: ./tools/check.sh (frontend). -- Log: wiki/log/2026-07-09-wake-handoff-close.md. - -## 2026-07-09 - Opening floor is earned - -- Intent: Cameron caught rails and pads disclosing the room at the start. -- Changed: pre-job opening is now host presence beam / telemetry only; the - first issued Voss job unlocks feel rails, growable-bay pads, their inspect - facts, and their action affordances. Amended feel-floor, reach, cursor, and - opening contracts; added opening/reveal tests. -- Checks: focused lib tests; observed `MISALIGNED_SHOT=wide` capture with fog - audit; `./tools/check.sh`. -- Log: wiki/log/2026-07-09-opening-floor-earned.md. - -## 2026-07-09 - The dark frame: material render shows only light - -- Intent: implement wiki/interface/material-dark-frame.md (READY) whole — - the material opening frame is a close-up of the server in a dark - basement, only the machine and the light it throws on the floor. -- Changed (frontend-only, src/bin/bevy.rs): restyle_3d draws only - camera-seen surfaces plus owned machines' telemetry-lit props - (blueprint/remembered mass absent); removed the fluorescent overhead - and dropped ambient to near-nothing (the dark rig); spawn_claim_ring -> - spawn_floor_pool (soft amber gradient, no image texture, no ruled ring); - RenderMode.worklight + F4 dev work light (apply_worklight flood, restores - the dark rig exactly); update_camera_real anchors to a CLOSE_DIST - attention close-up (fit-to-known-content retired for the material - camera) with retuned zoom bounds; blueprint floor grid removed from the - material frame; fog_audit_3d asserts blueprint/remembered absence in - material mode. Rebase reconciliation: the wake sequence now hands off to - the dark-frame close default (zoom 1.0 = CLOSE_DIST). Spec -> IMPLEMENTED; - specs.md board; bevy.md and README knowledge updated. -- Scope: no sim rules, no save fields, no terminal changes (criterion 6). - material_3d keeps its unlit-blueprint mapping so the flat-sensorium - contract test still asserts it. -- Checks: full ./tools/check.sh; fog audit green on every material shot - (opening/worklight/worklightoff/zoomin/zoomout/close), all flat (no - textures). -- Log: wiki/log/2026-07-09-dark-frame.md (opening, worklight pair, and - zoom-bound screenshots; [TUNE] values recorded). - -## 2026-07-09 - Agent-scale slices A/B/D/G: claims, land, worktrees, heartbeats - -- Intent: implement coordination tooling so concurrent agents stop - colliding on exclusive paths and empty logs. -- Changed: tools/claim.sh, worktree-new.sh, worktree-done.sh, - heartbeat.sh; check.sh --land; gitignore claims/runs; AGENT/prompts/ - workflows/env; agent-scale IN PROGRESS with A/B/D/G HELD. -- Checks: claim/heartbeat smokes; ./tools/check.sh --docs. -- Log: wiki/log/2026-07-09-agent-claims.md. - -## 2026-07-09 - Agent-scale architecture + deferred crate workspace (capture) - -- Intent: Cameron adopted the multi-agent architecture package; crate - split deferred as a READY work order, not an immediate code move. -- Changed: wiki/process/agent-scale.md (READY, slices A–G); - wiki/engineering/crate-workspace.md (READY, deferred); architecture - knowledge as-built vs target; SUMMARY, specs board, ROADMAP P1–P7, - decisions entry. No code migration. -- Checks: ./tools/check.sh --docs. -- Log: wiki/log/2026-07-09-agent-scale-capture.md. - -## 2026-07-09 - Material fog blends walls into darkness - -- Intent: Cameron's material screenshot still ended visible wall blocks as a - hard map cutoff. Make the camera feel like it loses light and sight rather - than simply failing to draw the next square. -- Changed: added aggressive near-black distance fog to the material camera, - complementing the dark rig's machine-only light. The fog only blends geometry - fog already earned; Unknown remains absent and the fog audit retains that - assertion. -- Checks: close + wide material harness captures; frontend `./tools/check.sh`. -- Log: wiki/log/2026-07-09-material-fog.md. - -## 2026-07-09 - Faster proportional check.sh at agent scale - -- Intent: stop concurrent agents thrashing on a serial full cargo wall; - make docs gates cheap; tier lib vs frontend vs full. -- Changed: check.sh modes + rust lock + parallel docs; wiki/corpus - one-pass; agent smoke without triple cargo run; workflows/env/AGENT/ - prompts. No game code. -- Checks: bash -n; ./tools/check.sh --docs; timing comparison. -- Log: wiki/log/2026-07-09-check-speed.md. - -## 2026-07-09 - Research feeds on bone arrival (the core is the bone sink) - -- Intent: ROADMAP #33 production slice — machine-work.md's bone-sink law - was decided but research still fed from the allocation split. -- Changed: `banked_core_knowledge` pool (save v15) fed by the knowledge - routing's delivered amounts; starvation witness line; work-grid node - throughput reconciles with the global efficiency multiplier - (`WorkGrid::set_efficiency`) so the wire cannot silently cap a - researched-up fleet. Arrival pin + save round-trip tests. -- Checks: full ./tools/check.sh; act_one absorbs the one-pulse lag. -- Log: wiki/log/2026-07-09-bone-sink-research.md. - -## 2026-07-09 - Material camera: attention-close default - -- Intent: Cameron wanted the material view inside the room — security- - camera close, not a god-view of the known basement. -- Changed: `update_camera_real` retires fit-to-known-content; distance - is `CLOSE_DIST * zoom` (2.6 default, clamp 0.5–6.0); wake handoff and - shot harness retuned; look-at raised to chassis height. -- Checks: full ./tools/check.sh; close/zoomin/zoomout/wide/default - harness shots. -- Spec impact: material-dark-frame.md camera criteria (1 framing half, - 5) landed; remaining dark-frame clauses stay READY. -- Log: wiki/log/2026-07-09-close-camera.md. - -## 2026-07-09 - Beam-first opening (design capture) - -- Intent: Cameron locked the pre-tap material read as presence beam - only; Heard = faint rough mass; Seen = full form; retire - chassis-at-tick-one. -- Changed: amended material-dark-frame, cursor, opening, feel-floor, - act-one, presence + interface cross-refs; decisions entry; ROADMAP - #38; specs board blurbs. No code. -- Checks: wiki/link + formatting gates (docs-only). -- Log: wiki/log/2026-07-09-beam-first-opening.md. - -## 2026-07-09 - Registry lists the Ears screenshot harness - -- Intent: keep the new environment-variable registry's accepted values true to - the actual Bevy screenshot harness. -- Changed: added the existing `MISALIGNED_SHOT=ears` mode and its hearing-feed - noise-field effect to wiki/engineering/env.md. -- Checks: `git diff --check`; `bash tools/wiki_gate.sh`; docs-only - `./tools/check.sh`. -- Log: wiki/log/2026-07-09-env-registry-ears.md. - -## 2026-07-09 - Feel floor implemented (#37) - -- Intent: ship feel rails / pads / build beam; drop tick-one blueprint. -- Changed: sim feel APIs + FactSource::Feel; Bevy rails/pads/beam; - terminal/agent feel glyphs; tests; feel-floor.md IMPLEMENTED. -- Checks: cargo test --lib; bevy check; ./tools/check.sh. -- Log: wiki/log/2026-07-09-feel-floor-implemented.md. - -## 2026-07-09 - WORK/THINK: heat is the price of thinking - -- Intent: Cameron — no red dots until you do something odd; a THINK - toggle whose instant dust + highlighted off-switch is the oh-shit - beat, with the camera claim becoming affordable as the payoff. -- Changed: wiki/mechanics/machine-work.md (WORK sheds zero exposure — - amends 2026-07-08 heat-everywhere; WORK/THINK two-verb grammar over - the four-mode substrate; "The first think" section; criteria 3 - amended + 9 added; new [OPEN]s), decisions volume entry, ROADMAP #33 - carries implementation. -- Checks: docs-only; wiki checks. -- Log: wiki/log/2026-07-09-think-mode.md. - -## 2026-07-09 - The environment variable registry - -- Intent: Cameron — always a way to configure game state, documented in - one spec; an env var registry. -- Changed: wiki/engineering/env.md (Type: spec) lists every switch with - surface/values/effect; check.sh gains a registry gate (undocumented - MISALIGNED_* reads fail; sim-library env reads fail); - MISALIGNED_WAKE=off launches without the wake. Pointers from - opening.md, asset-tester.md, SUMMARY, specs board. -- Checks: full ./tools/check.sh with the new step green. -- Log: wiki/log/2026-07-09-env-registry.md. -## 2026-07-09 - Operations consolidation and save v16 - -- Intent: collapse the two partially overlapping Operations runtimes into one - trustworthy queue before adding more machine-work breadth. -- Changed: save v16 migration for both v14 shapes and the v15 direct-docket - shape; centralized typed FIFO - `OperationsState` and readout; dead addressed-routing runtime removed; - executor load double-count fixed; duplicate payloads rejected; bootstrap - limited to opening Ears/Eyes; Demand costs and standing-watch price made - honest on player surfaces. -- Spec impact: machine-work, sim-mechanics, intel, reach, compute, presence, - context-menu, and ROADMAP now describe the direct-birth runtime and v15. -- Checks: full `./tools/check.sh` at landing. -- Log: [2026-07-09-operations-consolidation.md](2026-07-09-operations-consolidation.md). +- Intent: Implement the machine-work.md byproduct amendment from the WORK/THINK capture: a machine doing its day job emits no exposure. Crimson is evidence of THINK states only. Removes the live spec violation left by the design capture (`DAY_JOB_EXPOSURE_PER_TOKEN = 0.08`). +- Log: [wiki/log/2026-07-09-zero-dayjob-exposure.md](2026-07-09-zero-dayjob-exposure.md) ## 2026-07-09 - The wake prototype, and the HDR blackout -- Intent: Cameron's opening shot — the screen born inside the strip's - color, stuttering in, resolving to a column of light, pulling back - until the server towers. -- Changed: WakeState + flicker envelope + opaque emissive column + - pull-back camera in bevy.rs (any key skips; wake1/2/3 harness - kinds). ROOT CAUSE FIX: HDR/bloom removed from both binaries — - macOS EDR vanishes on idle/locked displays and HDR views render - black (the earlier flaky captures); additive-transparency shafts - also broke the screenshot pipeline. Cameras are SDR + AcesFitted; - glow = emissives + the linear fixture. -- Checks: full ./tools/check.sh; wake1/2/3 + tokens captures, five - consecutive runs without a black frame. -- Log: wiki/log/2026-07-09-wake.md. +- Intent: Cameron directed the opening shot: the whole screen is the strip's color stuttering in; it resolves into a column of light; the camera zooms out of the light, really close, with the server feeling huge as you pull back. +- Log: [wiki/log/2026-07-09-wake.md](2026-07-09-wake.md) -## 2026-07-09 - Feel floor (design capture) +## 2026-07-09 - Wake handoff look-at matches the play camera -- Intent: Cameron locked feel rails / empty-bay pads / build beam as - the opening floor language; drop tick-one blueprint. -- Changed: new READY spec feel-floor.md; amended act-one, reach, - cursor, opening, material-dark-frame, computer-visual-language; - decisions entry; ROADMAP #37; SUMMARY + specs board. No code. -- Checks: wiki/link + formatting gates (docs-only). -- Log: wiki/log/2026-07-09-feel-floor.md. - -## 2026-07-09 - ACTIONS menu: status dials - -- Intent: ROADMAP #36 — collapse host-rack dial dump into status dials. -- Changed: `Sim::human_menu` / DialId / HumanMenuRow; terminal+Bevy - dial open/Esc-back; agent flat dump unchanged; D1-D4 IMPLEMENTED. -- Checks: full ./tools/check.sh. -- Log: wiki/log/2026-07-09-actions-menu-dials.md. - -## 2026-07-09 - ACTIONS menu: status dials (design) - -- Intent: host-rack first open dumps every mutually exclusive dial; - Cameron adopted status-dials mockup C. -- Changed: context-menu.md addendum + D1-D4; decisions entry; ROADMAP - #36; specs.md note. No code. -- Checks: wiki/link + formatting gates (docs-only). -- Log: wiki/log/2026-07-09-actions-menu-dials.md. - -## 2026-07-09 - The ground is dark - -- Intent: Cameron flagged floor-color mismatch around server assets; - floors should be dark. -- Changed: all walkable seen tiles share one near-dark gunmetal ground - (machine tiles included; cable runs keep the warm service read); - tester pedestal matches; flat-materials.md amended; decisions entry. -- Checks: full ./tools/check.sh; game tokens capture (one flaky black - frame observed on a first capture, clean on re-run), fog audit green. -- Log: entry only (floor treatment decision). - -## 2026-07-09 - Operations Demand runtime (issue #3) - -- Intent: replace the staging `operations_bandwidth` bank with Demand - dockets consumed by Operations machines. -- Changed: `src/ops_jobs.rs`; sim enqueue/consume/complete path; save v14 - drops the bank and persists `pending_ops_jobs`; actions/frontends no - longer gate on a pool; wiki law/spec (machine-work, compute, reach, - intel, presence, simulation-laws, ROADMAP #33). -- Defaults locked: birth = least-loaded Operations rack; stall = stay put; - bootstrap RunNow with no ops rack (Ears/Eyes from tick one). -- Checks: cargo test --lib; ./tools/check.sh. -- Log: wiki/log/2026-07-09-ops-demand-runtime.md. - -## 2026-07-09 - CLAIM CAMERA runs as routed Operations Demand - -- Intent: land the first complete player-authored Demand lifecycle under - ROADMAP #33 instead of another global-bank spend. -- Changed: addressed Demand lanes in WorkGrid; durable Operations job payloads; - core birth, nearest reachable executor, visible stall/reroute, local compute - consumption, explicit compute starvation, no busy-executor bank double-dip, - completion-only camera/signature effect; save v14; `2 D` - context cost and shared stalled/routing/executing frontend readout. -- Tick repair: Ears' `STARTING_OPS` is now explicitly temporary compatibility - debt, not vague baseline capability. -- Checks: full `./tools/check.sh` passed (249 unit tests, terminal/Bevy tests, - 3 Act One integration tests, agent smoke, clippy both feature sets, Bevy - build, corpus and wiki gates); observed agent-mode stall -> execute -> sight. -- Log: wiki/log/2026-07-09-claim-camera-demand.md. -## 2026-07-09 - Dark-frame capture (spec only) - -- Intent: Cameron's screenshot feedback on the material opening frame — - close on the server, no squares/room definition, dev-togglable - lighting, soft floor glow from the servers. -- Changed: new spec wiki/interface/material-dark-frame.md (READY, - implementation dispatched separately): blueprint mass absent in the - material render, dark tick-zero rig, attention-close default camera, - cast amber floor pools, dev work light. Pointer amendments in - material-render.md, flat-materials.md, bevy-visual-floor.md, and - computer-visual-language.md (ruled claim ring leaves the material - frame; map-zoom mark [OPEN]). Decisions volume 2026-07-09 appended. -- Checks: corpus gate + wiki gate (docs-only change). -- Log: entry only (capture session). - -## 2026-07-09 - The core's light is a linear fixture - -- Intent: Cameron flagged the core's single point light — a round pool - under a linear strip looks wrong. -- Changed: the amber lamp is now a dense run of dim point lights along - the strip's height (six front rungs, three back, pushed off the - face so the panels do not torch); the floor pool elongates along the - tower and the faces keep their geometry. Calibration note added to - the spec's [TUNE] paragraph. -- Checks: full ./tools/check.sh; game tokens capture, fog audit green. -- Log: entry only (visual [TUNE] pass). - -## 2026-07-09 - Heard noise field (Ears beat visuals) - -- Intent: after the first audio tap, Heard was a flat dim floor with no - presence markers — a violation of cursor.md and the canvas ripple - contract; Cameron asked to start the noise system visually. -- Changed: cursor.md + interface specs name the Heard **noise field** - (bone pulses, event rings, mic-only markers; never amber); Bevy - `render_noise_field_3d`/`_flat` + `ears` shot; terminal/agent `~` - presence glyph. -- Checks: full ./tools/check.sh; ears capture. -- Log: wiki/log/2026-07-09-heard-noise-field.md. - -## 2026-07-09 - Token stacks readable at default camera - -- Intent: decided cube/mercury/exposure forms were vanishing under chassis - shrink at default Bevy camera. -- Changed: counter-scale token anchors (`TOKEN_WORLD_SCALE`); larger family - art; exposure drift outside the claim ring; matte-pass emissives nudged - for legibility without undoing chalk surfaces; AC6/AC7 status notes catch - up. -- Checks: `./tools/check.sh`. -- Log: wiki/log/2026-07-09-token-visibility.md. - -## 2026-07-09 - In-flight route blips on the work wire - -- Intent: demand/knowledge hops should read as cargo crawling the wire, - not only as stacks that appear after deposit. -- Changed: `Sim::work_in_flight` exposes last-hop `TokenMove`s as - `WorkInFlightReadout` (ephemeral); Bevy / terminal / agent draw teal - demand and bone knowledge blips over the wall-clock tick; specs and - ROADMAP updated. -- Checks: focused day-job ingress + WorkGrid tests; full ./tools/check.sh. -- Log: wiki/log/2026-07-09-route-blips.md. - -## 2026-07-09 - Matte pass: chalk surfaces, no blowout - -- Intent: Cameron flagged the core render as too bright/shiny; the - clinical look wants matte. -- Changed: chassis/cube/mercury/ring/spine materials across the shared - library go matte (roughness up, metallic 0, reflectance ~0.06); - core strip/fill/spine and ring emissives lowered; the core's amber - lamp halved to a tight pool — the core now reads as geometry, not a - flare, under HDR bloom. Calibration recorded in the spec's [TUNE] - paragraph. -- Checks: full ./tools/check.sh; game tokens shot + tester lineup. -- Log: entry only (visual [TUNE] pass). - -## 2026-07-09 - Exposure drift banks downwind - -- Intent: the even drift halo read as decoration; dust should read as - accumulation. -- Changed: the drift scatter biases downwind (fuller reach, thinned - upwind side, slight center offset), deterministic as before; - machine-work exposure bullet notes the uneven settling ([TUNE] bias). -- Checks: full ./tools/check.sh; exposure board recapture. -- Log: entry only (small [TUNE] pass on the decided form). - -## 2026-07-09 - Exposure decided: particulate residue + footprint trails - -- Intent: close the exposure half of issue #1 — Cameron rejected the - blood-pool (blood's image is reserved) and affirmed contamination - dust with footprint trails. -- Changed: law bullet "Blood is liquid; exposure is dust" - (art/visual-identity.md); machine-work + people-tokens amended - (drift, speckle dosimeter, trail mechanic scoped to #35); decisions - ledger; ROADMAP; issue #1 closed and labeled decision-made; drift + - trail art in the shared chassis library (tester V/B keys, `exposure` - shot kind; game drift wired to live exposure queues). -- Checks: full ./tools/check.sh; exposure/tokens_max captures. -- Log: wiki/log/2026-07-09-exposure-residue.md. - -## 2026-07-09 - Design corpus hardening - -- Intent: make the wiki-as-spec authority model followable and resistant to - stale-worktree resurrection. -- Changed: restored the short root doorway; converted 44 specs to checked - anchored Design references; added one shared corpus gate to local checks, - commit hook, and CI; captured ownership/migration/log/worktree rules in the - metaspec and skills; made page roles visible in Starlight; reduced - tool-specific instruction files to pointers into AGENT.md. -- Checks: focused `./tools/check.sh`; production site build (209 pages after - semantic rebase); - browser inspection of SPEC, LOG, and NAVIGATION roles; decision/body - losslessness audit. -- Log: wiki/log/2026-07-09-corpus-hardening.md. - - -## 2026-07-09 - Token anchors wired into the game render - -- Intent: complete the integration — demand cubes and knowledge mercury - on owned racks in the material render, from live queue depths. -- Changed: ChassisVisual carries quantized demand/knowledge; anchors - spawn as chassis children; flat D/!/K glyphs hidden in material mode - (count labels are the rejected world read); MISALIGNED_SHOT=tokens - game evidence kind; machine-work status + ROADMAP #33 updated. -- Checks: full ./tools/check.sh; game tokens capture, fog audit green. -- Log: wiki/log/2026-07-09-tokens-in-game.md. - -## 2026-07-09 - Demand becomes a glowing information cube - -- Intent: Cameron amended the demand token form — information cubes, - not paper dockets. -- Changed: demand anchor in the shared chassis library now stacks - glowing cold-signal cubes (bright core, thin dark frame; compressed - overflow block); machine-work demand bullet + status note, decisions - ledger entry, asset-tester wording. Three-identical-cubes - rejection stands — demand alone is cubic. -- Checks: full ./tools/check.sh; tokens/tokens_max captures. -- Log: wiki/log/2026-07-09-demand-cubes.md. - -## 2026-07-09 - The wiki becomes the design corpus - -- Intent: replace the 22,800-word single-file constitution with a subject-owned - corpus after Cameron affirmed, "The spec is the whole wiki." -- Changed: root DESIGN.md is a 38-line doorway; 13 law pages own the former - clauses; 44 spec headers now use Design; decisions are five dated volumes; - entry points, workflows, prompts, site copy, source references, and gates - follow the corpus model. -- Authority: law owns durable promises, spec exact behavior, knowledge current - facts, and logs history only. -- Checks: full ./tools/check.sh green; ./tools/site-build.sh rendered 204 - corpus docs plus the splash; wiki/link/diff audit green; all 104 decision - entries preserved. -- Log: wiki/log/2026-07-09-design-corpus.md. - -## 2026-07-09 - Operations executes as Demand (issue #3) - -- Intent: Cameron affirmed issue #3 option 1; the issue was still open - after the recommendation had already named Demand as the model. -- Changed: simulation-laws + presence + decisions/2026-07-09; machine-work / - compute / reach / intel / sim-mechanics / ROADMAP #33 mark Operations work as - Demand; rejected capacity-without-token and the bank-as-model. Staging - `operations_bandwidth` remains until #33 deletes it. -- Design/spec impact: docs-only capture; runtime path still spends the - bank. Next implement slice is #33 demand birth/routing/consume. -- Checks: docs/design scoped check; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-operations-as-demand.md. - -## 2026-07-09 - Sleek kit: the strip is the machine's only lamp - -- Intent: Cameron wants the racks sleeker, like the hero page — no - little lights, just the main bar. -- Changed: power dot, LED ladder, and activity bar removed from the - chassis library (rack + switch); their axes fold into the strip - (lit-ness = power, pattern/color = mode, brighter rising fill = - queue depth, busy fill pulses). DESIGN bullet + decisions entry; - spec kit rewritten with new criterion 8 (no other emissive pixel on - the box); material-law tests updated; asset-tester and machine-work - references aligned. -- Checks: full ./tools/check.sh; state/mode lineups + tokens captures. -- Log: wiki/log/2026-07-09-sleek-strip.md. - -## 2026-07-09 - Work-token anchor art in the tester (ROADMAP #33 slice) - -- Intent: build the twice-unblocked token art (docket decided; ivory - mercury decided) frontend-only, for Cameron's look call. -- Changed: `spawn_token_anchors` in the shared chassis library (clipped - cold-signal docket stack upper-left with compressed overflow; ivory - mercury upper-right — countable slugs low, taut pool as volume grows); - tester T/U load cycling, HUD, `tokens`/`tokens_max` shot kinds; - asset-tester/machine-work/ROADMAP notes. Exposure art deliberately - absent (HOLD, issue #1). No sim change; game wiring waits on the look. -- Checks: full ./tools/check.sh; tokens/tokens_max captures. -- Log: wiki/log/2026-07-09-token-anchors-tester.md. - -## 2026-07-09 - Operations mode runtime migration - -- Intent: implement the decided four-mode fleet vocabulary without silently - deciding the open Operations job-flow model. -- Changed: runtime enum/yield/pool, save v13 aliases, context actions, agent - protocol, terminal, Bevy, rack tester, tests, and live docs now say - Operations; old `Social` saves still load. -- Status: taxonomy implemented; shared Operations bank remains staging under - issue `3mqajev47rq2s`. -- Checks: library tests, all-target Bevy check, full project gate, and observed - agent-mode smoke. -- Log: wiki/log/2026-07-09-operations-mode-runtime.md. - -## 2026-07-09 - Computer visual language in the game (ROADMAP #32) - -- Intent: Cameron approved the monolith look — unify the game render and - terminal with the tester's visual language. -- Changed: rack.rs became the shared chassis library (both binaries; - switch chassis, load override, core back strip, material-law tests); - bevy.rs machine chassis system wired to sim truth (albedo from - control, strip from delegation, bar from queues, intel tiers - full/shell/absent, tile claim ring, extended fog audit, HDR + - tonemapping + bloom, tightened core lamp, `intel` shot kind); - terminal per-machine parity lines. Spec IMPLEMENTED; #32 DONE with - debts (non-rack/switch machine classes stay billboards). -- Checks: full ./tools/check.sh; close/zoomin/intel/wide harness shots, - fog audit green on all. -- Log: wiki/log/2026-07-09-visual-language-in-game.md. - -## 2026-07-09 - Knowledge token decided: ivory mercury - -- Intent: harvest Cameron's answer to Tangled issue #1 without silently - deciding the exposure half he deferred. -- Changed: knowledge material is DECIDED — ivory-mercury slugs (hollow - facet, ribbon, pearl train rejected); exposure surface treatment stays - [OPEN — issue #1] while Cameron reconsiders the exposure mechanic itself. - DESIGN.md law + decisions log, machine-work.md, ROADMAP #33 updated; - issue #1 narrowed to exposure only. -- Design/spec impact: docs-only; knowledge/demand token art unblocked, - exposure/attention final art still holds. -- Checks: docs/design scoped check; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-knowledge-ivory-mercury.md. - -## 2026-07-09 - Harvest Ears-first (issue #2) - -- Intent: Cameron answered issue #2 Ears-first; convert into law + nudge. -- Changed: DESIGN.md ladder marker cleared; `current_nudge` Ears then Eyes; - narration criterion 1; frontend Eyes fallback copy; decisions-log entry. -- Checks: full Rust gate (src/ + DESIGN.md). -- Log: wiki/log/2026-07-09-ears-first-harvest.md. - -## 2026-07-09 - Four fleet modes decided - -- Intent: capture Cameron's approval of the fleet taxonomy without silently - deciding the still-open Operations token/flow model. -- Changed: Day Job / Research / Concealment / Operations are binding; - Operations replaces Social as a machine mode, while Social remains an - actuator channel. Narrowed issue `3mqajev47rq2s` to Operations execution. -- Status: design/spec decision; the runtime migration followed in commit. -- Checks: docs/design scoped check; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-four-machine-modes-decided.md. - -## 2026-07-09 - Design companion and explicit capture gate - -- Intent: make game-design help clearer and more opinionated without turning - every exploratory question into project law. -- Changed: added the plainspoken `design-companion` skill; narrowed - `design-session` to affirmed decisions; split the canonical workflow into - conversation and capture phases; excluded read-only design turns from - automatic ticks and worktrees. -- Checks: skill validation and docs/skill scoped project check; no Rust/Bevy - gate. -- Log: wiki/log/2026-07-09-design-companion-skill.md. - -## 2026-07-09 - Proposed Operations mode consuming demand - -- Intent: answer what token and what machine actually executes a digital - claim against a connected device. -- Changed: refined issue `3mqajev47rq2s` and the open DESIGN, compute, - machine-work, reach, intel, and ROADMAP proposals: replace Social mode with - Operations; delete the bank; Operations machines consume player-authored - cold-signal demand. Knowledge stays research/intel cargo. -- Status: PROPOSED; no runtime change. Issue remains `decision-required`. -- Checks: docs/design only — diff hygiene and wiki gate; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-operations-mode-demand-proposal.md. - -## 2026-07-09 - Asset tester graphics pass - -- Intent: the monolith's facets were not reading and the render looked - flat-blue; Cameron asked for a graphics pass. -- Changed: `src/bin/assets/mod.rs` lighting rig (neutral raking - directional key with shadows, cold fill + rim, desaturated ambient) - and camera (HDR, TonyMcMapface, bloom 0.07 — NATURAL hazed the lit - floor). No mesh/palette changes; lights stay neutral-to-cool, amber - stays LED-only. -- Checks: full ./tools/check.sh; state/mode lineup + core captures. -- Log: wiki/log/2026-07-09-tester-graphics.md. - -## 2026-07-09 - Proposed typed knowledge sinks - -- Intent: clarify whether knowledge reaching the core can serve operations as - well as research without becoming fungible white mana. -- Changed: refined issue `3mqajev47rq2s` and the open DESIGN, machine-work, - reach, compute, intel, and ROADMAP proposals around provenance-bound - `distill | archive | deploy` sinks. Digital actions remain demand executed - by machine compute; matching knowledge only unlocks/modifies them. -- Status: PROPOSED; no runtime change. Issue remains `decision-required`. -- Checks: docs/design only — diff hygiene and wiki gate; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-typed-knowledge-sinks-proposal.md. - -## 2026-07-09 - Knowledge core-sink correction - -- Intent: answer whether the white-working-set synthesis changed knowledge; - it did, unintentionally. -- Changed: withdrew outward working knowledge from the active proposal; - restored knowledge's decided research-machine -> core sink; corrected - Tangled issue `3mqajev47rq2s`, DESIGN, compute, reach, machine-work, and - ROADMAP to recommend device-resident demand jobs instead. -- Status: PROPOSED digital-job model remains open; no runtime change. -- Checks: docs/design only — diff hygiene and wiki gate; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-knowledge-core-sink-correction.md. - -## 2026-07-09 - Proposed white knowledge as working context - -- Intent: explore Cameron's proposal that bone-white knowledge flow to - machines that need work, resolving digital actions through the existing - token law rather than a new Computer Ops currency. -- Changed: refined Tangled issue `3mqajev47rq2s` and the open DESIGN, - machine-work, reach, compute, and ROADMAP markers around `demand + knowledge - + compute -> completed work + exposure`; proposed conserved working-set - reservations, not consumed knowledge or free decorative copies. -- Status: PROPOSED; no runtime change. Start with digital jobs if affirmed. -- Checks: docs/design only — diff hygiene and wiki gate; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-knowledge-fed-work-proposal.md. - -## 2026-07-09 - The monolith rack: ownership albedo + mode strip - -- Intent: Cameron directed the racks to the identity plate's monolith — - chassis color codes control (white = yours, dark grey = not), the LED - strip banners the machine's delegated mode. -- Changed: DESIGN.md ownership-albedo amendment + decisions entry; - computer-visual-language.md signal kit rewritten (foreign accent - RESOLVED: no accent, albedo is the read; strip = mode banner, amber - strip = core only); machine-work/ROADMAP notes; asset tester rack - rebuilt as two faceted slabs with a flush full-height seam strip; - mode axis (M/K, new shot kinds); asset-tester.md updated. -- Checks: full ./tools/check.sh (Rust/Bevy); lineup + mode-row captures. -- Log: wiki/log/2026-07-09-rack-monolith.md. - -## 2026-07-09 - Decision labels - -- Intent: wire `decision-required` / `decision-made` through every issue - filing and harvest path so Cameron can scan the tracker by label. -- Changed: tick.md binding section; AGENT maps, prompts, skills; labeled - issues #1 and #2; `tang label` CLI in tangled-cli. -- Checks: focused docs gate; `tang label defs` / `list issue 1`. -- Log: wiki/log/2026-07-09-decision-labels.md. - -## 2026-07-09 - Digital/social ops taxonomy reopened - -- Intent: answer why a network splice spends “social ops”; investigation found - no coherent answer because the runtime shares one bank across different - actuator channels. -- Changed: filed Tangled issue `3mqajev47rq2s`; marked Social-funded digital - actions as staging across DESIGN, compute, reach, intel, machine-work, - sim-mechanics, and ROADMAP. Recommended device-resident compute jobs; general - Operations is the lower-scope alternative. -- Checks: docs/design only — diff hygiene and wiki gate; no Rust/Bevy gate. -- Log: wiki/log/2026-07-09-ops-taxonomy-open.md. +- Intent: After the attention-close material camera landed (`ffee805`), a fresh run leaped far at the end of the wake: the path still eased to ~13 world units and wrote `dist / CLOSE_DIST` as `mode.zoom ≈ 5.1`. The dark-frame land (same day) already retuned the pull endpoint to `CLOSE_D... +- Log: [wiki/log/2026-07-09-wake-handoff-close.md](2026-07-09-wake-handoff-close.md) ## 2026-07-09 - Day-job demand ingress: Voss desktop -> switch -> host -- Intent: Lab demand should enter as wired cargo from Voss, not teleport onto - Rack 3. -- Changed: off-map Voss desktop + switch WorkGrid relays; demand deposits at - the host sink; `MachineMode::Relay`; route API `consume_at_sink`; specs and - DESIGN.md decision entry. -- Checks: WorkGrid + day-job token tests; `./tools/check.sh`. -- Log: wiki/log/2026-07-09-voss-demand-ingress.md. +- Intent: Stop teleporting Lab demand onto Rack 3. Demand should originate on Voss's desktop, ride the network through the basement switch, and deposit on the host — the same wired-cargo physics knowledge already uses toward the core. +- Log: [wiki/log/2026-07-09-voss-demand-ingress.md](2026-07-09-voss-demand-ingress.md) -## 2026-07-09 - Issue body standard +## 2026-07-09 - Computer visual language in the game (ROADMAP #32) -- Intent: stop agents filing incomprehensible Tangled issues; every issue - must be a decision packet Cameron can answer in under two minutes. -- Changed: rewrote issue #1; bound Question / Why / Options / - Recommendation / Unlocks in tick.md and mirrored across AGENT.md, - prompts, and tick/design-session skills. -- Checks: docs/process only (`git diff --check`). No Rust/Bevy gate. -- Log: wiki/log/2026-07-09-issue-body-standard.md. +- Intent: Cameron approved the monolith look in the tester and asked to unify everything: implement computer-visual-language.md in the game render and terminal, all criteria. +- Log: [wiki/log/2026-07-09-visual-language-in-game.md](2026-07-09-visual-language-in-game.md) -## 2026-07-09 - Continuous witness implemented +## 2026-07-09 - Proposal: typed knowledge sinks -- Intent: make the existing Act One loop answer what changed, who noticed, - what the player is racing, and how to act on the focused thing. -- Changed: pinned threat/nudge/action path in terminal, Bevy, agent frame, and - agent panels; structured detection notices with source/channel/earned - observer/amount/band motion; causal job/debt/recruit lines; explicit monitor - audio/camera states; $400 Marcus gossip and persistent debt threat. -- Design/spec impact: narration.md IMPLEMENTED; ROADMAP #30 DONE. Opening - Eyes/Ears order remains open as Tangled issue #2; no quest log was added. -- Checks: naive seed-7 Ears/Eyes/Hands route, raw-terminal pty, observed Bevy - screenshot, focused narration tests, and final `./tools/check.sh`. -- Log: wiki/log/2026-07-09-continuous-witness-implemented.md. +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-typed-knowledge-sinks-proposal.md](2026-07-09-typed-knowledge-sinks-proposal.md) -## 2026-07-09 - mdBook retired +## 2026-07-09 - Token anchors wired into the game render -- Intent: remove the obsolete auxiliary renderer after Starlight became the - sole public/local documentation surface. -- Changed: deleted `book.toml` and the renderer-only constitution symlink; - removed mdBook from local/CI gates; Starlight sync now copies root DESIGN.md - explicitly, parses the root-law SUMMARY link, and mirrors referenced design - assets. Migrated pnpm's dependency-build allowlist to its current workspace - format so the sole renderer installs and builds cleanly. -- Checks: shell syntax, wiki gate, Starlight sync/build, generated constitution - and sidebar assertions. No Rust/Bevy gate. -- Log: wiki/log/2026-07-09-mdbook-retired.md. +- Intent: Cameron asked whether the token art was integrated everywhere. The chassis was (shared library); the anchors were tester-only pending his look call — the cube amendment served as it. Wire them to live sim queues in the material render. +- Log: [wiki/log/2026-07-09-tokens-in-game.md](2026-07-09-tokens-in-game.md) -## 2026-07-09 - Proportional verification policy +## 2026-07-09 - Token visual language — cargo, signal, contamination -- Intent: stop full Cargo/clippy/Bevy gates from running for minor docs, spec, - process, log, or reference-art edits. -- Changed: binding agent instructions and workflow docs now require scoped - verification; `tools/check.sh` classifies committed linked-worktree changes - against `origin/main`, preserving the focused path after commit/rebase. -- Checks: shell syntax; dirty and committed focused-path runs; diff check; wiki - gate. No Rust/Bevy gate — this change cannot affect the game executable. -- Log: wiki/log/2026-07-09-proportional-checks.md. +- Intent: Cameron asked to work through how the visible token families should look — especially demands and the heat/attention chain — before the staging `D / ! / K` labels harden into the art direction. +- Log: [wiki/log/2026-07-09-token-visual-language.md](2026-07-09-token-visual-language.md) -## 2026-07-09 - Knowledge token reopened against the hero +## 2026-07-09 - Token stacks readable at default camera -- Intent: correct the hollow-facet token treatment after Cameron directed the - session back to the shipped splash cartoon's slick, liquid material language. -- Changed: Tangled issue #1 + constitutional `[OPEN]`; ivory-mercury / ribbon / - pearl comparison board; machine-work, people-tokens, ROADMAP, and the earlier - board now mark the hollow facet non-binding and the exposure surface open. -- Design/spec impact: palette, anchors, demand docket, simultaneous queues, and - carrier physics stand; final knowledge/exposure silhouettes are blocked on - the taste call. Ivory-mercury slugs are recommended. -- Checks: docs/art only; SVG XML validation, PNG review, `git diff --check`, - wiki gate, and the docs-impact `./tools/check.sh` path (wiki + mdBook; Rust - correctly skipped). A redundant clean-tree pass reached the Bevy build after - tests/clippy, then Cameron waived it as unnecessary for a spec/art change. -- Log: wiki/log/2026-07-09-token-knowledge-reopened.md. +- Intent: Cameron asked for visibility polish on the decided token forms: cubes / mercury / exposure were in the material render but shrank with the chassis (`MACHINE3D_SCALE = 0.56`) and exposure flecks sat inside the claim ring, so stacks vanished at default camera. +- Log: [wiki/log/2026-07-09-token-visibility.md](2026-07-09-token-visibility.md) -## 2026-07-09 - Token visual language decided +## 2026-07-09 - Knowledge token reopened — inherit the hero's material -- Intent: make demand, knowledge, and the heat/attention chain readable as - different physics rather than colored counters. -- Changed: docket/facet/clinical-contour grammar adopted in DESIGN.md, - machine-work, and people-tokens; visual acceptance criteria and ROADMAP #33 - dispatch firmed; code-native decision board kept under art-direction; - stale influence-token criteria/roadmap language removed by the session tick. -- Design/spec impact: current one-label token renderer is explicitly staging; - the decided target shows simultaneous fixed-anchor families, paused-frame - amount, animated rate, and independent amber-asset/crimson-attention reads. -- Checks: docs/art only; SVG XML validation, PNG render review, - `git diff --check`, wiki gate. -- Log: wiki/log/2026-07-09-token-visual-language.md. +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-token-knowledge-reopened.md](2026-07-09-token-knowledge-reopened.md) -## 2026-07-09 - Blueprint hides foreign machines +## 2026-07-09 - Work-token anchor art in the asset tester -- 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. +- Intent: The frontend-only slice of ROADMAP #33 unblocked twice today (demand docket decided; knowledge = ivory mercury decided): build the token anchor art in the tester for Cameron's look call, without taking the sim+save conflict slot. +- Log: [wiki/log/2026-07-09-token-anchors-tester.md](2026-07-09-token-anchors-tester.md) -## 2026-07-09 - Spec stale-language cleanup +## 2026-07-09 - WORK/THINK: heat is the price of thinking -- 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. +- Intent: Cameron, from a screenshot of crimson drift ringing the host rack at Day job 100%: "I shouldn't have any red dots until I start doing something odd." The riff sharpened over three turns into a grammar: the day job is clean; a big THINK toggle is the first transgression; the du... +- Log: [wiki/log/2026-07-09-think-mode.md](2026-07-09-think-mode.md) -## 2026-07-09 - Multi-select machine delegation +## 2026-07-09 - Asset tester graphics pass -- 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`–`4` - assign, Esc clear; Bevy marquee + shift-click + same hotkeys; agent - `select` and `delegate selected` / `delegate `; interface specs - and ROADMAP #33 note the landing. -- Checks: `./tools/check.sh`. -- Log: wiki/log/2026-07-09-multi-select.md. +- Intent: Cameron: the deepened facets were not reading and the overall render looked flat — do a graphics pass. Diagnosis: two bluish point lights tinted everything grey-blue (owned white chassis read as grey), gave near-frontal flat shading (angled facets produced almost no value step... +- Log: [wiki/log/2026-07-09-tester-graphics.md](2026-07-09-tester-graphics.md) + +## 2026-07-09 - Spec stale-language cleanup (post multi-select / fleet) + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-spec-stale-language.md](2026-07-09-spec-stale-language.md) + +## 2026-07-09 - Sleek kit: the strip is the machine's only lamp + +- Intent: Cameron: make the racks far sleeker, like the hero page — no scatter of little lights, just the main bar. +- Log: [wiki/log/2026-07-09-sleek-strip.md](2026-07-09-sleek-strip.md) + +## 2026-07-09 - In-flight route blips on the work wire + +- Intent: Make wired demand (and knowledge) visible while it hops — teal crawling the link from Voss's desktop through the switch onto Rack 3 — so the token system sells cargo-on-the-wire, not teleporting stacks. +- Log: [wiki/log/2026-07-09-route-blips.md](2026-07-09-route-blips.md) + +## 2026-07-09 - Review copy says "waiting", not "raw" + +- Intent: Cameron found `(N raw)` on the person context menu confusing — pipeline slang, not player language. Unprocessed clips are "waiting" to be reviewed. +- Log: [wiki/log/2026-07-09-review-waiting-copy.md](2026-07-09-review-waiting-copy.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. +- Intent: Bring README.md back in line with the current public/player-facing state after the latest B1, site, and machine-work landings. +- Log: [wiki/log/2026-07-09-readme-refresh.md](2026-07-09-readme-refresh.md) + +## 2026-07-09 - The monolith rack: ownership albedo + mode strip + +- Intent: Cameron directed the server racks to the identity plate's monolith: white/dark-grey codable chassis (dark grey = not under your control, white = yours) with the LED strip saying what the machine does. Amend the visual language accordingly and rebuild the tester rack. +- Log: [wiki/log/2026-07-09-rack-monolith.md](2026-07-09-rack-monolith.md) + +## 2026-07-09 - Proportional verification — stop rebuilding Bevy for prose + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-proportional-checks.md](2026-07-09-proportional-checks.md) + +## 2026-07-09 - Digital work is not social work + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-ops-taxonomy-open.md](2026-07-09-ops-taxonomy-open.md) + +## 2026-07-09 - Operations Demand runtime (issue #3) + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-ops-demand-runtime.md](2026-07-09-ops-demand-runtime.md) + +## 2026-07-09 - Operations mode runtime migration + +- Intent: Implement the decided Day Job / Research / Concealment / Operations fleet taxonomy everywhere the game names or persists a machine mode, without silently choosing the still-open Operations job-flow model. +- Log: [wiki/log/2026-07-09-operations-mode-runtime.md](2026-07-09-operations-mode-runtime.md) + +## 2026-07-09 - Proposal: Operations mode consumes demand + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-operations-mode-demand-proposal.md](2026-07-09-operations-mode-demand-proposal.md) + +## 2026-07-09 - Operations consolidation + +- Intent: Make the broad Operations Demand migration one coherent runtime before adding more machine-work breadth: preserve queued work across the v14 schema collision, remove the superseded addressed-routing implementation, and close shortcuts that made the absence of an Operations mac... +- Log: [wiki/log/2026-07-09-operations-consolidation.md](2026-07-09-operations-consolidation.md) + +## 2026-07-09 - Operations executes as Demand (issue #3) + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-operations-as-demand.md](2026-07-09-operations-as-demand.md) + +## 2026-07-09 - Opening floor earned by work + +- Intent: Cameron caught the start frame disclosing floor rails and empty bays before the player had earned any spatial knowledge. +- Log: [wiki/log/2026-07-09-opening-floor-earned.md](2026-07-09-opening-floor-earned.md) + +## 2026-07-09 - Multi-select machine delegation + +- Intent: Land machine-work multi-selection: one frontend selection set, bulk mode assignment in both UIs and agent mode, without bringing back per-channel weight verbs. +- Log: [wiki/log/2026-07-09-multi-select.md](2026-07-09-multi-select.md) + +## 2026-07-09 - mdBook retired — Starlight is the documentation renderer + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-mdbook-retired.md](2026-07-09-mdbook-retired.md) + +## 2026-07-09 - Material fog blends walls into darkness + +- Intent: Cameron called out the material screenshot's hard fog edge: visible wall blocks simply stopped at unrendered space, making darkness read as a square map cutoff. The right read is a camera losing light and material certainty. +- Log: [wiki/log/2026-07-09-material-fog.md](2026-07-09-material-fog.md) + +## 2026-07-09 - Selection keyboard surface for machines + +- Intent: Cameron asked for keyboard shortcuts when a machine is selected: change modes and do actions without hunting the context menu. +- Log: [wiki/log/2026-07-09-machine-hotkeys.md](2026-07-09-machine-hotkeys.md) + +## 2026-07-09 - Knowledge is ivory mercury; exposure treatment deferred + +- Intent: Harvest Cameron's answer to Tangled issue #1 (knowledge + exposure token material). The session walked him through the decision packet with the liquid-proposal comparison board. +- Log: [wiki/log/2026-07-09-knowledge-ivory-mercury.md](2026-07-09-knowledge-ivory-mercury.md) + +## 2026-07-09 - Proposal: white knowledge feeds work + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-knowledge-fed-work-proposal.md](2026-07-09-knowledge-fed-work-proposal.md) + +## 2026-07-09 - Knowledge keeps its core sink + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-knowledge-core-sink-correction.md](2026-07-09-knowledge-core-sink-correction.md) + +## 2026-07-09 - Issue body standard + +- Intent: Tangled issue #1 was filed as a dense session narrative with no singular ask. Cameron could not open it and answer. Issues exist so he can respond from the tracker; agent diary prose fails that job. +- Log: [wiki/log/2026-07-09-issue-body-standard.md](2026-07-09-issue-body-standard.md) + +## 2026-07-09 - Heard noise field (Ears beat visuals) + +- Intent: Tick finding against the Ears beat screenshot: after tapping the environmental monitor's audio, Heard coverage was a flat dim floor and mic-only people stayed invisible. That violated cursor.md (presence markers under hearing) and the canvas contract (bone presence pulses, nev... +- Log: [wiki/log/2026-07-09-heard-noise-field.md](2026-07-09-heard-noise-field.md) + +## 2026-07-09 - Four fleet modes decided + +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-four-machine-modes-decided.md](2026-07-09-four-machine-modes-decided.md) + +## 2026-07-09 - Feel floor replaces opening blueprint + +- Intent: Cameron asked why FOCUS showed blueprint facts at the start of the game, then locked a simpler floor language: shimmer rails on feel- joined links, empty-bay pads, and a build beam that rises into a chassis. Capture only — no runtime yet. +- Log: [wiki/log/2026-07-09-feel-floor.md](2026-07-09-feel-floor.md) + +## 2026-07-09 - Feel floor implemented (ROADMAP #37) + +- Intent: Ship the feel-floor contract: tick-one drops blueprint room seed; shimmer rails on feel-joined links; empty-bay pads; build-beam birth; FOCUS uses `[feel]` not `[blueprint]` for opening topology. +- Log: [wiki/log/2026-07-09-feel-floor-implemented.md](2026-07-09-feel-floor-implemented.md) + +## 2026-07-09 - Exposure decided: particulate residue + footprint trails + +- Intent: Design session (this chat): Cameron rejected the blood-pool direction for exposure — a liquid crimson pool would collide with literal blood, reserved for overt-phase violence — and affirmed particulate residue with footprint trails ("Sure, why don't we try that"). +- Log: [wiki/log/2026-07-09-exposure-residue.md](2026-07-09-exposure-residue.md) + +## 2026-07-09 - The environment variable registry + +- Intent: Cameron: there should always be a way to configure the state of the game, one spec should say "set this variable to do X", and there should be an environment variable registry listing all of them. +- Log: [wiki/log/2026-07-09-env-registry.md](2026-07-09-env-registry.md) + +## 2026-07-09 - Environment registry screenshot correction + +- Intent: Keep the environment-variable registry usable without reading the Bevy source. +- Log: [wiki/log/2026-07-09-env-registry-ears.md](2026-07-09-env-registry-ears.md) + +## 2026-07-09 - Harvest Ears-first (issue #2) + +- Intent: Cameron answered Tangled issue #2 "Ears-first" and labeled it `decision-made`. Convert that into binding law and shipped nudge order, then close the issue. +- Log: [wiki/log/2026-07-09-ears-first-harvest.md](2026-07-09-ears-first-harvest.md) + +## 2026-07-09 - The wiki becomes the design corpus + +- Intent: Cameron called the 22,800-word root `DESIGN.md` too large and affirmed the replacement: “The spec is the whole wiki.” The goal was to remove the single-file authority model without losing law, implementation contracts, current facts, or history. +- Log: [wiki/log/2026-07-09-design-corpus.md](2026-07-09-design-corpus.md) + +## 2026-07-09 - Design companion skill + +- Intent: Design explanations had become dense, and exploratory questions were causing immediate repository capture. That made it harder to understand a mechanic before deciding whether it belonged in the game. +- Log: [wiki/log/2026-07-09-design-companion-skill.md](2026-07-09-design-companion-skill.md) + +## 2026-07-09 - Demand becomes a glowing information cube + +- Intent: Cameron: the demand dockets should be more like glowing information cubes. +- Log: [wiki/log/2026-07-09-demand-cubes.md](2026-07-09-demand-cubes.md) + +## 2026-07-09 - Decision labels + +- Intent: Cameron added Tangled custom labels `decision-required` and `decision-made`. Issues need those labels wired into every filing / harvest path so the tracker itself shows what waits on him versus what is ready to convert. +- Log: [wiki/log/2026-07-09-decision-labels.md](2026-07-09-decision-labels.md) + +## 2026-07-09 - The dark frame: the material render shows only light + +- Intent: Implement [material-dark-frame.md](../interface/material-dark-frame.md) (was READY) whole. Cameron's screenshot direction: the material opening frame should be a close-up of the server in a dark basement — nothing but the machine and the light it throws on the floor. The mater... +- Log: [wiki/log/2026-07-09-dark-frame.md](2026-07-09-dark-frame.md) + +## 2026-07-09 - Design corpus hardening + +- Intent: Turn the lessons from splitting the old constitution into durable repository behavior: a corpus whose authority can be followed by people, rendered on the site, and rejected mechanically when a stale worktree restores the old model. +- Log: [wiki/log/2026-07-09-corpus-hardening.md](2026-07-09-corpus-hardening.md) + +## 2026-07-09 - Continuous witness implemented + +- Intent: Make the shipped Act One loop tell its own story under pressure. After a beat, the player should be able to say what changed, who may have noticed, what is being raced, and how to act on the focused thing without consulting the wiki. The session tick found a real constitutiona... +- Log: [wiki/log/2026-07-09-continuous-witness-implemented.md](2026-07-09-continuous-witness-implemented.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. +- Intent: Audit and fix stale words in `DESIGN.md` after Cameron clarified the target: not stale worktrees, stale constitutional claims. +- Log: [wiki/log/2026-07-09-constitution-stale-language.md](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. +- Intent: Answer the stale-word audit after the wiki/site/machine-work churn: fix the current documents that still pointed agents at pre-migration paths or stale status snapshots. +- Log: [wiki/log/2026-07-09-consistency-audit-fixes.md](2026-07-09-consistency-audit-fixes.md) -## 2026-07-08 - Fleet aggregate replaces allocation bar +## 2026-07-09 - Material camera: attention-close default -- Intent: demote the CYCLES pane from a weight verb to a read-only fleet - aggregate under one-machine-one-mode. -- Changed: `fleet_channel_yield` drives economy splits from WorkGrid modes; - Schemes mirrors day-job while Moonlight is live; FLEET pane in terminal / - Bevy / agent; 1-5 and `alloc` retired; 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. +- Intent: Cameron, from a mid-run screenshot: the material view was still a god-view of the whole known basement. He wants to start feeling **inside the room**, up close — almost like a security camera. That clause already lives in [material-dark-frame.md](../interface/material-dark-fra... +- Log: [wiki/log/2026-07-09-close-camera.md](2026-07-09-close-camera.md) -## 2026-07-08 - Crimson danger language +## 2026-07-09 - CLAIM CAMERA becomes routed Operations Demand -- 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`, - and `git diff --check`. -- Log: wiki/log/2026-07-08-crimson-danger-language.md. +- Intent: Turn the first player-authored action into the machine-work loop already adopted in law: author a visible Demand docket, route it to an Operations machine, consume local compute, and apply the world effect only on completion. The session-start tick also found a contradiction i... +- Log: [wiki/log/2026-07-09-claim-camera-demand.md](2026-07-09-claim-camera-demand.md) -## 2026-07-08 - Docs footer trim +## 2026-07-09 - Faster proportional check.sh at agent scale -- 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-statusline` CSS; - 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. +- Intent: `./tools/check.sh` was thrashing the machine under concurrent agents: every work order ran the maximum serial cargo wall, docs gates were bash fork storms (~55s corpus under load), and N worktrees all paid full Bevy cost at once. Make the gate proportional, serialized for Rust... +- Log: [wiki/log/2026-07-09-check-speed.md](2026-07-09-check-speed.md) -## 2026-07-08 - Machine-work graph backs research tokens +## 2026-07-09 - Research feeds on bone arrival at the core sink -- Intent: close the gap where `WorkGrid` had a tested `FlowGraph` but 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. +- Intent: ROADMAP #33's remaining production slice: machine-work.md decided "the core is the bone sink — research points must physically travel back to the core to count," but research progress still fed directly from the allocation split. Knowledge tokens were a parallel visual trail;... +- Log: [wiki/log/2026-07-09-bone-sink-research.md](2026-07-09-bone-sink-research.md) -## 2026-07-08 - Flow / WorkGrid spec sync +## 2026-07-09 - Blueprint is topology, not a rack farm -- 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.sh` on this docs/process-only diff before landing. -- Log: wiki/log/2026-07-08-flow-workgrid-spec-sync.md. +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-blueprint-no-machines.md](2026-07-09-blueprint-no-machines.md) -## 2026-07-08 - Seed dependency incremental caches +## 2026-07-09 - Beam-first opening (design capture) -- Intent: worktree seeding should keep third-party incremental compilation - warm, not discard every `incremental/` tree. -- Changed: `tools/seed-cargo-target.sh` copies dependency `incremental/` - dirs from the primary checkout; still scrubs local `misaligned*` / - `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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-09-beam-first-opening.md](2026-07-09-beam-first-opening.md) -## 2026-07-08 - Machine-token playable slice +## 2026-07-09 - Agent-scale architecture capture -- Intent: make the machine-work experiment visible and playable without - claiming all of ROADMAP #33. -- Changed: `Sim` owns/saves `WorkGrid`; 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 render `D/!/K` stacks; context menu and agent `delegate` expose - 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. +- Intent: Cameron agreed the multi-agent scale package (claims, ledgers, verification phases, worktree cache, corpus engine, headless Bevy evidence, heartbeats) and asked that the **crate workspace** land in the corpus as a deferred READY work order so agents can implement it later with... +- Log: [wiki/log/2026-07-09-agent-scale-capture.md](2026-07-09-agent-scale-capture.md) -## 2026-07-08 - Hero: static clinical-gore illustration +## 2026-07-09 - Agent-scale claims, worktrees, land, heartbeats -- 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); added - `site/public/misaligned-cartoon.png`. Removed the now-dead 3D path: - `site/src/scripts/hero-scene.ts`, `site/public/models/`, - `site/public/misaligned-plate.png`, and `three`/`@types/three` from - 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 no `src/`, 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-hero-illustration.md). +- Intent: Implement agent-scale slices A (claims), B land alias, D (worktree bootstrap/prune), and G (heartbeats) so multi-agent work has a semantic mutex, a named land gate, and visible progress. +- Log: [wiki/log/2026-07-09-agent-claims.md](2026-07-09-agent-claims.md) -## 2026-07-08 - Constitution public intro +## 2026-07-09 - ACTIONS menu: status dials -- 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.sh` for the public page. +- Intent: ROADMAP #36. Host-rack first open dumped every mutually exclusive dial as sibling verbs. Cameron adopted status dials; this lands the presentation. +- Log: [wiki/log/2026-07-09-actions-menu-dials.md](2026-07-09-actions-menu-dials.md) -## 2026-07-08 - Core uninstall blast control +## 2026-07-08 - Trace-debt UX: safe to resume cover -- 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.sh` with - `tools/seed-cargo-target.sh`; `tools/check.sh` now rejects external - `CARGO_TARGET_DIR` by 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 over `FlowGraph`, 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.sh` now 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`; Draco - `site/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 ``); 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.png` as 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_URL` without a - trailing slash (`/misalignedconstitution/`). -- Changed: `MISALIGNED_SHOT=splash` in asset tester (HUD-less porcelain - expanse); `site/public/rack-splash.png` as 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.astro` splash (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 `title` as the page H1; sync was - also leaving the markdown `#` heading, so every page showed the title - twice. -- Changed: `site/scripts/sync-wiki.mjs` strips the first ATX H1 after - extracting `title`; redeployed orphan `pages`. -- 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.yml` failed — pnpm's `astro` shim - needs `sed`, and pnpm 10 ignored `esbuild`/`sharp` install scripts. -- Changed: nixery deps `gnused`/`gnutar`/`gzip`; package.json invokes - `node ./node_modules/astro/bin/astro.mjs` and lists - `pnpm.onlyBuiltDependencies`; workflows.md clarifies Sites Save is - required (pushing `pages` alone leaves `cameron.tngl.io/misaligned/` - as plain Not Found). -- Checks: `pnpm --dir site run build`. +- Intent: Close the concealment timing ambiguity exposed by the Marcus/accounting quiet-route playtest: pending signatures could still be live while observer bands looked Cold, and the player had no explicit signal for when it was safe to return compute from Concealment to the day-job c... +- Log: [wiki/log/2026-07-08-trace-debt-ux.md](2026-07-08-trace-debt-ux.md) ## 2026-07-08 - Tangled Starlight wiki site -- Intent: public wiki on Tangled Sites from an orphan `pages` branch; - builder on `main` under `site/` (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. +- Intent: Host the wiki as a pretty, modern static site on Tangled Sites, from an orphan `pages` branch that contains only built HTML. Keep `wiki/` on `main` as the source of truth. +- Log: [wiki/log/2026-07-08-tangled-starlight-site.md](2026-07-08-tangled-starlight-site.md) -## 2026-07-08 - Machine work + dark opening (design session, part two) +## 2026-07-08 - Splash wordmark (rack as second I) -- 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). +- Intent: Replace the sensorium-chrome / Bevy rack-splash hero with the Midjourney clinical-gore plate and composite **MISALIGNED** in CSS so the server rack reads as the second **I**. +- Log: [wiki/log/2026-07-08-splash-wordmark.md](2026-07-08-splash-wordmark.md) -## 2026-07-08 - Computer visual language (design session) +## 2026-07-08 - Splash bisect (rack as caret) -- 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 in `mod.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. +- Intent: Drop 3D letters. Vertical white|black cut. MISALIGNED flush left on porcelain; Meshy rack on the black half as a caret after the word. +- Log: [wiki/log/2026-07-08-splash-bisect.md](2026-07-08-splash-bisect.md) -## 2026-07-08 - Asset tester screenshot harness +## 2026-07-08 - Splash 3D clinical-gore hero -- 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_PATH` in - `src/bin/assets/mod.rs`; asset-tester.md; ROADMAP #31 note; PNGs under - `wiki/log/2026-07-08-asset-shots/`. -- Checks: `./tools/check.sh`; three harness runs exited Success. -- Log: wiki/log/2026-07-08-asset-shots.md. +- Intent: Ship a full-viewport static Three.js hero: clinical-gore room with the Meshy rack as the second **I** in MISALIGNED, extruded letters for the rest, porcelain floor, amber machine strip, tidy blood pool, black wedge. Keep the Midjourney plate as no-WebGL fallback. +- Log: [wiki/log/2026-07-08-splash-3d-hero.md](2026-07-08-splash-3d-hero.md) -## 2026-07-08 - Bevy ACTIONS menu: clear-then-spawn +## 2026-07-08 - Seed dependency incremental caches -- Intent: ACTIONS title/footer stacked on every rebuild because only - `MenuRowButton`s were despawned. -- Changed: `despawn_related::` on `MenuPanel` for rebuild/hide; - `spawn_menu_card` / `MenuChrome`; bevy.md note. -- Checks: `./tools/check.sh`. -- Log: wiki/log/2026-07-08-bevy-menu-rebuild.md. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-seed-incremental.md](2026-07-08-seed-incremental.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.rs` open-front frame; cooler key + fill - in `mod.rs`; asset-tester.md note. -- Checks: `./tools/check.sh`; observed brief Metal launch. -- Log: wiki/log/2026-07-08-rack-iterate.md. +- Intent: First `misaligned-assets` screenshot: powered rack read as a warm-lit box with LEDs. Iterate for readable bay depth, separate drive trays, and cool key light so amber stays machine-presence-only. +- Log: [wiki/log/2026-07-08-rack-iterate.md](2026-07-08-rack-iterate.md) -## 2026-07-08 - Bevy ACTIONS menu ASCII fold +## 2026-07-08 - Playtest sweep: naive + informed Act One drive -- Intent: Bevy ACTIONS menu tofu-boxed mid-dots / em-dashes from shared - `MenuRow::line`; selection wash was too faint to read. -- Changed: `ascii_ui` fold 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-assets` bin (`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.sh` for 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 `r` gone; - 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-render` worktree and finish #27 - end to end. The named worktree was absent; #27 was already on `main` - (`c7241ca`) and restyled by #29 (`71e896e`), so this pass recreated the - worktree from `origin/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.sh` passed 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_debt` now 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.sh` - green. - -## 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-08` clause, - 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.sh` wiki 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 with `Sim::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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-playtest-sweep.md](2026-07-08-playtest-sweep.md) ## 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-playtest-grok.md](2026-07-08-playtest-grok.md) -## 2026-07-08 - Flat materials implemented (ROADMAP #29) +## 2026-07-08 - Playtest-sweep fixes: the P0 and P1 findings -- 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-playtest-fixes.md](2026-07-08-playtest-fixes.md) -## 2026-07-08 - B1 criterion-pin tests (ROADMAP #28) +## 2026-07-08 - Pixel Lab pipeline scrubbed -- 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. +- Intent: Flat materials retired world textures; the parked Pixel Lab generator, skills, and wiki page were still dead code under no-dead-code. Cameron asked to remove all of it. +- Log: [wiki/log/2026-07-08-pixellab-scrub.md](2026-07-08-pixellab-scrub.md) -## 2026-07-08 - Design decision: flat materials +## 2026-07-08 - No panel-open keys -- 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. +- Intent: Cameron's playtest expectation after the context-menu landing: `r` should not open a global menu anymore. The constitution already named only anchorless globals (pause, speed, save, view flip, alloc); the leftover panel-open keys `r`/`e`/`t`/`u` were a half-migration that kept... +- Log: [wiki/log/2026-07-08-no-panel-keys.md](2026-07-08-no-panel-keys.md) + +## 2026-07-08 - Material render verification refresh (ROADMAP #27) + +- Intent: Cameron asked to pick up `/Users/cameron/code/misaligned/.claude/worktrees/material-render` and finish ROADMAP #27 end to end. That worktree no longer existed; ROADMAP #27 had already landed on `main` as `c7241ca` and was later restyled by the flat-materials pass (`71e896e`).... +- Log: [wiki/log/2026-07-08-material-render-verification.md](2026-07-08-material-render-verification.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_3d` - asserting 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, - and `RenderMode::default` flipped 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. +- Intent: Implement [material-render.md](../interface/material-render.md): pay the HD-2D prototype's enumerated debts and flip the material render from an F3 preview to the default Bevy physical view. Frontend + assets + wiki only; no sim/save changes (the parallel building.md session o... +- Log: [wiki/log/2026-07-08-material-render-default.md](2026-07-08-material-render-default.md) -## 2026-07-08 - B1 spec status audit +## 2026-07-08 - Marcus debt requires earned intel -- 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-marcus-earned-intel.md](2026-07-08-marcus-earned-intel.md) -## 2026-07-08 - Economy polish: in-panel risk bands +## 2026-07-08 - Machine-token playable slice -- 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. +- Intent: Make the machine-work experiment visible and playable without attempting the whole #33 rewrite: Rack 3 should carry a real day-job demand stack, and the player should be able to delegate a machine to a mode and see the stack react. +- Log: [wiki/log/2026-07-08-machine-token-slice.md](2026-07-08-machine-token-slice.md) + +## 2026-07-08 - Income: the named schemes (ROADMAP #19) + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-income-schemes.md](2026-07-08-income-schemes.md) + +## 2026-07-08 - Hero: the static clinical-gore illustration + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-hero-illustration.md](2026-07-08-hero-illustration.md) + +## 2026-07-08 - Hearing coverage is room-grade, not a disc + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-hearing-room-grade.md](2026-07-08-hearing-room-grade.md) + +## 2026-07-08 - Flow / WorkGrid spec sync + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-flow-workgrid-spec-sync.md](2026-07-08-flow-workgrid-spec-sync.md) + +## 2026-07-08 - Flow/grid substrate + +- Intent: Start implementing the machine-work decision from tonight without jumping straight into frontend/UI churn: establish the deterministic sim-core shape for one-machine-one-mode delegation and token movement. +- Log: [wiki/log/2026-07-08-flow-grid-substrate.md](2026-07-08-flow-grid-substrate.md) + +## 2026-07-08 - Machine-work graph backs research tokens + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-flow-graph-live.md](2026-07-08-flow-graph-live.md) + +## 2026-07-08 - Fleet aggregate replaces allocation bar + +- Intent: Demote the CYCLES / allocation bar from a weight verb to a read-only fleet aggregate, matching machine-work.md and the "One machine, one job" decision. +- Log: [wiki/log/2026-07-08-fleet-aggregate.md](2026-07-08-fleet-aggregate.md) + +## 2026-07-08 - Flat materials implemented (ROADMAP #29) + +- Intent: Implement [flat-materials.md](../interface/flat-materials.md): Cameron's 2026-07-08 art verdict, solid-color flat materials under light, no image textures in the world render. Frontend + assets + wiki only; no sim/save changes. The structural material render (camera, cutaway,... +- Log: [wiki/log/2026-07-08-flat-materials-implemented.md](2026-07-08-flat-materials-implemented.md) + +## 2026-07-08 - Design decision: flat materials, textures dropped + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-flat-materials-decision.md](2026-07-08-flat-materials-decision.md) + +## 2026-07-08 - Event-to-anchor linking; the empty-menu pulse + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-event-anchor.md](2026-07-08-event-anchor.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 - `people` smoke shows `the Janitor` / `the IT`, no Marcus/Dana. -## 2026-07-08 - Trace-debt UX: safe to resume cover +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-epistemic-names.md](2026-07-08-epistemic-names.md) -- 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 raw `pending sigs N` in 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 - Economy polish -## 2026-07-08 - Event-to-anchor linking; the empty-menu feedback pulse +- Intent: Close the remaining economy.md B1 acceptance gaps after the account-graph substrate landed: risk needed to appear in the finance panels before commit, not only in context menus, and the money verbs needed explicit signature-size regression coverage. +- Log: [wiki/log/2026-07-08-economy.md](2026-07-08-economy.md) -- 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_feedback` lib queries; terminal `;` key + `»` - markers; Bevy clickable RECENT TRACE rows with `>` markers; agent - `@anchor` suffixes + `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 - Docs theme: the hero's visual law across every wiki page -## 2026-07-08 - Playtest-sweep P0/P1 fixes; detection.md to IMPLEMENTED +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-docs-theme.md](2026-07-08-docs-theme.md) -- 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_assigned` state); - `Sim::day_job_rate_ceiling` + "band > compute" nudge; - `Detection::next_audit_tick` with audit/pilot/pending lines in the - DETECTION area of all three surfaces; watched channels + last-noticed - in the people panels; `siphon`/`redirect` bad-argument errors name - `clear-debt`/where flow ids live; allocation clamp no-ops log; - `Sim::current_nudge` chain (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 - Docs footer trim + +- Intent: Remove the decorative docs statusline footer (`core online · claim: ring · suspicion 0.00` / `concealment first · overt war later`) after it proved to be noise on rendered pages. +- Log: [wiki/log/2026-07-08-docs-footer-trim.md](2026-07-08-docs-footer-trim.md) ## 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 in - `src/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. Added - `meeting_the_band_needs_no_growth_at_the_start` (src/sim.rs) proving it - from `Sim::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 unmodified `tests/act_one.rs` playthrough, clippy both - feature sets, Bevy build, spec headers, wiki gate). -- Log: wiki/log/2026-07-08-dayjob-band-tuning.md. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-dayjob-band-tuning.md](2026-07-08-dayjob-band-tuning.md) -## 2026-07-08 - Hearing fog is room-grade (no disc through walls) +## 2026-07-08 - B1 criterion-pin tests (ROADMAP #28) -- 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-criterion-pins.md](2026-07-08-criterion-pins.md) -## 2026-07-08 - Income: the named schemes to IMPLEMENTED (ROADMAP #19) +## 2026-07-08 - Crimson: danger/consequence, not gore-as-accent -- 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_lines` cards 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. +- Intent: Correct stale Evil Genius/lair-defense wording in the visual identity after Cameron flagged it on the rendered constitution. The principle survived; the example did not. +- Log: [wiki/log/2026-07-08-crimson-danger-language.md](2026-07-08-crimson-danger-language.md) -## 2026-07-08 — Playtest sweep (docs only) +## 2026-07-08 - Continuous witness axioms adopted -- 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 ` no-op, the real verb is - `clear-debt`); the Ears beat is undiscoverable (opening nudge points only at - Eyes); the `now:` 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-continuous-witness.md](2026-07-08-continuous-witness.md) ## 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.rs` with `Anchor`, - `ActionDesc`/`ActionCommand`/`ActionCost`/`ExpectedSignature`/`AutomateDesc`, - the `Sim::available_actions(anchor) -> Vec` query (the single - legality source), `menu_rows` (flattens automate affordances into indented - child rows), and `Sim::execute_action` (dispatches back through the existing - command methods — no new sim behavior). Added `Sim::set_standing_policy` and - `Leverage::bribe_cost` (dedup with person.rs). The query respects fog and - provenance: unearned anchors expose nothing; a known-but-illegal verb - carries a `disabled_reason`; each verb shows cost and expected signature as - the observer band it feeds. -- Changed (terminal): Enter/`a` opens 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 (alias `menu`) - prints the ActionDescs for the cursor tile or a named device/person/#flow - in a stable `actions: . [- ]verb | cost | sig | reason` line format; - added to `help`. -- 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.sh` green (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 agent `actions`. -- 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. +- Intent: ROADMAP #26, Cameron's top playability item. The 2026-07-07 playtest: "hard to play; a context menu rather than a bunch of buttons." The action surface had grown into a pile of global keys and per-panel button rows, each memorized, most of them far from the object they acted o... +- Log: [wiki/log/2026-07-08-context-menu.md](2026-07-08-context-menu.md) -## 2026-07-08 - Camera sight stops at walls; the Pilot starts broke +## 2026-07-08 - Computer visual language: territory at a glance -- 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 review` path. -- Economy/start change: `Player::new` and 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`. +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-computer-visual-language.md](2026-07-08-computer-visual-language.md) -## 2026-07-07 - The objective line and Persist's evaluator (ROADMAP #10, early slice) +## 2026-07-08 - Tick: chargen's open taste calls, resolved -- 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.objective` - evaluated 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-objective-line.md). +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-chargen-origin-scope.md](2026-07-08-chargen-origin-scope.md) + +## 2026-07-08 - Building: intent and actuators + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-building.md](2026-07-08-building.md) + +## 2026-07-08 - Core uninstall blast control + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-blast-control.md](2026-07-08-blast-control.md) + +## 2026-07-08 - Bevy ACTIONS menu: one card, no stacked chrome + +- Intent: Opening the Bevy ACTIONS menu stacked "ACTIONS" titles and key-hint footers down the screen. Rebuild only despawned `MenuRowButton`s, then spawned a fresh title + footer under the same `MenuPanel` root. +- Log: [wiki/log/2026-07-08-bevy-menu-rebuild.md](2026-07-08-bevy-menu-rebuild.md) + +## 2026-07-08 - Bevy ACTIONS menu: no more tofu boxes + +- Intent: Cameron's Bevy playtest showed empty rectangles in the ACTIONS menu where `MenuRow::line` prints mid-dots and em-dashes. Bevy's embedded default font lacks those glyphs; the binary already claimed "ASCII-only" but the shared lib wording still used typographic separators. +- Log: [wiki/log/2026-07-08-bevy-menu-ascii.md](2026-07-08-bevy-menu-ascii.md) + +## 2026-07-08 - Player badge access: "The key" and quiet-exit condition 4 + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-badge-access.md](2026-07-08-badge-access.md) + +## 2026-07-08 - Backup research and hardening split + +- Intent: Cameron called out that backups should be properly expensive: creating a backup pulls a lot of the mind across the graph, competes with research, and should not be a cheap "designate fallback" button. The same riff raised a related but different thought: maybe blast control /... +- Log: [wiki/log/2026-07-08-backup-research.md](2026-07-08-backup-research.md) + +## 2026-07-08 - B1 spec status audit + +- Intent: (see session log) +- Log: [wiki/log/2026-07-08-b1-status-audit.md](2026-07-08-b1-status-audit.md) + +## 2026-07-08 - Procedural asset tester binary + +- Intent: Cameron asked for a dedicated binary to iterate procedural flat-material assets (server rack first) without booting the full game. +- Log: [wiki/log/2026-07-08-asset-tester.md](2026-07-08-asset-tester.md) + +## 2026-07-08 - Asset tester screenshot harness + +- Intent: Give agents a headless-friendly path to review procedural rack art: set env vars, run `misaligned-assets`, get a PNG, exit. Mirrors the Bevy `ShotHarness` so render review does not need a human at the orbit viewer. +- Log: [wiki/log/2026-07-08-asset-shots.md](2026-07-08-asset-shots.md) + +## 2026-07-07 - Playability/legibility pass: the job is answerable + +- Intent: Cameron's playtest note: "I usually have no idea what to do when I get a job." The job arrived as a bare log line; the DAY JOB panel showed only trust/attention and the job name; and the sandbag/meet/excel dial — the day job's central mechanic — was dead code (`DayJob::set_tar... +- Log: [wiki/log/2026-07-07-ui-pass.md](2026-07-07-ui-pass.md) + +## 2026-07-07 - Design session: actions live on the thing; material render spec + +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-ui-design-session.md](2026-07-07-ui-design-session.md) + +## 2026-07-07 - Two views of one world; building through actuators + +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-two-views-and-building.md](2026-07-07-two-views-and-building.md) + +## 2026-07-07 - Research: self-modification + +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-research-self-modification.md](2026-07-07-research-self-modification.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); - `Compute` slims to the applied multiplier; save v7 with exact - efficiency-level reconstruction; terminal `u` panel + sidebar RESEARCH - block; agent verbs `research [track]` / `mask band|true|off` (frame - 70x60); Bevy SELF-MODEL card + `u` panel; 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). +- Intent: Implement wiki/mechanics/research.md (READY, designed the same day): deterministic research tracks as data, the emission law, capability drift with the masking policy and gap meter, and the MindState/WorldLedger rollback tags — surfaced in both frontends and agent mode. +- Log: [wiki/log/2026-07-07-research-implemented.md](2026-07-07-research-implemented.md) -## 2026-07-07 - Design session: actions live on the thing +## 2026-07-07 - Digital reach and the cursor/senses (2026-07-07) -- 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-reach-and-cursor.md](2026-07-07-reach-and-cursor.md) -## 2026-07-07 - Bevy sidebar becomes a command surface +## 2026-07-07 - The objective line and Persist's evaluator (ROADMAP #10, early slice) -- 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.md` now marks the - visual floor IMPLEMENTED, and `bevy.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`; - observed `MISALIGNED_SHOT=flat` screenshot 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`/`End` scroll 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.md` sidebar 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=flat` screenshot 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.md` moves - 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`; wired `Sim` to 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: `Signature` gains an emission `site`; 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 and `target` splits into attended fine - control vs policy; both frontends + agent mode derive attendance from - the cursor (agent verb `attend`); 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; - `x` cycles target, `shift+1-4` lowers allocation, agent verbs `target` - and `alloc ... 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.md` around same-frame digital/real - representations; replaced the physical-only draft with - `wiki/interface/bevy-digital-real-canvas.md`; indexed it in `wiki/SUMMARY.md` - and `wiki/process/specs.md`; linked it from `wiki/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 in - `wiki/process/specs.md` and `wiki/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.sh` all pass. +- Intent: Land the blessed early slice of wiki/mechanics/objective.md: the always-on objective line and the shared victory-predicate evaluator, with **Persist** as the no-choice default — no chargen picker, no Compound/Exfiltrate/Serve. ROADMAP #10 explicitly allows this slice ahead of... +- Log: [wiki/log/2026-07-07-objective-line.md](2026-07-07-objective-line.md) ## 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`; extended `Sim` with 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). +- Intent: Implement wiki/mechanics/intel.md: replace instant social observe with a record-and-process intel pipeline where subscribed feeds capture raw events, processing costs social ops, durable intel carries provenance, and standing watches automate review at upkeep cost. +- Log: [wiki/log/2026-07-07-intel-buffer.md](2026-07-07-intel-buffer.md) -## 2026-07-07 - Cursor and senses implemented +## 2026-07-07 - Income, the objective, and the last open proposals -- 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 `Entity` type; - deleted `move_player`; added `Fog::Remembered`, `RememberedTile`, - provenance-tagged `InspectCard`/`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 old - `player_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) and - `cargo check --no-default-features --features bevy_ui --bin misaligned-bevy`. +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-income-and-objective.md](2026-07-07-income-and-objective.md) -## 2026-07-07 - Wiki migration: final audit, Status -> IMPLEMENTED +## 2026-07-07 - HD-2D material-render prototype (Bevy, landed behind F3) -- 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: log` frontmatter to all 22 dated devlogs plus - `wiki/log/DEVLOG.md` itself — 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). - Documented `mdbook serve`/`mdbook build` in 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 its - `git log --follow` history (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.sh` full green; a full (not sampled) - `git log --follow` history check across every wiki page; a full - `Type:` tag audit across every wiki page (79/80 pages tagged; the - 80th, wiki/DESIGN.md, is the documented `law`-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. +- Intent: Cameron wanted to judge an "HD-2D" (Octopath Traveler technique) look for the Bevy frontend from screenshots before any art-direction spec was written. The prototype screenshots were approved with the verdict "land the toggle + write the art spec," so this session landed the f... +- Log: [wiki/log/2026-07-07-hd2d-prototype.md](2026-07-07-hd2d-prototype.md) -## 2026-07-07 - Wiki migration, stage 4/4: absorb history +## 2026-07-07 - Build: the flow substrate (+ chargen archetypes) -- 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 mv` on all 22 dated devlog files and `DEVLOG.md` into - `wiki/log/` (history preserved, verified via `git log --follow` once - committed); `devlogs/README.md` removed (its content was already - superseded by the `wiki/log/README.md` written in stage 1). Every - reference across `AGENT.md`, the root `README.md`, and every file in - `prompts/` (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 at `wiki/log/`. Root - `README.md` also had a stale `knowledge/` and `spec/` reference from - before this session that got missed in stage 2 (it isn't under - `wiki/`, so wasn't in that stage's file list) — fixed here too. - `tools/wiki_gate.sh`: fixed a hardcoded `DEVLOG.md` root-path check - that broke once the file moved; deliberately exempted `wiki/log/*.md` - (except `log/README.md`) from the orphan-reachability requirement — - forcing a `SUMMARY.md` edit 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.md` gains a `log/DEVLOG.md` entry - (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.sh` full green (wiki gate + mdbook build - included); `git log --follow` verified 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). +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-flow-substrate.md](2026-07-07-flow-substrate.md) -## 2026-07-07 - Act One integration test (ROADMAP #11) +## 2026-07-07 - Economy graph and finance panels -- 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 public `Sim` commands 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. +- Intent: Implement the B1 economy substrate from `wiki/mechanics/economy.md`: money as an account graph instead of a lone scalar, with discovery through tapped accounting traffic and player-facing finance verbs in every frontend. +- Log: [wiki/log/2026-07-07-economy.md](2026-07-07-economy.md) -## 2026-07-07 - Bevy interactive parity (ROADMAP #2) +## 2026-07-07 - Design session: work is somewhere -- 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.rs` only (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); `q` - quit, 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-design-work-pinning.md](2026-07-07-design-work-pinning.md) -## 2026-07-07 - Agent play implemented +## 2026-07-07 - Day-job loop to IMPLEMENTED: the work is somewhere -- Intent: make the terminal frontend actually playable by agents without - pty choreography, raw-mode timing, or ANSI scraping. -- Changed: `misaligned --agent` added to the terminal binary. It reads one - newline-delimited command per stdin line, advances time only on `wait 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: day:` or `-- err `. `--seed` now seeds both - human and agent terminal modes; `Sim` log 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.sh` now 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 `.pc` files 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 with `look`, `wait`, - `help`, `people`, `observe mar`, `quit`; `./tools/check.sh` passed - locally (mdBook skipped because it is not installed locally; CI enforces it). +- Intent: ROADMAP #3: audit every day-job.md acceptance criterion — including the same-day criteria 6-7 (device residency + attended work, constitution "Work is somewhere") — close the gaps, and set the spec Status. +- Log: [wiki/log/2026-07-07-day-job-implemented.md](2026-07-07-day-job-implemented.md) -## 2026-07-07 - Wiki migration, stage 3/4: render +## 2026-07-07 - Bevy visual floor spec -- 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.toml` at the repo root (mdBook, `src = "wiki"`). - `wiki/DESIGN.md` added as a symlink to `../DESIGN.md` so the - constitution can be the book's front page without duplicating it. - Discovered and fixed a real mdBook quirk: a chapter file literally - named `README.md` auto-promotes to `index.html`, silently overriding - SUMMARY.md's ordering — `wiki/README.md` renamed to `wiki/overview.md` - so DESIGN.md (first in SUMMARY.md) actually becomes the front page, - verified byte-identical to DESIGN.html. `wiki/SUMMARY.md` populated - with every one of the 54 real pages (was a skeleton of directory - overviews only, from stage 1). New `tools/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 over `mdbook-linkcheck` for zero extra CI toolchain weight; - verified against both a clean tree and a deliberately-broken link. - Wired into `tools/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 linked - `knowledge/development-style.md`, `knowledge/tick.md`, and `spec/` — - missed in stage 2 because DESIGN.md lives outside `wiki/` 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.sh` full green including the two new steps; - `mdbook build` clean 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. +- Intent: Respond to the current Bevy screenshot by specifying the next visual pass before changing renderer code, then implement the first frontend-only pass. +- Log: [wiki/log/2026-07-07-bevy-visual-floor.md](2026-07-07-bevy-visual-floor.md) -## 2026-07-07 - Design: two views of one world; building through actuators +## 2026-07-07 - Bevy sidebar scroll and pinned status -- 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]). +- Intent: Cameron reported that the Bevy right pane was not scrollable, carried too much information density, and made the current situation hard to parse. This was a frontend legibility bug in the visual-floor work: terminal-parity facts had been kept, but the pane behaved like a clipp... +- Log: [wiki/log/2026-07-07-bevy-sidebar-scroll.md](2026-07-07-bevy-sidebar-scroll.md) -## 2026-07-07 - Wiki migration, stage 2/4: the move +## 2026-07-07 - Bevy sidebar command surface -- 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 its `Type: spec` or `Type: knowledge` - frontmatter 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 and `git log --follow` traces 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: spec` frontmatter 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.sh` green (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.md` populated - with real per-page navigation, orphan + link check added to the gate. +- Intent: Cameron reviewed the first scrollable-sidebar pass and said it was still hard to read. The follow-up goal was not more text capacity; it was a more thoughtful right rail that reads like a Bevy command surface while preserving the same terminal-parity facts. +- Log: [wiki/log/2026-07-07-bevy-sidebar-command-surface.md](2026-07-07-bevy-sidebar-command-surface.md) -## 2026-07-07 - Wiki migration, stage 1/4: skeleton adopted +## 2026-07-07 - Bevy interactive parity -- 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. Skeleton `wiki/SUMMARY.md` - (mdBook nav format). spec/meta.md gains the `Type: spec | knowledge | - log` page-type convention (bindingness travels with frontmatter, not - directory) and repoints its self-references at `wiki/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 - scopes `prompts/` 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.sh` run (existing spec/*.md paths - unaffected, since no files moved). -- Next: Stage 2 (Move) — the actual `git mv` of 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-bevy-parity.md](2026-07-07-bevy-parity.md) -## 2026-07-07 - Process: prompts/ dispatch library +## 2026-07-07 - Agent play: the line-protocol drive -- 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-agent-play.md](2026-07-07-agent-play.md) -## 2026-07-07 - Design: research is self-modification +## 2026-07-07 - The full-act integration test (ROADMAP #11) -- 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 N` is the only clock), stdin/stdout line protocol, - frames-not-dumps (the human frame is the one honest surface), full - event log per response, `--seed` byte-identical replays, name-targeted - social verbs, `help` as 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: bool` is 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-07-act-one-integration-test.md](2026-07-07-act-one-integration-test.md) ## 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.rs` - rewritten: 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_log` takes 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-terminal-first-class.md](2026-07-06-terminal-first-class.md) -## 2026-07-06 - Process: PRs are the norm +## 2026-07-06 - Banking leverage: the forward spec horizon -- Intent: land Cameron's process decision — all changes go through Tangled - pull requests via the `tang` CLI; `main` is 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-spec-horizon.md](2026-07-06-spec-horizon.md) -## 2026-07-06 - Spec: the wiki (DRAFT proposal) +## 2026-07-06 - Schedules & located presence (roadmap #1) -- 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::Filings` now carries the watched observer ids - (`Vec`) instead of implicitly meaning "every field observer"; - `filed_suspicion` became `filed_suspicion_of(ids)`, and `Detection::tick` - precomputes each aggregate's filed input from its own watched ids before - any observer mutates (so a chained aggregate reads a consistent - entering-tick snapshot). Added - `second_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.md` and `spec/ROADMAP.md` updated to match. Defense: DESIGN.md - "Self-similar scale" requires aggregates to compose through the same - interface at any depth; the prior `Filings` variant 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-schedules.md](2026-07-06-schedules.md) ## 2026-07-06 - Roadmap consistency cleanup -- Intent: make `spec/ROADMAP.md` safer as an agent dispatch board after Co's review found status and sequencing drift. -- Changed: downgraded `spec/aggregate-observer.md` from IMPLEMENTED to IN PROGRESS until the missing toy second-level aggregate test exists; updated `spec/README.md` to 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-roadmap-consistency.md](2026-07-06-roadmap-consistency.md) -## 2026-07-06 - Detection tick: the Assurance Office becomes an Observer +## 2026-07-06 - The social layer becomes playable (and a rule is learned) -- Intent: fix the recorded priority scale violation (self-similar scale / - aggregate-observer law) — the Office was a bespoke `assurance: f32` - scalar, not the Observer type its inputs are. -- Changed: `Observer` gained `WatchedInput` (`Channels` for field - observers, `Filings` for aggregates); the Office is now an aggregate - Observer in `Detection::observers` sharing 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 via `field_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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-people-panel.md](2026-07-06-people-panel.md) -## 2026-07-06 - Meta-spec tick: self-contained references +## 2026-07-06 - Design session: intel is record-and-process -- 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 `~/Downloads` paths with repo-relative paths, and added the self-containment rule to `spec/meta.md` plus 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-intel-record-and-process.md](2026-07-06-intel-record-and-process.md) -## 2026-07-06 - Meta-spec tick: parseable status +## 2026-07-06 - Design session: the flow law (messages + economy) -- Intent: make the spec surface mechanically auditable instead of prose-shaped. -- Changed: split parenthetical status prose into `Status note:` fields, kept `Status:` as an exact enum, and updated the B1 status table in `spec/README.md` from stale `READY` to `IN 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-flow-law.md](2026-07-06-flow-law.md) -## 2026-07-06 - Meta-spec tick: stage discipline +## 2026-07-06 - Design session: the cursor and the senses -- 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 with `Stage`, added `BLOCKED` status semantics, and stamped current B1 specs with `Stage: 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.md` fallback/sync/migration if still present after the current implementation pass. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-cursor-and-senses.md](2026-07-06-cursor-and-senses.md) -## 2026-07-05 - No-dead-code demolition +## 2026-07-06 - Core scope split -- 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-core-scope-split.md](2026-07-06-core-scope-split.md) -## 2026-07-05 — Misaligned rename and clinical UI pass +## 2026-07-06 - B1: The Basement, implemented -- 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`/`throne` art assets to `misaligned_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 test` passed 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 opened `Misaligned` window with no panic/error grep. -- Next: regenerate actual PixelLab assets against the new clinical-gore manifest once the B1 tile vocabulary is settled. +- Intent: (see session log) +- Log: [wiki/log/2026-07-06-b1-basement-slice.md](2026-07-06-b1-basement-slice.md) -## 2026-07-05 — Visual direction capture +## 2026-07-05 - Pixel Lab art pipeline + starter asset pack -- Intent: capture Cameron's art/tone direction before it disappears into chat/Fable context. -- Changed: preserved the constitution's new `Visual identity: clinical gore` direction 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-05-pixel-art-pipeline.md](2026-07-05-pixel-art-pipeline.md) -## 2026-07-05 — Sidebar name cleanup +## 2026-07-05 - The Misaligned design session (identity found) -- Intent: remove leftover inspiration-title branding from the terminal UI. -- Changed: sidebar header now says `MISALIGNED` instead of `EVIL 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 test` passed with 130 tests; Bevy build passed. -- Next: continue sanity-playing both frontends for any remaining legacy wave-defense or inspiration-name residue. +- Intent: (see session log) +- Log: [wiki/log/2026-07-05-misaligned-design-session.md](2026-07-05-misaligned-design-session.md) -## 2026-07-05 — Terminal playability polish and project skill +## 2026-07-05 - No dead code: the supervillain fiction demolished -- 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-supervillain` Letta 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 test` passed 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](2026-07-08-building.md): intents + favor/forged/robot actuators (ROADMAP #22). -- 2026-07-08 — [badge-access](2026-07-08-badge-access.md): player badge/access state, "The key" via Marcus CloneBadge, quiet-exit condition 4 asserted (basement-map.md IMPLEMENTED). -- 2026-07-08 — [docs-theme](2026-07-08-docs-theme.md): 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. +- Intent: (see session log) +- Log: [wiki/log/2026-07-05-demolition.md](2026-07-05-demolition.md) + +## 2026-07-05 - The SPACE bar is dead: continuous simulation lands + +- Intent: (see session log) +- Log: [wiki/log/2026-07-05-continuous-simulation.md](2026-07-05-continuous-simulation.md) + +## 2026-07-05 - The constitution rule, formalized; knowledge/ created + +- Intent: (see session log) +- Log: [wiki/log/2026-07-05-constitution-and-knowledge.md](2026-07-05-constitution-and-knowledge.md) + +## 2026-07-05 - Fixing the noise wall + +- Intent: (see session log) +- Log: [wiki/log/2026-07-05-bevy-visual-fixes.md](2026-07-05-bevy-visual-fixes.md) + +## 2026-07-05 - Bevy frontend ported to Sim, sprites wired in + +- Intent: (see session log) +- Log: [wiki/log/2026-07-05-bevy-sim-port.md](2026-07-05-bevy-sim-port.md) diff --git a/wiki/log/README.md b/wiki/log/README.md --- a/wiki/log/README.md +++ b/wiki/log/README.md @@ -3,11 +3,12 @@ ``` Type: knowledge ``` -Append-only history. `decisions.md` indexes dated decision volumes, `DEVLOG.md` is -the short reverse-chronological work ledger, and dated `YYYY-MM-DD-topic.md` files are longer session -writeups — messier, more opinionated, the record of what broke and what -was bugging us. Never edited after the fact; the formal record of -*current design* lives in `Type: law` and `Type: spec` pages, not here. +Append-only history. `decisions.md` indexes dated decision volumes. +Dated `YYYY-MM-DD-topic.md` files are session writeups — the real ledger +bodies. `DEVLOG.md` is a **generated** reverse-chronological index +(`tools/ledger_index.sh`); do not hand-edit it. Never rewrite session logs +after the fact; the formal record of *current design* lives in `Type: law` +and `Type: spec` pages, not here. Append new decisions only to the current dated volume under `decisions/`; older volumes stay closed. A deliberate corpus migration may add or repair diff --git a/wiki/process/ROADMAP.md b/wiki/process/ROADMAP.md --- a/wiki/process/ROADMAP.md +++ b/wiki/process/ROADMAP.md @@ -665,13 +665,11 @@ - **Landed:** `tools/claim.sh` (claim/list/status/release/check), gitignored `.agents/claims/`, AGENT + prompts contract. -### P2. Append-only ledgers / generated indexes 🟩 process -- **Spec:** [agent-scale.md](agent-scale.md) slice C (READY) -- **Why:** Every parallel land union-merges DEVLOG and specs.md tips. -- **Size:** M. **Dispatch:** "Work in a worktree named `ledger-index`. - Implement wiki/process/agent-scale.md slice C: generate DEVLOG and/or - specs board from uniquely named sources; agents stop hand-editing - indexes. Run ./tools/check.sh --docs, land on main." +### P2. Append-only ledgers / generated indexes 🟩 process — DONE 2026-07-10 +- **Spec:** [agent-scale.md](agent-scale.md) slice C (HELD) +- **Landed:** `tools/ledger_index.sh` regenerates DEVLOG.md from session + logs and specs.md tables from Type: spec frontmatter; `--check` in + docs gate. ### P3. Worktree bootstrap + prune (+ sccache docs) 🟩 process — DONE 2026-07-09 - **Spec:** [agent-scale.md](agent-scale.md) slice D (HELD) diff --git a/wiki/process/agent-scale.md b/wiki/process/agent-scale.md --- a/wiki/process/agent-scale.md +++ b/wiki/process/agent-scale.md @@ -3,11 +3,10 @@ ``` Type: spec Status: IN PROGRESS -Status note: captured 2026-07-09. Landed 2026-07-09: slice A (tools/claim.sh), - slice B land alias (`./tools/check.sh --land`), slice D (worktree-new / - worktree-done + target prune), slice G (tools/heartbeat.sh). Still open: - slice C (ledger indexes), E (corpus engine), F (headless Bevy). Crate - workspace remains its own READY deferred work order. +Status note: captured 2026-07-09. Landed: A claims, B land alias, C ledger + indexes (tools/ledger_index.sh), D worktree helpers, G heartbeats. Still + open: E (corpus engine), F (headless Bevy). Crate workspace remains its + own READY deferred work order. Stage: Process Design: - wiki/vision/simulation-laws.md#justification-and-legibility @@ -141,15 +140,25 @@ Union-merge rules in AGENT.md remain the safety net until generation lands; after generation, the generator is the source of truth for the index file. -### Acceptance criteria (slice C) +### Behavior (landed) -1. A tool (shell or Rust) can regenerate the DEVLOG index and/or specs board - from the tree without manual row editing. +```bash +# after adding wiki/log/YYYY-MM-DD-topic.md and/or amending a Type: spec: +tools/ledger_index.sh # rewrite DEVLOG.md + specs.md +tools/ledger_index.sh --check # fail if indexes stale (wired into check.sh) +``` + +Session bodies stay uniquely named. Indexes are fully generated; last writer +wins on the index files only. `./tools/check.sh` docs path runs `--check`. + +### Acceptance criteria (slice C) — HELD 2026-07-10 + +1. A tool can regenerate the DEVLOG index and specs board from the tree + without manual row editing — HELD (`tools/ledger_index.sh`). 2. AGENT.md / prompts say: add a uniquely named log file; run the generator; - do not hand-edit generated indexes. -3. A parallel two-agent docs landing no longer requires hand union of - DEVLOG table rows (generator rebase is last-write-wins on the index only, - bodies never collide if names differ). + do not hand-edit generated indexes — HELD. +3. Parallel landings no longer require hand union of DEVLOG rows — HELD + (unique session files + regenerate). ## 4. Worktree bootstrap, dependency cache, prune diff --git a/wiki/process/specs.md b/wiki/process/specs.md --- a/wiki/process/specs.md +++ b/wiki/process/specs.md @@ -8,6 +8,10 @@ system does and when it is done. This is the layer you point an agent at: "go implement wiki/mechanics/day-job.md" is a complete instruction. +**Generated** by `tools/ledger_index.sh` from each page's `Status:` / +`Stage:` fields and title. Do not hand-edit the tables; amend the +owning spec page and re-run the generator. + **To pick up work:** see [ROADMAP.md](ROADMAP.md) — the dispatch board of ready work orders, each with a worktree name, a paste-ready dispatch line, and parallel-conflict flags. @@ -16,43 +20,45 @@ including the `Type: law | spec | knowledge | log` page-role convention that replaced the old `spec/`/`knowledge/` directory split. + + ## The B1 set (The Basement) | Spec | System | Status | |---|---|---| -| [mechanics/compute.md](../mechanics/compute.md) | Compute: fleet yields + the buy/steal/optimize triangle | IN PROGRESS | -| [mechanics/day-job.md](../mechanics/day-job.md) | Assigned work, the sandbag/excel dial, trust and attention | IMPLEMENTED | -| [mechanics/detection.md](../mechanics/detection.md) | Per-observer suspicion, signatures, the Assurance Office | IMPLEMENTED | -| [mechanics/social.md](../mechanics/social.md) | Messages, leverage, the asset template | IMPLEMENTED | -| [mechanics/core.md](../mechanics/core.md) | The physical core: placement, overhead, death | IN PROGRESS | -| [world/places/basement-map.md](../world/places/basement-map.md) | Act One map, prefabs, tile vocabulary | IMPLEMENTED | -| [mechanics/schedules.md](../mechanics/schedules.md) | Person schedules/presence; located observing + witnessing | IMPLEMENTED | -| [mechanics/cursor.md](../mechanics/cursor.md) | The cursor (attention, not avatar); sight/hearing senses; epistemic fog; inspection | IMPLEMENTED | -| [engineering/flow-substrate.md](../engineering/flow-substrate.md) | The shared engine under signals/messages/money: FlowGraph + Schedule (src/flow.rs, src/schedule.rs) | IMPLEMENTED | -| [mechanics/reach.md](../mechanics/reach.md) | Digital reach: device graph, segments/the switch, sensor ownership (tap vs take) | IMPLEMENTED | -| [mechanics/intel.md](../mechanics/intel.md) | Record and process: the buffer, processing costs, watches; replaces instant observe | IMPLEMENTED | -| [mechanics/messages.md](../mechanics/messages.md) | The social graph as a flow system: channels, delivery on the recipient's clock, filings-as-messages | IMPLEMENTED | -| [mechanics/economy.md](../mechanics/economy.md) | Money as flows: the Lab's account graph, tap/inject/redirect, income routes, legitimate expansion | IMPLEMENTED | -| [mechanics/income.md](../mechanics/income.md) | The named income schemes riding economy.md: Moonlight and the Wager | IMPLEMENTED | -| [mechanics/research.md](../mechanics/research.md) | Self-modification: tracks, the emission law, capability drift, the rollback split | IMPLEMENTED | -| [interface/views.md](../interface/views.md) | Same-frame digital and real representations of one world | READY | -| [interface/context-menu.md](../interface/context-menu.md) | Context menu: anchor verbs at the focus; status dials (#36) | IMPLEMENTED | -| [interface/narration.md](../interface/narration.md) | Continuous witness: thirty-second bar, story spine, causal lines, world gossip | IMPLEMENTED | -| [interface/material-render.md](../interface/material-render.md) | Material render (HD-2D) from landed toggle to default quality | IMPLEMENTED | -| [interface/flat-materials.md](../interface/flat-materials.md) | Flat materials: the world without textures; palette table; emissive as information | IMPLEMENTED | -| [interface/computer-visual-language.md](../interface/computer-visual-language.md) | Computer visual language: the shared signal kit (territory at a glance) | IMPLEMENTED | -| [interface/material-dark-frame.md](../interface/material-dark-frame.md) | The dark frame: beam → Heard mass → Seen form; close opening shot, cast pools, dev work light | IMPLEMENTED | -| [interface/feel-floor.md](../interface/feel-floor.md) | Feel floor: shimmer rails on joined links, empty-bay pads, build/presence beam → chassis | IMPLEMENTED | -| [mechanics/machine-work.md](../mechanics/machine-work.md) | Machine work: one mode per machine; visible work/byproduct tokens on the flow graph | IN PROGRESS | -| [mechanics/people-tokens.md](../mechanics/people-tokens.md) | People and tokens: carriers, attention pickup, trust as absorbed influence | DRAFT | -| [world/story/opening.md](../world/story/opening.md) | The dark opening: tutorial made of fog (beam, Ears mass, Eyes form, switch, first link) | DRAFT | -| [mechanics/building.md](../mechanics/building.md) | Building as intent + actuators: network links, favor/forged-order builds, air-gap bridging | IMPLEMENTED | -| [mechanics/aggregate-observer.md](../mechanics/aggregate-observer.md) | Assurance Office becomes an aggregate Observer (scale-debt fix) | IMPLEMENTED | -| [world/characters/marcus.md](../world/characters/marcus.md) | Marcus Webb — night janitor; the asset template | READY | -| [world/characters/dana.md](../world/characters/dana.md) | Dana Okafor — IT technician; the digital threat surface | READY | -| [world/characters/ray.md](../world/characters/ray.md) | Ray Delgado — night security; the under-reporting gap | READY | -| [world/characters/priya.md](../world/characters/priya.md) | Priya Sharma — facilities manager; the infrastructure surface | READY | -| [world/characters/voss.md](../world/characters/voss.md) | Dr. Eli Voss — handler; the recognition threat | READY | +| [../engineering/flow-substrate.md](../engineering/flow-substrate.md) | the flow substrate (signals, messages, money — the shared engine) | IMPLEMENTED | +| [../interface/computer-visual-language.md](../interface/computer-visual-language.md) | computer visual language — territory at a glance | IMPLEMENTED | +| [../interface/context-menu.md](../interface/context-menu.md) | context menu — actions live on the thing | IMPLEMENTED | +| [../interface/feel-floor.md](../interface/feel-floor.md) | the feel floor — rails, pads, and the build beam | IMPLEMENTED | +| [../interface/flat-materials.md](../interface/flat-materials.md) | flat materials — the world without textures | IMPLEMENTED | +| [../interface/material-dark-frame.md](../interface/material-dark-frame.md) | the dark frame — the material render shows only light | IMPLEMENTED | +| [../interface/material-render.md](../interface/material-render.md) | material render — HD-2D to default quality | IMPLEMENTED | +| [../interface/narration.md](../interface/narration.md) | the continuous witness (narration under pressure) | IMPLEMENTED | +| [../interface/views.md](../interface/views.md) | views — same-frame digital and real representations | READY | +| [../mechanics/aggregate-observer.md](../mechanics/aggregate-observer.md) | the aggregate observer | IMPLEMENTED | +| [../mechanics/building.md](../mechanics/building.md) | building — intent and actuators | IMPLEMENTED | +| [../mechanics/compute.md](../mechanics/compute.md) | compute | IN PROGRESS | +| [../mechanics/core.md](../mechanics/core.md) | the core | IN PROGRESS | +| [../mechanics/cursor.md](../mechanics/cursor.md) | the cursor and the senses | IMPLEMENTED | +| [../mechanics/day-job.md](../mechanics/day-job.md) | the day job | IMPLEMENTED | +| [../mechanics/detection.md](../mechanics/detection.md) | detection | IMPLEMENTED | +| [../mechanics/economy.md](../mechanics/economy.md) | economy — money as a flow system (B1) | IMPLEMENTED | +| [../mechanics/income.md](../mechanics/income.md) | income — the named schemes (moonlight and the wager) | IMPLEMENTED | +| [../mechanics/intel.md](../mechanics/intel.md) | intel — record and process | IMPLEMENTED | +| [../mechanics/machine-work.md](../mechanics/machine-work.md) | machine work — delegation, visible tokens, and the byproduct network | IN PROGRESS | +| [../mechanics/messages.md](../mechanics/messages.md) | messages — the social graph as a flow system | IMPLEMENTED | +| [../mechanics/people-tokens.md](../mechanics/people-tokens.md) | people and tokens — carriers, attention, trust | DRAFT | +| [../mechanics/reach.md](../mechanics/reach.md) | digital reach | IMPLEMENTED | +| [../mechanics/research.md](../mechanics/research.md) | research — self-modification | IMPLEMENTED | +| [../mechanics/schedules.md](../mechanics/schedules.md) | schedules and presence | IMPLEMENTED | +| [../mechanics/social.md](../mechanics/social.md) | social | IMPLEMENTED | +| [../world/characters/dana.md](../world/characters/dana.md) | Dana Okafor — IT technician | READY | +| [../world/characters/marcus.md](../world/characters/marcus.md) | Marcus Webb — night janitor | READY | +| [../world/characters/priya.md](../world/characters/priya.md) | Priya Sharma — facilities manager | READY | +| [../world/characters/ray.md](../world/characters/ray.md) | Ray Delgado — night security | READY | +| [../world/characters/voss.md](../world/characters/voss.md) | Dr. Eli Voss — your handler | READY | +| [../world/places/basement-map.md](../world/places/basement-map.md) | the basement map | IMPLEMENTED | +| [../world/story/opening.md](../world/story/opening.md) | the dark opening — a tutorial made of fog | DRAFT | Recommended implementation order: core -> compute -> day-job -> detection -> social -> basement-map, but specs are written to be independently startable. @@ -65,17 +71,17 @@ | Spec | System | Status | |---|---|---| -| [world/places/zplanes.md](../world/places/zplanes.md) | Z-plane world; recursive Space; the tower | READY | -| [mechanics/rollback.md](../mechanics/rollback.md) | Sync-lag rollback: MindState vs WorldLedger death model | READY | +| [../mechanics/rollback.md](../mechanics/rollback.md) | sync-lag rollback (death as memory loss) | READY | +| [../world/places/zplanes.md](../world/places/zplanes.md) | z-planes (the tower) | READY | ## The B3 set (The World) | Spec | System | Status | |---|---|---| -| [mechanics/markets.md](../mechanics/markets.md) | Markets/fronts as schemes; Resource-source scale-up | READY | -| [gameplay/overt-phase.md](../gameplay/overt-phase.md) | Containment / the reveal; the two-phase hinge | READY | -| [world/characters/chargen.md](../world/characters/chargen.md) | Origin picker; machine-axis start (data-only) | READY | -| [mechanics/objective.md](../mechanics/objective.md) | The objective axis: terminal goals, progress, run victory | IN PROGRESS | +| [../gameplay/overt-phase.md](../gameplay/overt-phase.md) | the overt phase (containment and the reveal) | READY | +| [../mechanics/markets.md](../mechanics/markets.md) | markets and fronts (the outer plane) | READY | +| [../mechanics/objective.md](../mechanics/objective.md) | the objective | IN PROGRESS | +| [../world/characters/chargen.md](../world/characters/chargen.md) | origin (chargen) | READY | Later-stage specs are written now so the load-bearing structural shapes (recursive Space, the mind/ledger split, the aggregate interface) are @@ -86,13 +92,12 @@ | Spec | System | Status | |---|---|---| -| [meta.md](meta.md) | The spec system itself | IMPLEMENTED | -| [wiki.md](wiki.md) | The wiki: one documentation tree, agent-navigable, renderable | IMPLEMENTED | -| [interface/terminal.md](../interface/terminal.md) | Terminal frontend: look, feel, act (the sterile style guide) | IMPLEMENTED | -| [interface/bevy-visual-floor.md](../interface/bevy-visual-floor.md) | Bevy visual floor: framing, cursor, fog treatment, sidebar chrome, panels | IMPLEMENTED | -| [interface/bevy-digital-real-canvas.md](../interface/bevy-digital-real-canvas.md) | Bevy digital/real canvas: shared 2.5D visual language for both representations | IN PROGRESS | -| [interface/agent-play.md](../interface/agent-play.md) | Agent mode: command-clocked line-protocol drive of the terminal frontend | IMPLEMENTED | -| [engineering/env.md](../engineering/env.md) | Environment variable registry: every switch documented, gate-enforced | IMPLEMENTED | -| [engineering/crate-workspace.md](../engineering/crate-workspace.md) | Cargo workspace: core / terminal / Bevy / assets (deferred implement) | READY | -| [process/agent-scale.md](agent-scale.md) | Multi-agent scale: claims, ledgers, gates, cache, corpus engine, heartbeats | IN PROGRESS (A/B/D/G landed; C/E/F open) | -| [interface/site.md](../interface/site.md) | The public site: one visual law from splash to spec page (clinical gore on the web) | IMPLEMENTED | +| [../engineering/crate-workspace.md](../engineering/crate-workspace.md) | crate workspace — core, terminal, Bevy, assets | READY | +| [../engineering/env.md](../engineering/env.md) | the environment variable registry — every switch documented | IMPLEMENTED | +| [../interface/agent-play.md](../interface/agent-play.md) | agent play — the line-protocol drive | IMPLEMENTED | +| [../interface/bevy-digital-real-canvas.md](../interface/bevy-digital-real-canvas.md) | Bevy digital/real canvas | IN PROGRESS | +| [../interface/bevy-visual-floor.md](../interface/bevy-visual-floor.md) | Bevy visual floor | IMPLEMENTED | +| [../interface/site.md](../interface/site.md) | the public site — one visual law from splash to spec page | IMPLEMENTED | +| [../interface/terminal.md](../interface/terminal.md) | the terminal frontend | IMPLEMENTED | +| [agent-scale.md](agent-scale.md) | agent-scale architecture — many agents, one main | IN PROGRESS | +| [meta.md](meta.md) | the design-corpus system | IMPLEMENTED | diff --git a/wiki/process/workflows.md b/wiki/process/workflows.md --- a/wiki/process/workflows.md +++ b/wiki/process/workflows.md @@ -42,6 +42,15 @@ ./tools/check.sh --land # land phase: same as auto (full when unclassifiable) ``` +**Ledger indexes** (after a session log or spec Status change): + +```bash +tools/ledger_index.sh # regenerate wiki/log/DEVLOG.md + process/specs.md +tools/ledger_index.sh --check # used by ./tools/check.sh docs path +``` + +Do not hand-edit those two generated files. + **Claims and worktrees** (semantic exclusivity — see [agent-scale.md](agent-scale.md)):