From cc053de0aed8f77d7244b7aaf05e9331a2da9492 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 15 Jul 2026 11:11:37 -0700 Subject: [PATCH] Graduate Marcus from the active roadmap. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pin the exact Knowing certainty-floor path before marking all five character criteria implemented. 👾 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta Code --- .../src/sim/tests/social_plot.rs | 37 +++++++++++++++ wiki/log/2026-07-15-marcus-graduation.md | 46 +++++++++++++++++++ wiki/log/DEVLOG.md | 5 ++ wiki/process/ROADMAP.md | 1 - wiki/process/specs.md | 2 +- wiki/process/tick-ledger.md | 1 + wiki/world/characters/marcus.md | 12 ++++- 7 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 wiki/log/2026-07-15-marcus-graduation.md diff --git a/crates/misaligned-core/src/sim/tests/social_plot.rs b/crates/misaligned-core/src/sim/tests/social_plot.rs index b37e933..9cef748 100644 --- a/crates/misaligned-core/src/sim/tests/social_plot.rs +++ b/crates/misaligned-core/src/sim/tests/social_plot.rs @@ -462,6 +462,43 @@ fn marcus_arc_end_to_end() { ); } +#[test] +fn knowing_marcus_sets_and_keeps_thirty_point_certainty_floor() { + // Marcus criterion 4: the simulation-level recruitment path must connect + // a Knowing reveal to his id-aligned observer, then ordinary detection + // decay must respect the resulting permanent-witness floor. + let mut sim = Sim::new(); + sim.people.people[0].knowledge = Knowledge::Leverage; + sim.people.people[0].leverage_serviced = true; + + sim.recruit(0, AssetKnowledge::Knowing); + + let marcus = sim + .detection + .observers + .iter() + .find(|observer| observer.id == 0) + .expect("Marcus's person and observer ids are aligned"); + assert_eq!(marcus.floor, 30.0); + assert_eq!(marcus.suspicion, 30.0); + + for _ in 0..500 { + sim.advance(); + } + + let marcus = sim + .detection + .observers + .iter() + .find(|observer| observer.id == 0) + .expect("Marcus remains an observer"); + assert_eq!(marcus.floor, 30.0); + assert_eq!( + marcus.suspicion, 30.0, + "ordinary decay cannot make a knowing Marcus forget" + ); +} + // ── Per-AssetTask pins (social.md criterion 3, ROADMAP #28) ──────────── /// The recruit-route shorthand shared by the per-task pins: service the diff --git a/wiki/log/2026-07-15-marcus-graduation.md b/wiki/log/2026-07-15-marcus-graduation.md new file mode 100644 index 0000000..c8ab272 --- /dev/null +++ b/wiki/log/2026-07-15-marcus-graduation.md @@ -0,0 +1,46 @@ +# 2026-07-15 — Marcus implementation graduation + +``` +Type: log +``` + +## Intent + +The oldest never-audited READY work order was Marcus. Its runtime had already +grown past that dispatch status: the canonical person and observer data, the +debt-intel gate, both debt plots, recruitment, three general asset tasks, the +tier-3 key route, and the complete Act One traversal were all executable. The +stale READY marker kept a finished B1 character contract on the active board. + +One evidence seam was still indirect. Detection had a generic certainty-floor +test and recruitment connected a Knowing reveal to `Detection::set_floor`, but +no simulation-level regression proved that recruiting Marcus specifically set +observer 0 to 30 and held that value through ordinary decay. This change adds +that pin before graduating the work order; it does not alter runtime behavior. + +## Evidence + +- `People::act_one` and `Detection::act_one` both assign Marcus id 0, with the + authored Debt leverage, tier-3 access, night route, Physical input, Silent + report policy, 0.5 acuity, and 40-tick cadence. +- `only_filed_reports_move_assurance` drives a maxed Silent Marcus through + three Office cadences and proves that none of his suspicion is filed. +- `marcus_debt_payoff_and_recruitment_require_debt_intel` rejects both the + ledger-only payoff shortcut and a serviced-flag recruitment shortcut. +- `marcus_arc_end_to_end` captures and processes the creditor call, completes + the cash plot, recruits Marcus, then executes PlugInDevice, MovePackage, and + LookAway against their distinct world effects. +- `marcus_clone_badge_route_opens_the_stairwell` and the full Act One test pin + the archetype's tier-3 key as located carried work rather than an instant + credential grant. +- `knowing_marcus_sets_and_keeps_thirty_point_certainty_floor` now proves that + the real `Sim::recruit` path sets observer 0 to 30 and that 500 ordinary + simulation ticks cannot decay him below it. + +## Defense + +[Marcus](../world/characters/marcus.md) defines five executable B1 criteria, +and [Act One](../gameplay/act-one.md) names him as the Hands beat and the first +general asset template. Graduating only after the exact person-to-observer +Knowing path is pinned keeps the roadmap honest without inventing a new +character-specific system. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index 6b35b00..1b6f7ea 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -16,6 +16,11 @@ add or amend a session log, then re-run the generator. - Intent: (see session log) - Log: [wiki/log/2026-07-15-run-shape-staging-resolved.md](2026-07-15-run-shape-staging-resolved.md) +## 2026-07-15 - Marcus implementation graduation + +- Intent: The oldest never-audited READY work order was Marcus. Its runtime had already grown past that dispatch status: the canonical person and observer data, the debt-intel gate, both debt plots, recruitment, three general asset tasks, the tier-3 key route, and the complete Act One t... +- Log: [wiki/log/2026-07-15-marcus-graduation.md](2026-07-15-marcus-graduation.md) + ## 2026-07-15 - One physical link, one open proposal - Intent: (see session log) diff --git a/wiki/process/ROADMAP.md b/wiki/process/ROADMAP.md index 7e0097c..40e9b71 100644 --- a/wiki/process/ROADMAP.md +++ b/wiki/process/ROADMAP.md @@ -21,7 +21,6 @@ not a second status owner. | 29 | `building-route-composer` | [building — intent and actuators](../mechanics/building.md) | IN PROGRESS | save | - | | 40 | `people-tokens` | [people and tokens — carriers, attention, trust](../mechanics/people-tokens.md) | IN PROGRESS | save | - | | 60 | `plots` | [plots — authored manipulation stories](../mechanics/plots.md) | READY | sim | - | -| 60 | `marcus` | [Marcus Webb — night janitor](../world/characters/marcus.md) | READY | sim | - | | 61 | `voss` | [Dr. Eli Voss — your handler](../world/characters/voss.md) | READY | sim | - | | 62 | `priya` | [Priya Sharma — facilities manager](../world/characters/priya.md) | READY | sim | - | | 63 | `dana` | [Dana Okafor — IT technician](../world/characters/dana.md) | READY | sim | - | diff --git a/wiki/process/specs.md b/wiki/process/specs.md index 84acb5b..4d7e861 100644 --- a/wiki/process/specs.md +++ b/wiki/process/specs.md @@ -60,7 +60,7 @@ replaced the old `spec/`/`knowledge/` directory split. | [../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/marcus.md](../world/characters/marcus.md) | Marcus Webb — night janitor | IMPLEMENTED | | [../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 | diff --git a/wiki/process/tick-ledger.md b/wiki/process/tick-ledger.md index ea7f25f..f5e7acc 100644 --- a/wiki/process/tick-ledger.md +++ b/wiki/process/tick-ledger.md @@ -20,6 +20,7 @@ Verdicts: **clean** (slice and code agree), **finding** (acted this tick), | Slice | Last audited | Verdict | Trace | |---|---|---|---| +| `wiki/world/characters/marcus.md` | 2026-07-15 | finding | all five criteria verified against person, detection, social/plot, schedule, and Act One paths; added the missing simulation-level Knowing-floor decay pin and graduated the stale READY work order — [log](../log/2026-07-15-marcus-graduation.md) | | `wiki/engineering/current-build.md` | 2026-07-14 | finding | system table verified (save v29 ladder, 60-site/6-row hall pins, aggregate Observer, WORK/THINK/LIE, frontends); fixed stale "~39k lines" to the ~65k workspace split — [log](../log/2026-07-14-current-build-count.md) | | `wiki/mechanics/plots.md` | 2026-07-14 | finding | engine/validation/tests verify (build-time discovery, placeholder+ASCII+causal gates, slot exclusivity, save round-trip, synthetic binding, Marcus arc); refreshed the stale nine-built-ins status line to the shipped thirteen — [log](../log/2026-07-14-plots-catalog-note.md) | | `wiki/mechanics/system-laws.md` + `flow-substrate.md` | 2026-07-14 | finding | engine and consumers verified (FlowGraph/Schedule pins, reach + WorkGrid + message_schedule + account graph); reconciled the pre-implementation domain-riding claims (no social FlowGraph yet; economy recurrence is per-flow cadence by the non-goal) — [log](../log/2026-07-14-flow-law-precision.md) | diff --git a/wiki/world/characters/marcus.md b/wiki/world/characters/marcus.md index bfa92e3..00a7563 100644 --- a/wiki/world/characters/marcus.md +++ b/wiki/world/characters/marcus.md @@ -2,7 +2,17 @@ ``` Type: spec -Status: READY +Status: IMPLEMENTED +Status note: 2026-07-15 implementation audit — all five criteria are live. + `People::act_one` and `Detection::act_one` align person/observer id 0 and + author Marcus's schedule, access, Debt leverage, Physical channel, Silent + filing policy, acuity, and cadence. The processed creditor call gates both + debt plots and recruitment; the complete arc exercises the call, payoff, + recruitment, PlugInDevice, MovePackage, and LookAway, while the Act One + playthrough carries his tier-3 CloneBadge to the stairwell. Focused + regressions pin Silent filings, own-observer LookAway, and the recruited + Knowing floor at 30 through ordinary decay. No runtime behavior changed in + this graduation. See wiki/log/2026-07-15-marcus-graduation.md. Stage: B1 — The Basement Work order: marcus Work priority: 60 -- 2.51.2