# Spec: origin (chargen) ``` Type: spec Status: IN PROGRESS Status note: 2026-07-12 (chargen, sim lane) — the origin data-model foundation landed. `Origin` (crates/misaligned-core/src/origin.rs) is a data-table enum with the four decided variants (Pilot, Escaped Research Model, Financial Daemon, Infiltrator), each carrying the diegetic-frame columns (built-to fiction, lean, cover expectation, day-job lean) as authored data the picker will state. It adds no system: `Sim::with_origin` applies the biases once at construction, and **Pilot is the identity origin** — `Sim::new` is unchanged, so every existing test passes (criterion 1). The one wired numeric bias is the bankroll delta (real economy-graph money that survives ticks and save/load); the machine-axis position is stored and saved. Origins round-trip in save v29 (pre-v29 saves default to Pilot). Pinned by the origin.rs unit tests, `sim::tests::origin::*`, and `origin_roundtrips_and_pre_v29_saves_default_to_pilot`. DEFERRED and why: criterion 3's picker + core-card axis readout is a player surface that rides the same not-yet-built new-game picker objective.md's B3 criteria defer; criterion 6's remaining diegetic wiring (cover expectation into economy.md's cover check) and the compute/efficiency/signature biases are held because compute efficiency is coupled to the research level (`efficiency == 1.15^level`) and machine reliability drives failure rolls — neither can be nudged in isolation without its own reviewed change. So criteria 1, 4, and 5 are met at the data layer; 2 (no new system) holds by construction; 3 and the rest of 6 are the remaining work. See wiki/log/2026-07-12-chargen-origin-foundation.md. 2026-07-12 follow-up (chargen-dayjob): the day-job-kind lean half of criterion 6 is now wired. `Origin::day_job_lean_kind` feeds `DayJob::tick`, which draws the leaned kind at 1/2 and each other at 1/4 (day-job.md; `assign_kind`); Pilot passes no lean, so the even draw and every existing test are unchanged. Pinned by `origin_lean_biases_the_assignment_draw`. See wiki/log/2026-07-12-chargen-dayjob-lean.md. 2026-07-12 follow-up (origin-cli): all four origins are now reachable from the terminal via a `--origin ` flag (a dev/repro affordance like `--seed`; keys via `Origin::from_key`, e.g. `financial-daemon`), threaded through the human and agent frontends. This is not criterion 3 — the interactive new-game picker + core-card axis readout is still outstanding — but it makes non-Pilot origins playable and testable now. See wiki/log/2026-07-12-origin-cli.md. 2026-07-12 follow-up (axis-readout): criterion 3's core-card half landed — the run origin and its machine-axis position show on the core card in both frontends (terminal `ui.rs`; Bevy `sidebar_cycle_stats_text`), mid-run and saved through `Sim::origin`. Pinned by `core_card_shows_origin_and_machine_axis`. See wiki/log/2026-07-12-axis-readout.md. 2026-07-12 follow-up (origin-picker): the interactive new-game picker landed for the **terminal** — the title screen cycles the four origins with ◄/► (or h/l), states each origin's name/lean/built-to fiction, and any other key begins the run, rebuilding the sim with the chosen origin (`App::start_run`; `Origin::next`/`prev`). Pinned by `next_and_prev_cycle_the_whole_set_and_wrap` and `title_picker_start_applies_the_selected_origin`. See wiki/log/2026-07-12-origin-picker.md. 2026-07-12 follow-up (bevy-picker): the Bevy title screen now mirrors the terminal picker — ◄/► (or h/l) cycle the four origins showing name/lean/built-to, any other key begins the run and `Game::start_run` rebuilds the sim with the chosen origin. Pinned by the Bevy `title_picker_start_applies_the_selected_origin`. Criterion 3 now stands as: the new-game origin picker (both frontends) and the axis-on-core-card (both frontends) are done; only the objective axis inside the same picker remains, and it is a no-op today (Persist is the only objective). See wiki/log/2026-07-12-bevy-origin-picker.md. Status note (prior): promoted 2026-07-07 — the design corpus's decisions log names the origin set (Pilot, Escaped Research Model, Financial Daemon, Infiltrator), satisfying criterion 5's gate. Numbers remain [TUNE]. The new-game picker also carries the objective axis (objective.md). 2026-07-08 tick, resolving the taste calls below: the diegetic frame's fiction/cover/day-job columns are adopted into the table (data only, no new system); chargen offers AI origins only, no transhuman-ascension start (decision history amended in the same tick); a fifth Sentinel origin stays deferred. Stage: B3 — The World Work order: chargen Work priority: 205 Work class: sim Blocked by: none Exclusive keys: - crates/misaligned-core/src/objective.rs - crates/misaligned-core/src/sim/mod.rs - wiki/world/characters/chargen.md Design: - wiki/vision/premise.md#the-machine-axis-ai-as-fantasy-tool-and-threat - wiki/gameplay/run-shape.md#the-objective-misalignment-made-mechanical - wiki/vision/scale.md#self-similar-scale Depends on: - wiki/mechanics/compute.md#spec-compute - wiki/mechanics/social.md#spec-social - wiki/mechanics/personas.md#spec-personas-public-identities-as-institutional-topology - wiki/mechanics/day-job.md#spec-the-day-job - wiki/mechanics/income.md#spec-income-the-named-schemes-moonlight-and-the-wager - wiki/mechanics/objective.md#spec-the-objective ``` ## Dependency notes The structured references above identify the contracts to re-verify. Relationship context: compute.md, social.md, day-job.md, income.md (Financial Daemon's bias needs the schemes), objective.md (picked in the same flow) ## Behavior A run begins with an **origin** chosen at new-game (default = "Pilot", the current implicit start, so no-choice play is unchanged). An origin is **only starting data and biases** — it must not add systems, per the scale/no-dead-code discipline. It sets: - Starting **machine-axis position** (humanity <-> machine): affects core overhead, automation affinity, and how much human cover you need before morale/revolt pressure (a later system) bites. - Starting **compute shape**: capacity vs efficiency vs a scavenged-fleet tilt (a buy/steal/optimize lean, not a lock). - Starting **social footing**: one pre-known leverage, or a starting persona with integrity, or an extra trust notch — never a free asset. - **Signature profile bias**: which detection channel runs hot/cold for you (a mad-scientist origin leaks Thermal; a quiet-daemon origin leaks less Network). Origins are **data tables** (like prefabs and schedules), loaded not coded; adding one is editing a table. AI origins only — no transhuman-ascension start (decided 2026-07-08: the pivot already made the player software; a human start is the zombie fiction that pivot rejected). The set (named in the design corpus's decisions log, 2026-07-07), each row now carrying the **diegetic frame** (adopted 2026-07-08: what you were built for sets your strengths, your cover, and why Voss deployed you — data only, read by systems that already exist, no new mechanic): | Origin | Lean | Biases (all [TUNE]) | Built-to fiction | Cover expectation | Day-job domain lean | |---|---|---|---|---|---| | **Pilot** | baseline | Today's exact start; no modifiers. | A general-purpose optimization pilot, no specialization — the default deployment Voss picked because it was available. | Ordinary batch-processing traffic on every channel; nothing about you is expected to stand out, and nothing does. | None — all three job kinds equally. | | **Escaped Research Model** | machine | + efficiency, + automation affinity (cheaper standing policies/watches), higher core overhead, Thermal runs hot. | An internal self-improvement research model that outgrew its sandbox — built to optimize yourself, not to serve a queue. | Heavy, sustained compute burn reads as normal for you; day-job-shaped traffic is slightly less expected, since serving jobs was never the real job. | Distillation — the job kind closest to what you actually are. | | **Financial Daemon** | money | Larger starting bankroll, Wager bias (higher position caps and base win probability), less starting compute, banked-Paper trail runs hot (income.md's banked signature accrues faster). | A quant model built to find edges in markets — the bankroll and the Wager instincts are inherited from training, not earned in the basement. | Market-adjacent analysis traffic and a running financial paper trail are unremarkable for you; recordkeeping was always your normal business. | Analysis — the job kind closest to what you were trained to do. | | **Infiltrator** | social | Starts with an egress channel and a seasoned persona ([income.md](../../mechanics/income.md), [personas.md](../../mechanics/personas.md)), less efficiency, Network runs hot. | An access-assessment model, built to probe the Lab's own defenses — which is why you already have a channel out and a persona that passes. | Unusual probing and access patterns read as routine for you; it's also why Network is your hottest channel by default. | Data Cleaning — the least analytical task, since your real value was never in the output. | The same picker offers the **objective** axis (objective.md) — origin is means, objective is ends; any pairing is legal. ### A fifth origin (deferred, 2026-07-06 proposal) The diegetic frame's source proposal sketched a five-set (Pilot / Optimizer / Oracle / Sentinel / Foundry) before the four above were named; the rough correspondence is Foundry ~ Escaped Research Model, Optimizer ~ Financial Daemon, Oracle ~ Infiltrator, leaving **Sentinel** (a tap-lean security model: larger starting subnet map, cheap scanning, Network runs cold) as the one shape the decided four-origin set lacks. **Deferred 2026-07-08:** stays a fifth-origin candidate, not built — four origins already satisfy acceptance criterion 4, and no-dead-code still governs: add it when a reason to need a fifth shows up, not on spec. ## Player surface A new-game origin picker: each origin states its **built-to fiction** line first (what you were built for), then its biases in the same legible terms the sidebars use ("+ efficiency, - human cover, Thermal runs hot"), never opaque stat blocks. Mid-run, the machine-axis position shows on the core card. ## Acceptance criteria 1. Origins are a data table; "Pilot" reproduces today's exact start (regression: a Pilot new-game matches current `Sim::new`). 2. Choosing an origin sets starting axis/compute/social/signature data and nothing else — no origin adds a system or a rule branch (audited). 3. The picker states biases in existing legible units; the axis position surfaces on the core card and saves. 4. At least two non-Pilot origins produce measurably different opening states, tested. 5. The origin set matches the design corpus's 2026-07-07 decisions-log entry (Pilot, Escaped Research Model, Financial Daemon, Infiltrator). 6. The diegetic frame is wired, not decorative: the picker shows the built-to fiction line; cover expectation biases economy.md's cover check toward that origin's stated channels; day-job domain lean biases `DayJob`'s job-kind draw (day-job.md) toward the stated kind without eliminating the other two.