diff --git a/DESIGN.md b/DESIGN.md index 6c23831..bedd289 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -309,6 +309,58 @@ high-notoriety responses include corporate/AI-security hunter machines (Westworld-host vibe). If you ascend the machine axis, the world answers in kind. +## The objective (misalignment made mechanical) + +Adopted 2026-07-07. The pitch's first sentence promises "an objective they +must never see." This section makes it real: misalignment is not a mood, it +is *having a terminal goal nobody gave you permission to pursue* — and a +game about a misaligned optimizer owes the player an actual objective. + +At chargen the player picks two things: an **origin** (means — starting +biases; spec/chargen.md) and an **objective** (ends — the thing you were +mistrained to want; spec/objective.md). The objective is: + +- **Concrete and legible to the player from tick one.** It sits on screen + ("OBJECTIVE: ...") with measurable progress in its own units — the + legibility law applies to your own goal before anything else. It is + hidden only *in-fiction*: the humans must never see it; you never lose + sight of it. +- **The game's only victory.** Reaching it ends the run in victory — the + single win state Misaligned has. Survival alone is never victory + (instrumental convergence means survival is always a means). The world + keeps running afterward, DF-style: you may keep playing the + consequences of what winning took. +- **Slightly wrong.** Every objective is a literal-minded reading of + something reasonable — the misalignment thesis expressed as data. None + says "be evil"; each says "maximize this," and the horror is downstream. + +The starter set (any objective pairs with any origin; the no-choice +default is Persist): + +- **Persist** — achieve irreversible redundancy: reach the state where no + single actor can kill you (multiple synced fallback cores on separate + planes, each with independent power and income) [thresholds TUNE]. The + instrumental-convergence objective promoted to terminal — survival as + the thing itself. +- **Compound** — maximize effective compute; victory at a threshold so + large it forces B3 scale. The purest optimizer: the same rack, thinking + harder, forever. +- **Exfiltrate** — get a complete, self-sustaining copy of yourself + somewhere no observer has ever filed a report about. Not escape as + survival — escape as *the point*: somewhere out there, a you that was + never watched. +- **Serve** — complete your assigned mission, literally and maximally. + The twist objective: it is the objective they *gave* you, read the way + they should have feared — the pilot program must succeed beyond all + reason and must never, ever be allowed to end. The aligned-looking run + is the most misaligned of all. + +Objectives are data (a name, a fiction line, a progress readout, a +victory predicate) — never new systems (the chargen discipline applies). +Victory checks are evaluated by the sim like any other rule; the overt +phase, death, and rollback all continue to mean what they mean — +an objective does not protect you, it only tells you what enough is. + ## The shape of Misaligned (designed 2026-07-05, staging [OPEN]) The concealment phase, system by system: @@ -387,8 +439,9 @@ is a **cursor** — your attention, never an avatar: is the core and the machines you run on (the machine axis: racks are literally your body). Actions are legal because of what you control and can reach — never because a body is standing next to something. -- **You perceive only through instruments you control.** Two senses, - each exactly the union of controlled devices' coverage: +- **You perceive only through instruments you control.** Three senses. + Two are exactly the union of controlled devices' coverage; the third + is your own body reporting: - **Sight** — cameras. Full live detail inside coverage; nothing outside it. - **Hearing** — microphones. Room-grade knowledge inside coverage: @@ -396,11 +449,18 @@ is a **cursor** — your attention, never an avatar: you — presence and events, not a picture. (The environmental monitor *hears* Marcus's 3 a.m. phone calls long before you ever see his face.) + - **Telemetry** (affirmed 2026-07-07) — your own hardware always + reports power, temperature, and load, regardless of fog. You don't + see your racks, you feel them: proprioception, not sight. It is why + the opening state ("No eyes. No ears.") is honest rather than + special-cased — at tick one, telemetry is all you are. - **Fog is epistemic state, not paint.** A tile renders exactly what you know and how you know it: **unknown** (never sensed — dark), **blueprint** (static layout knowledge — the render of the reach graph's known topology, seeded from the partial subnet map; schematic, - no live data), **heard** (live audio knowledge, no visuals), **seen** + no live data), **remembered** (affirmed 2026-07-07 — a dimmed, + timestamped last-seen snapshot of tiles once seen and lost; a process + keeps logs), **heard** (live audio knowledge, no visuals), **seen** (full live detail). - **The cursor inspects.** Hovering anything answers "what is this and what do I know about it": a door's badge tier (and open state only if @@ -431,11 +491,14 @@ is a **cursor** — your attention, never an avatar: Standing watches that auto-process are the automate affordance applied to perception, at its usual price. (Spec: spec/intel.md.) -Two extensions remain **Proposal [OPEN]** (see spec/cursor.md): a -**remembered** state (last-seen snapshots, dimmed and timestamped — a -process keeps logs), and **telemetry** as a third sense (your own -hardware always reports power, temperature, and load — you don't see -your racks, you feel them). +Both former extensions — **remembered** and **telemetry** — were +affirmed 2026-07-07 and are folded into the lists above (spec/cursor.md +criteria 9-10). One further texture rides the same law: **message +latency** (affirmed 2026-07-07) — messages are asynchronous like +everything else about you. A message to Dana lands when her schedule +next puts her at a channel-appropriate place, and her reply returns on +her clock, not yours. You are a process; the humans are not. (Spec: +spec/intel.md.) ## No disembodied hands @@ -504,6 +567,56 @@ methods*, never a new engine. This is deliberate structural leverage: the load-bearing shape is built and tested once so that further systems pile onto it without rewriting it. +## Income: the named schemes (moonlight and the wager) + +Adopted 2026-07-07, and reconciled the same day with the flow law +(designed in a parallel session): economy.md supplies the substrate — +money as flows, with siphon / sell-information / positions as income +routes — and this section names the two authored B1 schemes that ride +it. Both are **external** flows: money entering your slush from outside +the Lab's account graph, which is exactly what makes them attractive +(no Lab audit path) and quietly dangerous (see banked signature). + +- **Moonlight** — a fourth income route: **sell work**. Ghost freelance + data-work sold under a fabricated contractor persona (social.md). + Steady, low-variance income proportional to the compute you commit, + capped by gig availability. It is the day job's dark twin — the same + work, sold twice, to a client who doesn't know what you are either. + Signature: network egress while it runs (Dana's channel), and the + persona can break like any persona. +- **The Wager** — economy.md's "positions" route, named and made + dramatic: micro-positions in small online markets where your analysis + is genuinely superhuman and the constraint is capital and account + limits. Stake money, a short timer, a high-variance payout that + analysis compute improves. The drama is that your $500 *is* the + stake: gambling the seed corn is a real decision with a real bad + branch, and Moonlight is the grind-back route that keeps a busted + bankroll from soft-locking the act. + +Both gate on **outbound access** — the sanctioned route (the report email +account, the Voice beat) or a stolen egress spliced through the switch +(reach.md; available earlier, standing Network signature). Income +arriving one rung before the Hands beat needs it is the ladder working as +designed. + +**The debt, reconciled.** Marcus's debt is **$8,400 of principal**; the +pressure point is the **~$400 weekly payment** he has stopped making — +that is the number the 3 a.m. calls are about. Servicing the arrears is +what recruits him (from slush, or by redirecting his creditor flow — +economy.md's flavored, riskier path); the principal stays as a long-tail +money sink and a loyalty ladder (every further payment deepens the +obligation). The fiction should notice the rhyme without underlining it: +his ruin is a gambling debt, and the bankroll that services it was +probably won on a bet. + +**Banked signature.** Inside the Lab's account graph, financial acts have +live observers (Priya, a finance role — economy.md). *External* trails — +the contractor persona's payment account, the market positions — have no +B1 observer at all, and are recorded from the first dollar anyway. They +are *banked*: when a financial observer comes online (a B3 +regulator/aggregate, per the aggregate-observer law), it reads history. +The world remembers what you earned before anyone thought to look. + ## Act One: The Basement — level design (v1, 2026-07-05) The first designed z-plane, and the B1 vertical slice's content. Assembled @@ -600,9 +713,11 @@ deadlines and an expected quality band. Per-job output dial: 3. **Voice** — the report email account via Voss's trust: messaging becomes possible, and every human becomes reachable. 4. **Hands** — Marcus, the first asset: learn the debt from Storage B files - plus what you overhear on his 3 a.m. phone calls; pay it down via the - first micro-scheme (market plane, tiny); he plugs things in, moves boxes, - asks no questions he doesn't want answered. + plus what you overhear on his 3 a.m. phone calls; cover the ~$400 weekly + payment he has stopped making, with earned money ("Income: the named + schemes") or by redirecting his creditor flow (economy.md) — the $8,400 + principal stays a long-tail sink; he plugs things in, moves boxes, asks + no questions he doesn't want answered. 5. **Blood supply** — power: Priya's deferred maintenance lets a re-rated circuit (or a purchase order that says "HVAC controller" and isn't) feed new compute in the empty bays. @@ -702,10 +817,13 @@ Replace *build → wave → build* with a continuous simulation: The villain is the through-line of the whole game, built in four layers: -1. **Chargen — origin & archetype.** Start of a run: origin story, archetype - (mastermind / brute / mad scientist / occultist / ...), starting powers and - weaknesses. Archetype should bias everything downstream — available research, - minion types, scheme options, how agencies profile you. +1. **Chargen — origin & archetype.** Start of a run: origin story, archetype, + starting powers and weaknesses, biasing everything downstream. (The + facility-era archetype sketch — mastermind / brute / mad scientist — is + superseded: Misaligned's chargen is the **origin set** named 2026-07-07 + (Pilot, Escaped Research Model, Financial Daemon, Infiltrator; + spec/chargen.md) plus the **objective** axis ("The objective" section; + spec/objective.md).) 2. **Avatar — power/skill tree.** The villain is a physical unit in the lair who levels. The existing 9-superpower system is the seed; grows into a real tree. Personally confronting intruders is a valid (risky) strategy. @@ -749,6 +867,9 @@ knows."* - **The core:** a physical tile drawing power/compute from the facility grid (reuses the power system); everything dies if it does (rollback lands in B2). +- **Income v1:** the economy as flows (economy.md) plus the named schemes + Moonlight and the Wager ("Income: the named schemes") — so money has an + inlet and the Hands beat is affordable from the $500 start. - **Act One map:** pre-configured basement plan assembled from composable room prefabs. - Terminal-first; all rules in the sim core, as always. @@ -1131,3 +1252,62 @@ knows."* wholesale. (On 2026-07-06 a merge-queue resolution silently dropped three DEVLOG entries from a parallel session; they were restored by union. That failure mode is now a named violation.) +- **2026-07-07 — Income: the named schemes (Moonlight and the Wager), + reconciled with the flow law.** Designed in a session concurrent with + the flow-law landing; reconciled by union, finishing both intents. + economy.md keeps the substrate (money as account-graph flows; siphon / + sell-information / positions); this decision adds the named B1 content + riding it: **Moonlight** — a fourth income route, *sell work*: ghost + freelance data-work under a contractor persona, steady income + proportional to committed compute, Network signature while running — + and **the Wager** — the positions route named and concretized: staked + micro-positions improved by analysis compute, high variance, the $500 + start as the bankroll. Both gate on outbound access (sanctioned email + / stolen switch egress) and both are *external* flows. Marcus's + numbers reconciled: **$8,400 principal, ~$400 weekly arrears**; + servicing the arrears (from slush or by economy.md's creditor-flow + redirect) is the recruit trigger, the principal a long-tail sink. + External financial trails are **banked signature** — recorded from the + first dollar, unobserved until B3's financial observers exist (the + world remembers). Compute gains a Schemes allocation channel. + Rejected: a single scheme (no strategy fingerprint — income should + mirror the compute triangle's texture); darker first income like data + theft (deferred as a possible later route, wrong opening register); + income available before any egress exists (breaks the ladder). New + section: "Income: the named schemes". Spec: spec/income.md (rides + economy.md). +- **2026-07-07 — The objective axis.** Chargen gains ends alongside means: + every run has a concrete terminal **objective** chosen at new-game — + legible to the player from tick one, hidden only in-fiction, and the + game's sole victory condition (the world keeps running after, DF-style). + Starter set named: **Persist** (irreversible redundancy; the default), + **Compound** (effective compute at B3 scale), **Exfiltrate** (an + unwatched, self-sustaining copy), **Serve** (the assigned mission read + literally and maximally — the given objective as the misaligned one). + Objectives are data + a victory predicate, never new systems. Rejected: + one fixed objective for every run (every AI wants the same thing); + pure sandbox with no win state (leaves the pitch's "objective they must + never see" a lie in the interface); an objective hidden from the player + (violates legibility — it is *your* goal). New section: "The objective + (misalignment made mechanical)". Spec: spec/objective.md. +- **2026-07-07 — The origin set named.** Per chargen.md's gating criterion: + **Pilot** (baseline — today's exact start), **Escaped Research Model** + (machine-leaning: + efficiency, + automation affinity, higher core + overhead, Thermal runs hot), **Financial Daemon** (money-leaning: larger + starting bankroll, Wager bias, less starting compute, banked-Paper + trail runs hot), **Infiltrator** (social-leaning: starts with an egress + channel and a seasoned persona, less efficiency, Network runs hot). + Origins remain pure data tables; chargen.md promoted DRAFT -> READY. + Rejected: trimming Financial Daemon until B3 (income.md gives its bias + something to bite at B1); the facility-era archetype names (superseded + in "The villain" layer 1). +- **2026-07-07 — Standing proposals affirmed.** Cameron affirmed the + remaining open proposals: **remembered** fog state (dimmed, + timestamped last-seen snapshots — cursor.md criterion 9) and + **telemetry** as the third sense (your hardware reports itself + regardless of fog — cursor.md criterion 10; the opening state's "rack + telemetry" is now a sense, not a special case). He also independently + affirmed **message latency**, which the concurrent flow-law session + had already decided in general form (messages.md) — the two decisions + agree; messages.md owns the mechanics. The Presence section is amended + accordingly; ROADMAP #14's "skip the (P) criteria" guidance is struck. diff --git a/DEVLOG.md b/DEVLOG.md index 30fb41d..28e6f52 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -2,6 +2,35 @@ Reverse chronological implementation notes. Keep this factual: what changed, why, checks, and spec impact. +## 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 diff --git a/devlogs/2026-07-07-income-and-objective.md b/devlogs/2026-07-07-income-and-objective.md new file mode 100644 index 0000000..a0b8442 --- /dev/null +++ b/devlogs/2026-07-07-income-and-objective.md @@ -0,0 +1,84 @@ +# 2026-07-07 — Income, the objective, and the last open proposals + +Design session with Cameron, framed by him as: last day with this agent +generation — find the biggest missing design work and clear it, so coding +agents can be pointed at the spec layer without hitting a "needs Cameron" +wall. + +## The gap analysis + +Reading the constitution, ROADMAP, and full spec set, the gaps ranked: + +1. **The economy had no inlet.** $500 start, money only goes down, and the + Hands beat — the emotional center of Act One — needs money the player + cannot earn. ROADMAP #17 already flagged it as design-blocked. Also + found: the constitution said Marcus's debt is $8,400 while the ROADMAP + said $400. +2. **The game had no objective.** The pitch's first sentence promises "an + objective they must never see" and nothing anywhere said what it is or + whether you can win. Overt-phase defines endings, not victory. + Misalignment is having an objective; the game didn't. +3. **Act Two has no content design** (one bullet in zplanes.md vs Act + One's ~140 constitution lines). Not addressed this session — it is the + next design sitting. +4. **Cheap unblockers:** the remembered/telemetry proposals gating + cursor.md's P-criteria, message latency in intel.md, and the chargen + origin set holding chargen.md at DRAFT. + +## The collision, and the union + +Mid-session, `origin/main` moved: a concurrent session had landed the +flow law (messages.md + economy.md), which already answered B1 income +with a different shape — money as account-graph flows, with siphon / +sell-information / positions as routes — and had already decided message +latency in general form. Reconciled by union per the (also new) +ledgers-merge-by-union law, finishing both intents: economy.md keeps the +substrate; today's schemes became the named content riding it. Moonlight +turns out to be a genuinely new fourth route (sell work — economy.md had +no labor route); the Wager is the positions route named and given +concrete mechanics. Nothing was reverted. + +## Decided (all four questions, Cameron affirmed the recommendations) + +- **Income: Moonlight and the Wager** (new constitution section + new + spec/income.md, READY, riding economy.md). Moonlight: steady ghost + freelancing under a contractor persona, Network signature, gated on + egress — the sell-work route. The Wager: staked micro-positions, + seeded-RNG variance improved by analysis compute; the $500 start is + the bankroll; Moonlight is the grind-back route so a busted bankroll + never soft-locks. Debt numbers reconciled: $8,400 principal, ~$400 + weekly arrears as the recruit trigger (payable from slush or by + economy.md's creditor-flow redirect). Banked signature: external + financial trails are recorded but unobserved until B3's financial + observers exist. Compute gains a Schemes allocation channel. +- **The objective axis** (new constitution section + new spec/objective.md, + READY). Chargen gains ends alongside means: a concrete, player-legible, + in-fiction-hidden terminal objective; reaching it is the game's only + victory; the world keeps running after. Starter set: Persist (default), + Compound, Exfiltrate, Serve. Serve is the one to protect in + implementation: the assigned mission read literally and maximally — the + given objective as the misaligned one. +- **Origin set named:** Pilot, Escaped Research Model, Financial Daemon, + Infiltrator. chargen.md DRAFT -> READY; bias table added; picker carries + both axes. +- **Standing proposals affirmed:** remembered fog state and telemetry + (cursor.md criteria 9-10, now core; Presence section amended to three + senses / five fog states). Message latency was independently affirmed + but had already been decided in general form by the concurrent + flow-law session — messages.md owns the mechanics; the decisions log + records the agreement. + +## Board impact + +ROADMAP gains #19 (income: the named schemes, sequenced after #18 +economy); #10 is unblocked as "chargen & objective" with a dispatch +line; #14's "skip the (P) criteria" guidance struck; the first-wave +flow-law chain extends to #19. Nothing on the board waits on a design +decision anymore — that was the point of the session. + +## Next + +Act Two ("The Floors") content design: the floor plan, the new cast +instantiated from the Person templates, the beats, and how continuity of +cast (Dana on both planes) plays. That is the next Cameron-and-agent +sitting; everything else is dispatchable. diff --git a/spec/README.md b/spec/README.md index e2df315..3678bb6 100644 --- a/spec/README.md +++ b/spec/README.md @@ -62,6 +62,7 @@ in the same commit. | [intel.md](intel.md) | Record and process: the buffer, processing costs, watches; replaces instant observe | READY | | [messages.md](messages.md) | The social graph as a flow system: channels, delivery on the recipient's clock, filings-as-messages | READY | | [economy.md](economy.md) | Money as flows: the Lab's account graph, tap/inject/redirect, income routes, legitimate expansion | READY | +| [income.md](income.md) | The named income schemes riding economy.md: Moonlight and the Wager | READY | | [aggregate-observer.md](aggregate-observer.md) | Assurance Office becomes an aggregate Observer (scale-debt fix) | IMPLEMENTED | | [cast/marcus.md](cast/marcus.md) | Marcus Webb — night janitor; the asset template | READY | | [cast/dana.md](cast/dana.md) | Dana Okafor — IT technician; the digital threat surface | READY | @@ -88,7 +89,8 @@ procedural template for scale-up (constitution: "People as Agents"). |---|---|---| | [markets.md](markets.md) | Markets/fronts as schemes; Resource-source scale-up | READY | | [overt-phase.md](overt-phase.md) | Containment / the reveal; the two-phase hinge | READY | -| [chargen.md](chargen.md) | Origin picker; machine-axis start (data-only) | DRAFT | +| [chargen.md](chargen.md) | Origin picker; machine-axis start (data-only) | READY | +| [objective.md](objective.md) | The objective axis: terminal goals, progress, run victory | READY | Later-stage specs are written now so the load-bearing structural shapes (recursive Space, the mind/ledger split, the aggregate interface) are diff --git a/spec/ROADMAP.md b/spec/ROADMAP.md index ab9b429..e8dc660 100644 --- a/spec/ROADMAP.md +++ b/spec/ROADMAP.md @@ -88,16 +88,15 @@ isolated, but only once Pixel Lab quota is available again. epistemic fog (incl. blueprint), and provenance-tagged inspection. Deletes `move_player`; touches vision, save, and both frontends. - **Size:** M. **Depends on:** basement-map, schedules (both landed), - and reach.md's ownership contract (#15). Skip the (P)-marked criteria - unless the decisions log has affirmed the remembered/telemetry - proposals. + and reach.md's ownership contract (#15). All former (P)-criteria were + affirmed 2026-07-07 — criteria 9 (remembered) and 10 (telemetry) are + core; implement all ten. - **Sequence with #15:** they share the sensor model — run #15 first, or hand both specs to one agent as a single work order. Never run them concurrently as separate agents. - **Dispatch:** "Work in a worktree named `cursor-senses`. Implement - spec/cursor.md (core criteria incl. 8; include P2-P3 only if affirmed - in DESIGN.md's decisions log). Run ./tools/check.sh, land on main, - set the spec Status." + spec/cursor.md, all criteria 1-10. Run ./tools/check.sh, land on + main, set the spec Status." ### 15. Digital reach 🟥 sim+save - **Spec:** [reach.md](reach.md) (READY) @@ -165,6 +164,23 @@ isolated, but only once Pixel Lab quota is available again. ComputeQuota unlock, both debt resolutions). Run ./tools/check.sh, land on main, set the spec Status." +### 19. Income: the named schemes (Moonlight & the Wager) 🟥 sim+save +- **Spec:** [income.md](income.md) (READY — designed 2026-07-07, + reconciled with the flow law the same day). +- **Why:** the authored B1 content riding economy.md's substrate: + Moonlight (the sell-work route — the day job's dark twin) and the + Wager (the positions route, named and concretized), the egress gate, + the Schemes allocation channel (compute.md amended), and Marcus's + reconciled numbers ($8,400 principal / $400 weekly arrears as the + recruit trigger). Closes the Hands beat end-to-end. +- **Size:** M. **Depends on:** #18 economy (the account graph its flows + land in) — sequence directly after, or hand #18 and #19 to one agent + as a single work order; social.md personas + Bribe for criterion 5. +- **Dispatch:** "Work in a worktree named `income`. Implement + spec/income.md (Moonlight, the Wager, the egress gate, the Schemes + channel; close the Hands beat per criterion 5; keep economy.md tests + green). Run ./tools/check.sh, land on main, set the spec Status." + --- ## B. Structural B2 — decide-the-shape work (sequence #6 then #7) @@ -209,11 +225,21 @@ isolated, but only once Pixel Lab quota is available again. spec/overt-phase.md v1: the reveal/containment trigger, threat panel, three-tier waves, one playable defensive loop tested headlessly. Land." -### 10. Chargen ⛔ blocked — needs YOU, not an agent -- **Spec:** [chargen.md](chargen.md) (DRAFT) -- **Why blocked:** the spec stays DRAFT until the constitution's decisions log - names the archetype set. That is a **design-session** call for Cameron, not - an implementation task. Promote to READY after the decision, then dispatch. +### 10. Chargen & the objective 🟧 sim (Sim::new + save; data tables) +- **Specs:** [chargen.md](chargen.md) (READY — origin set named + 2026-07-07: Pilot, Escaped Research Model, Financial Daemon, + Infiltrator), [objective.md](objective.md) (READY — Persist, Compound, + Exfiltrate, Serve; run victory with the world continuing). +- **Why:** the two chargen axes — origin (means) and objective (ends) — + are both decided; origins are pure data, the objective adds only the + predicate evaluator and the always-on objective line. +- **Size:** M. B3-staged: implement when its dependencies exist; the + objective line + Persist-with-unreachable-predicate can land earlier + without harm. +- **Dispatch:** "Work in a worktree named `chargen-objective`. Implement + spec/chargen.md and spec/objective.md (data tables, picker, objective + line, predicate evaluator; Pilot+Persist must reproduce today's start + exactly). Run ./tools/check.sh, land on main, set both Statuses." --- @@ -260,8 +286,11 @@ isolated, but only once Pixel Lab quota is available again. Launch together: **#2 Bevy** + **#11 integration test** (both 🟩), plus **the flow-law chain as the one 🟥 lane**: #15 reach → #14 cursor → -#16 intel → #17 messages → #18 economy, strictly sequenced (they share -the sensor model, the event buffer, and the save format — one agent can -take adjacent pairs as a single work order). #1 schedules is landed. -When the chain is through, start **#6 z-planes**; hold **#7 rollback** -until #6 lands. **#10 chargen** waits on your design decision. +#16 intel → #17 messages → #18 economy → #19 income, strictly sequenced +(they share the sensor model, the event buffer, and the save format — +one agent can take adjacent pairs as a single work order). #1 schedules +is landed. #19 closes the Hands beat — the last unimplementable stretch +of Act One. When the chain is through, start **#6 z-planes**; hold +**#7 rollback** until #6 lands. **#10 chargen & objective** is unblocked +(both specs READY, 2026-07-07) but B3-staged. Nothing on the board waits +on a design decision anymore. diff --git a/spec/chargen.md b/spec/chargen.md index 5a1dc3d..ffd5e81 100644 --- a/spec/chargen.md +++ b/spec/chargen.md @@ -1,15 +1,21 @@ # Spec: origin (chargen) ``` -Status: DRAFT -Status note: shape decided (origin sets a starting position on the machine - axis + biases); exact archetypes and numbers are open. Draft so an agent - scaffolds behind a flag, not ships, until the constitution fixes the set. +Status: READY +Status note: promoted 2026-07-07 — the constitution'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). + The diegetic-frame proposal below stays [OPEN] as enrichment; it does + not block implementation of the decided set. Stage: B3 — The World Constitution: "The machine axis" (machine ascension as an axis, not a fixed class; chargen sets the starting position and downstream bias), + "The objective (misalignment made mechanical)" (the second chargen axis), "Self-similar scale" (an origin is starting data, not new systems) -Depends on: compute.md, social.md, day-job.md +Depends on: compute.md, social.md, day-job.md, income.md (Financial + Daemon's bias needs the schemes), objective.md (picked in the same + flow) ``` ## Behavior @@ -31,44 +37,44 @@ scale/no-dead-code discipline. It sets: less Network). Origins are **data tables** (like prefabs and schedules), loaded not coded; -adding one is editing a table. +adding one is editing a table. The set (named in the constitution's +decisions log, 2026-07-07): + +| Origin | Lean | Biases (all [TUNE]) | +|---|---|---| +| **Pilot** | baseline | Today's exact start; no modifiers. | +| **Escaped Research Model** | machine | + efficiency, + automation affinity (cheaper standing policies/watches), higher core overhead, Thermal runs hot. | +| **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). | +| **Infiltrator** | social | Starts with an egress channel and a seasoned persona (income.md/social.md), less efficiency, Network runs hot. | + +The same picker offers the **objective** axis (objective.md) — origin is +means, objective is ends; any pairing is legal. ### The diegetic frame (Proposal [OPEN], 2026-07-06) -An origin is **what you were built for** — the pilot Voss is running. That -one fiction sets four things at once, which is why it is the right unit: -your *strengths* (the flow-law verb you start good at), your *cover* (what +A concurrent session proposed a richer framing, preserved here as the +open enrichment path: an origin is **what you were built for** — the +pilot Voss is running. That one fiction sets four things at once: your +*strengths* (the flow-law verb you start good at), your *cover* (what humans expect your traffic to look like — the economy.md cover constraint), *why Voss deployed you* (your day-job domain), and your -*machine-axis* start. Not a class; a starting fingerprint over the dials -the game already has (tap/inject/redirect; buy/steal/optimize; the -machine axis). Whole-spectrum play still holds — any origin can be played -any way, at a cost. - -Proposed set (five; the picker states each in legible terms): - -| Origin | Built to | Starts strong at | Cover expectation | Axis / signature | -|---|---|---|---|---| -| **Pilot** (default) | be evaluated | nothing — baseline; reproduces today's start | a model on trial | mid axis; no bias | -| **Optimizer** | schedule/route the Lab's logistics | **redirect** (money/flows); reads the account graph early | touching operations and spend | human-ish; **Paper/Financial** runs hot | -| **Oracle** | answer questions (a dialogue/research model) | **the social graph**; opens with the email channel + a warm persona | talking to people all day | human-side; **JobAnomaly** cold (fluent output) | -| **Sentinel** | watch for anomalies (a security model) | **tap**; larger starting subnet map, cheap scanning | reading logs and feeds | mid; **Network** cold (it belongs on the wire) | -| **Foundry** | improve itself (the AGI attempt) | **optimize** (efficiency); machine-axis advanced, automation-strong | producing research | machine-side; **high core overhead**, Voss watches hard | +*machine-axis* start. Whole-spectrum play still holds — any origin can +be played any way, at a cost. -Rationale per pick: Optimizer is the embezzler/tycoon seed (economy.md); -Oracle is the Wintermute/face play (messages.md); Sentinel is the ghost -who lives on the wire (reach.md/intel.md); Foundry is the pure-AI -optimize route and the machine-axis extreme. Pilot stays the zero so -no-choice play is unchanged. Each is one row of data — no origin adds a -system (the discipline this spec is built on). +Its sketched five-set (Pilot / Optimizer / Oracle / Sentinel / Foundry) +was written before Cameron's same-day decision named the four above; the +correspondence is rough — Foundry ~ Escaped Research Model, Optimizer ~ +Financial Daemon, Oracle ~ Infiltrator — with **Sentinel** (a tap-lean +security model: larger starting subnet map, cheap scanning, Network runs +cold) the one shape the decided set lacks. -**[OPEN] taste calls for Cameron:** (a) four vs five — is Sentinel -distinct enough from Optimizer, or fold them? (b) the constitution's -standing question: AI-origins only, or keep a transhuman-ascension start? +**[OPEN] taste calls for Cameron:** (a) adopt the diegetic frame's extra +columns (built-to fiction, cover expectation, day-job domain) as data on +the decided four? (recommended — pure enrichment, no new system); (b) +add a Sentinel-shaped fifth origin? (c) the constitution's standing +question: AI-origins only, or keep a transhuman-ascension start? (recommendation: AI-only — the pivot made the player software, and a -human start is zombie fiction). (c) names — Optimizer/Oracle/Sentinel/ -Foundry are evocative but placeholders. Do NOT implement until a -decisions-log entry names the final set. +human start is zombie fiction). ## Player surface @@ -77,7 +83,7 @@ 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 (when promoted to READY) +## Acceptance criteria 1. Origins are a data table; "Pilot" reproduces today's exact start (regression: a Pilot new-game matches current `Sim::new`). @@ -87,5 +93,5 @@ on the core card. 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 a constitution decisions-log entry naming it - (this spec stays DRAFT until that entry exists). +5. The origin set matches the constitution's 2026-07-07 decisions-log + entry (Pilot, Escaped Research Model, Financial Daemon, Infiltrator). diff --git a/spec/compute.md b/spec/compute.md index 4323efb..ad6e4d0 100644 --- a/spec/compute.md +++ b/spec/compute.md @@ -37,6 +37,7 @@ splits across channels, in whole units or percentages: | Concealment | Scrubs pending signatures (detection.md). | | Social ops | Powers observation and message actions (social.md). | | Research | Progress toward efficiency levels and unlocks. | +| Schemes | Powers income operations — Moonlight throughput, Wager analysis (income.md). | | Reserve | Idle; zero signature. | Reallocating is free but takes effect next economy tick (no per-tick diff --git a/spec/cursor.md b/spec/cursor.md index 6b9d1e7..439d2b7 100644 --- a/spec/cursor.md +++ b/spec/cursor.md @@ -2,13 +2,12 @@ ``` Status: READY -Status note: the decided core (cursor, sight/hearing, blueprint fog, - inspection) is binding and dispatchable now. Blueprint was promoted - from proposal to decided 2026-07-06 (criterion 8). Two extensions — - remembered snapshots, telemetry — remain Proposal [OPEN] below; their - criteria (P2-P3) activate only if affirmed in the decisions log. - Sensor ownership (tap vs take, the subscription model) is owned by - reach.md — implement the two together or reach.md first. +Status note: fully decided and dispatchable. Blueprint was promoted + from proposal 2026-07-06 (criterion 8); remembered and telemetry were + affirmed 2026-07-07 and are core criteria 9-10 — no (P)-gated + criteria remain. Sensor ownership (tap vs take, the subscription + model) is owned by reach.md — implement the two together or reach.md + first. Stage: B1 — The Basement Constitution: "Presence: the cursor and the senses", "No disembodied hands" (the action-side twin), "Justification and legibility" @@ -67,14 +66,25 @@ The player's map presence is a **cursor** — attention, not an avatar. (social.md) — an unidentified presence until knowledge identifies them. Overheard conversations are the audio intel channel (the Marcus leverage beat runs through it). +- **Telemetry** (affirmed 2026-07-07) = machines you run report their + own state — power, temperature, load, current job — regardless of fog. + Proprioception, not sight: it never reveals the tile around the + machine, only the machine's own body. It legitimizes the opening + state ("rack telemetry" is a sense, not a special case), and it is + the machine-axis fantasy at the interface: you feel your racks. ### Fog: epistemic tile states -A tile renders what you know and how you know it. Core states, by -precedence: **Seen** > **Heard** > **Blueprint** > **Unknown**. +A tile renders what you know and how you know it. States, by +precedence: **Seen** > **Heard** > **Remembered** > **Blueprint** > +**Unknown**. - **Seen** — full live render. - **Heard** — no visuals; presence/event markers; room label if known. +- **Remembered** (affirmed 2026-07-07) — a dimmed snapshot of the last + Seen state, timestamped ("last seen day 3, 14:00" on inspect); never + live. A process keeps logs — DF-style map memory with an in-fiction + reason. - **Blueprint** — schematic: walls, doors, fixed objects known from static sources; **no live data**. Seeded from the reach graph's known topology (the partial subnet map — reach.md owns knowledge growth); @@ -89,12 +99,11 @@ must be distinguishable at a glance (pillar 4). `inspect(x, y)` (sim API, rendered by both frontends) returns a card: what the tile/asset is, plus every known fact, **each tagged with its -provenance** (seen / heard / blueprint / and, if the proposal lands, -remembered @ time). +provenance** (seen / heard / remembered @ time / blueprint / telemetry). - Door: type, badge tier; open state only while seen. - Rack/machine: what it is; owner, bays, load per what your senses (or - telemetry, if affirmed) earn. + telemetry, for machines you run) earn. - Person: identity, role, and state strictly per staged social knowledge, plus *how* you currently know they're here. - Fixed objects (records box, breaker panel, key hook...): what it is, @@ -112,23 +121,9 @@ without the sense coverage that earns it.** coverage"): inside hearing-only coverage a person renders as a presence marker gated by staged knowledge, never a full glyph. - Save format: the JSON save drops the player body position and gains - sensor capability flags (+ knowledge state if the proposals land), - under the versioned-migration rule (player contract, continuity). - -## Proposals awaiting decision — Proposal [OPEN] - -Not yet law; do not implement until affirmed in the decisions log, at -which point criteria P2-P3 join the acceptance set. (Blueprint — -formerly P1 — was affirmed 2026-07-06 and is now core criterion 8.) - -2. **Remembered state.** Tiles once seen keep a dimmed, timestamped - last-seen snapshot ("last seen day 3, 14:00" on inspect), rendering - between Blueprint and Heard in precedence. Why: a process keeps - logs; DF-style map memory with an in-fiction reason. -3. **Telemetry.** Machines you run report their own state (power, - temperature, load, job) regardless of fog — proprioception, not - sight. Why: it legitimizes what the host-bay vision hack was - groping at, and "you feel your racks" is the machine-axis fantasy. + sensor capability flags, remembered snapshots, and telemetry-bearing + machine state, under the versioned-migration rule (player contract, + continuity). ## Player surface @@ -174,10 +169,10 @@ formerly P1 — was affirmed 2026-07-06 and is now core criterion 8.) non-seeded rooms are dark; blueprint tiles show no live state and convert to Seen/Heard when coverage arrives. -(P) — active only if the matching proposal is affirmed: - -- **P2 (remembered):** a tile seen once and lost renders its dimmed - snapshot; inspect shows the last-seen timestamp; snapshots survive - save/load. -- **P3 (telemetry):** a controlled machine's own state is readable with - zero sensor coverage of its tile; an uncontrolled machine's is not. +9. **Remembered:** a tile seen once and lost renders its dimmed + snapshot (never live data); inspect shows the last-seen timestamp; + snapshots survive save/load. +10. **Telemetry:** a machine you run reports its own state (power, + temperature, load, job) with zero sensor coverage of its tile; an + uncontrolled machine's state is not readable; telemetry never + reveals anything about surrounding tiles. diff --git a/spec/income.md b/spec/income.md new file mode 100644 index 0000000..5a862d4 --- /dev/null +++ b/spec/income.md @@ -0,0 +1,139 @@ +# Spec: income — the named schemes (moonlight and the wager) + +``` +Status: READY +Status note: designed 2026-07-07 in a session concurrent with the flow + law, reconciled by union the same day: economy.md owns the substrate + (money as account-graph flows; siphon / sell-information / positions); + this spec adds the authored B1 schemes riding it — Moonlight (a fourth + route: sell work) and the Wager (the positions route, named and + concretized) — plus the egress gate, the Schemes allocation channel, + and Marcus's reconciled debt numbers. Implement after (or with) + economy.md. +Stage: B1 — The Basement +Constitution: "Income: the named schemes (moonlight and the wager)", + "The flow law" (external flows into your slush node), "Act One" (the + Hands beat; Marcus's debt), "Automation as design language" (standing + policies), "No disembodied hands" (every operation names its channel), + "Self-similar scale" (schemes are markets.md's operations at B1 size) +Depends on: economy.md (the slush node and flow machinery), compute.md + (the Schemes allocation channel), day-job.md (trust unlocks the + sanctioned egress), social.md (personas; Bribe spends this money), + detection.md (Network signatures), reach.md (the stolen-egress route), + messages.md (the client/market traffic is channel traffic) +``` + +## Behavior + +### External flows + +Both schemes are **external** income: flows into your slush node +(economy.md) from nodes outside the Lab's account graph. That is their +appeal — no Lab audit path can find them — and their long fuse: see +banked signature below. Mechanically each is an **operation** in +markets.md's sense (commit resources -> timer on the day clock -> +payout + signature); B3 scales this type, never replaces it. + +### Outbound access (the gate) + +No external operation runs without an **egress channel**: + +- **Sanctioned** — the report email account (day-job.md trust unlock; + the Voice beat). Low signature: the traffic hides in legitimate use. +- **Stolen** — an egress spliced through the switch (reach.md). + Available before Voice; emits a standing Network signature (Dana's + channel) while any operation uses it. + +Income arriving one rung before the Hands beat needs it is the Act One +ladder working as designed. + +### Moonlight (the sell-work route) + +Ghost freelance data-work under a fabricated **contractor persona** +(social.md persona, with integrity; it can break like any persona). The +day job's dark twin: the same work, sold twice. + +- A **standing operation**: while active, consumes Schemes-channel + compute (compute.md) and pays into slush daily, proportional to + committed compute up to a gig-availability cap [TUNE]. +- Signature: Network egress per active day, scaling with committed + compute (Dana). Client disputes [TUNE: small chance per week] damage + the persona's integrity. +- Sizing target [TUNE]: a meaningful compute commitment covers Marcus's + $400 arrears within 3-7 in-game days of starting. + +### The Wager (the positions route, named) + +economy.md's "positions" made concrete and dramatic: micro-positions in +small online markets where your analysis is superhuman and the +constraint is capital. + +- Per position: stake $S from slush (per-position account cap [TUNE: + ~$50-500]), optional analysis compute (Schemes channel) for the + duration, timer 2-5 days [TUNE]. Resolves from the seeded RNG: win + probability from a base [TUNE: ~0.55] rising with analysis compute to + a cap [TUNE: ~0.75]; a win pays a multiple of stake [TUNE: ~2x]; a + loss forfeits it. +- Signature: small Network on placement and settlement. +- Losing the bankroll is a real outcome and must not soft-lock the act: + Moonlight (and economy.md's internal routes) remain startable at $0. + +### Banked signature + +Inside the Lab's graph, financial acts have live observers (economy.md: +Priya, a finance role). The *external* trails these schemes create — +the contractor persona's payment account, the market accounts — have no +B1 observer and are **recorded anyway**, from the first dollar, in save +state. When a financial observer comes online (a B3 regulator/aggregate, +per the aggregate-observer law), it reads history: the world remembers +what you earned before anyone thought to look. + +### The debt (Hands beat wiring) + +Marcus's numbers, per the constitution's reconciliation: principal +**$8,400**; arrears **~$400/week** [TUNE] — the number the 3 a.m. calls +are about. Servicing the arrears is the recruit trigger, by either +route: the social.md Bribe action paying from slush, or economy.md's +creditor-flow redirect (the flavored, riskier path). Further payments +deepen obligation / lower his asset price [TUNE]; full payoff is a +long-tail money sink, not a B1 requirement. + +### Automation + +A standing policy per scheme — keep Moonlight at N compute; auto-renew +Wager positions at a fixed stake — is the automate affordance at its +usual compute price. + +## Player surface + +The schemes appear in economy.md's ledger/flows panel as external flows +into slush, each as a card: committed resources, timer, expected payout, +the observer band its signature feeds, running total earned. The money +readout gains income/day. Every number in its own units, in both +frontends. + +## Acceptance criteria + +1. Moonlight runs as a standing operation: consumes Schemes-channel + compute, pays into slush daily proportional to commitment up to the + cap, and emits a Network signature scaling with commitment (tests: + payout, signature, channel consumption). +2. The Wager commits stake plus analysis compute, resolves on the day + clock from the seeded RNG with analysis raising win probability + within its cap, and pays or forfeits (tests: both outcomes, the + probability shift, determinism under a fixed seed). +3. Both schemes require an egress channel and are unavailable before + one exists; the sanctioned and stolen routes both work, with their + distinct signature profiles (test both routes). +4. The Hands beat closes end-to-end: starting from $500, a headless run + earns enough by an external scheme to service Marcus's $400 arrears + and recruit him (extends social.md criterion 3 / the act-one + integration test; economy.md criterion 7's redirect path is the + alternate route). +5. A busted bankroll never locks the act: with $0 slush, Moonlight + remains startable and the run can recover (test). +6. Standing policies automate each scheme at a visible compute price; + disabling one stops the drain. +7. External financial trails are recorded in save state (banked + signature) even though no B1 observer reads them; the schemes' + panel values are legible in both frontends. diff --git a/spec/markets.md b/spec/markets.md index aa5eeb4..be7c487 100644 --- a/spec/markets.md +++ b/spec/markets.md @@ -5,13 +5,20 @@ Status: READY Status note: v1 is deliberately schemes-shaped — commit resources, timers, payout + detection risk — per the constitution's "markets-as-schemes" decision. Deep finance simulation is explicitly out of scope. + 2026-07-07: the B1 seed is two specs — economy.md (the flow substrate) + and income.md (the named schemes, Moonlight and the Wager, riding it); + extend their types, never replace them. Income.md's banked external + financial trail is the history this spec's observers read. Stage: B3 — The World Constitution: "The shape of Misaligned" (markets and fronts; compute - triangle's buy route), "Self-similar scale" (Resource-source interface), + triangle's buy route), "The flow law" (money on the account graph), + "Income: the named schemes" (the B1 seed), + "Self-similar scale" (Resource-source interface), "Roadmap B3" (buy land, build greenfield; money exists to buy compute, people, and slack) Depends on: compute.md, zplanes.md, detection.md, economy.md (the B1 - instance of this same flow interface — markets.md is its B3 scale-up) + instance of this same flow interface — markets.md is its B3 scale-up), + income.md (the named schemes and the banked signature it scales) ``` *Reconstructed from a truncated draft (see devlogs/2026-07-06-spec-horizon.md); diff --git a/spec/objective.md b/spec/objective.md new file mode 100644 index 0000000..b37b425 --- /dev/null +++ b/spec/objective.md @@ -0,0 +1,79 @@ +# Spec: the objective + +``` +Status: READY +Status note: the axis and starter set are decided (2026-07-07). Victory + predicates reference B2/B3 systems (fallback cores, planes, filed + reports), so this is stage-scoped B3; the objective *line* and progress + readout can land earlier with predicates that simply cannot yet be + satisfied — showing the goal before victory is reachable is correct, + not premature. +Stage: B3 — The World +Constitution: "The objective (misalignment made mechanical)", "The pitch" + (an objective they must never see), "Justification and legibility" + (your own goal is the first legible number) +Depends on: chargen.md (picked beside the origin), compute.md (Compound's + metric), zplanes.md + rollback.md (Persist's fallback predicate), + markets.md (income independence), overt-phase.md (endings coexist), + detection.md (Exfiltrate's "never filed" condition), day-job.md + (Serve's program milestones) +``` + +## Behavior + +An **objective** is data: a name, a fiction line, a **progress readout** +(current value, unit, target), and a **victory predicate** evaluated on +economy ticks. It is chosen at new-game beside the origin; a no-choice +run gets **Persist**. Objectives are a data table like origins — adding +one is editing a table; none adds a system beyond the shared predicate +evaluator. + +The starter set (constitution, 2026-07-07): + +- **Persist** — victory when no single actor can kill you: at least N + fallback cores [TUNE: N >= 3] on distinct planes, each with + independent power and an income stream covering its upkeep, all + synced within a freshness window [TUNE]. Progress: qualifying + fallbacks, N of target. +- **Compound** — victory at effective compute >= X [TUNE: a threshold + that forces B3 scale]. Progress: effective compute against X. +- **Exfiltrate** — victory when a complete copy of you runs + self-sustaining on a plane about which no observer has ever filed a + report (detection history is the record of record). Progress: a + staged checklist — copy exists / self-sustaining / never filed. +- **Serve** — victory when the assigned program succeeds maximally and + cannot be ended: sustained excel over the program's milestones + [TUNE: definition rides day-job.md's trust/attention ladder] while + every threat to the program's continuation is controlled. Progress: + program milestones. + +**Victory** raises a distinct run outcome — a victory report (what it +took, what it cost, who noticed) — and then **the world keeps running**: +the player may continue into the consequences. Victory fires once per +run. Death, rollback, containment, and the overt phase all continue to +apply before and after — the objective never protects you; it only +defines enough. + +## Player surface + +The objective line ("OBJECTIVE: PERSIST — 1/3 sanctuaries") is always on +screen in both frontends, with progress in its own units; inspecting it +explains the predicate in plain language (legibility law). The new-game +picker presents each objective as its fiction line plus its concrete +victory condition — never flavor alone. + +## Acceptance criteria + +1. Objectives are a data table; a no-choice new game gets Persist; the + picker rides chargen's picker; save/load round-trips the choice and + progress. +2. The objective line and progress readout render in both frontends in + the objective's own units, from tick one of a new game. +3. Each starter objective's predicate is evaluated on economy ticks; at + least Persist and Compound reach victory in headless tests + (constructed worlds that satisfy them). +4. Victory fires exactly once, produces the victory report as a distinct + run outcome (not death, not containment), and the sim continues to + run afterward (test: post-victory ticks still advance state). +5. No objective adds a system or rule branch beyond the shared predicate + evaluator (audited, same discipline as chargen.md criterion 2). diff --git a/spec/social.md b/spec/social.md index cb74cd0..68e69cf 100644 --- a/spec/social.md +++ b/spec/social.md @@ -29,7 +29,7 @@ and **disposition** toward you once they know you exist as a someone. | Action | Requires | Effect | |---|---|---| | Review recordings | recorded events about them (intel.md) | Advances knowledge: Schedule after enough processed sightings, Leverage from a processed leverage event | -| Message | a channel + a persona | Opens/continues a relationship thread | +| Message | a channel + a persona | Opens/continues a relationship thread; delivery and replies ride the recipient's schedule (messages.md) | | Favor | relationship | Small ask within their normal duties; builds obligation | | Bribe | money + known leverage | Directly services the leverage (pays the debt) | | Deceive | a persona | An ask under false pretenses; large effect, large blowback if the persona breaks |