diff --git a/wiki/log/2026-07-18-financial-mail-dispatch.md b/wiki/log/2026-07-18-financial-mail-dispatch.md new file mode 100644 index 00000000..dfef24a9 --- /dev/null +++ b/wiki/log/2026-07-18-financial-mail-dispatch.md @@ -0,0 +1,26 @@ +# The financial-mail decision gets a work order + +``` +Type: log +``` + +Fresh audit of `wiki/mechanics/economy.md`. The runtime claims verify +(`tap_accounting` direct-book read, exact-or-rejected purchase-order +injection, Financial signatures scaled to the take and routed to Priya), +and the 2026-07-17 financial-mail decision (issue #11: financial paperwork +becomes interceptable financial-record messages; discovery only through the +mail) is honestly marked decided-not-yet-runtime in both owning specs. + +The gap was dispatch. Both economy.md and messages.md deferred the build to +"the financial-mail work order" — and no such work order existed anywhere: +ROADMAP's generated index had no row, so the decision was unreachable from +the dispatch board and would sit until someone re-read the status notes. + +messages.md now owns it, reopened by the intel.md precedent (a shipped spec +carrying a live follow-on order): `Work order: financial-mail`, priority +70, class save (it retires the serialized `MessageChannel::Financial` +variant into an accounting-carrier capability), exclusive keys over +messages.rs, sim/economy.rs, sim/communications.rs, save.rs, and the two +owning wiki pages. `tools/work_orders.py write` regenerated the live index +— the order sits in Current lanes after the character sims — and the +ROADMAP prose entry for #17 records the reopening. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index 1f8165a1..5e384c35 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -36,6 +36,11 @@ add or amend a session log, then re-run the generator. - Intent: (see session log) - Log: [wiki/log/2026-07-18-moonlight-persona-card.md](2026-07-18-moonlight-persona-card.md) +## 2026-07-18 - The financial-mail decision gets a work order + +- Intent: (see session log) +- Log: [wiki/log/2026-07-18-financial-mail-dispatch.md](2026-07-18-financial-mail-dispatch.md) + ## 2026-07-17 - Attached verb lines stay white and gray - Intent: (see session log) diff --git a/wiki/mechanics/messages.md b/wiki/mechanics/messages.md index edb5277f..aec77205 100644 --- a/wiki/mechanics/messages.md +++ b/wiki/mechanics/messages.md @@ -2,20 +2,34 @@ ``` Type: spec -Status: IMPLEMENTED +Status: IN PROGRESS Status note: IMPLEMENTED for the four delivery channels (Email, Phone, In-person, Filing) and their payloads; message-thread display lives in - Operations PEOPLE (operations-workspace.md). + Operations PEOPLE (operations-workspace.md). REOPENED 2026-07-18 to + dispatch the financial-mail decision below; the shipped channel behavior + is unchanged. DECIDED 2026-07-17, not yet runtime (issue #11): financial paperwork is mail — a **financial-record payload** on the existing channels, retiring the overloaded `MessageChannel::Financial` enum into an accounting-carrier capability that emits those records. Discovery of the Lab's money becomes interception of that mail (economy.md), and the current direct-book-read - runtime (`tap_accounting`) stands until the migration work order lands. + runtime (`tap_accounting`) stands until the `financial-mail` work order + (this spec's, below) lands. See criterion 8; the [TUNE] plausibility of a forged record passing and the banked reconciliation that later catches it ride economy.md and aggregate-observer.md. Stage: B1 — The Basement +Work order: financial-mail +Work priority: 70 +Work class: save +Blocked by: none +Exclusive keys: + - crates/misaligned-core/src/messages.rs + - crates/misaligned-core/src/sim/economy.rs + - crates/misaligned-core/src/sim/communications.rs + - crates/misaligned-core/src/save.rs + - wiki/mechanics/messages.md + - wiki/mechanics/economy.md Design: - wiki/mechanics/system-laws.md#the-flow-law-signals-messages-money - wiki/interface/presence.md#presence-the-cursor-and-the-senses diff --git a/wiki/process/ROADMAP.md b/wiki/process/ROADMAP.md index 600366eb..06508ac2 100644 --- a/wiki/process/ROADMAP.md +++ b/wiki/process/ROADMAP.md @@ -26,6 +26,7 @@ not a second status owner. | 62 | `priya` | [Priya Sharma — facilities manager](../world/characters/priya.md) | READY | sim | - | | 63 | `dana` | [Dana Okafor — IT technician](../world/characters/dana.md) | READY | sim | - | | 64 | `ray` | [Ray Delgado — night security](../world/characters/ray.md) | READY | sim | - | +| 70 | `financial-mail` | [messages — the social graph as a flow system](../mechanics/messages.md) | IN PROGRESS | save | - | ### Held or blocked @@ -279,8 +280,13 @@ is retired — flat materials, Pixel Lab scrubbed.) result pop-ups. `operations-workspace.md` owns the first implementation lane; this work order remains held until that shared interface lands. -### 17. Messages: the social graph as a flow system 🟥 sim+save — DONE 2026-07-08 -- **Spec:** [messages.md](../mechanics/messages.md) (IMPLEMENTED) +### 17. Messages: the social graph as a flow system 🟥 sim+save — REOPENED 2026-07-18 +- **Spec:** [messages.md](../mechanics/messages.md) (IN PROGRESS — the four + delivery channels shipped 2026-07-08; reopened as the `financial-mail` + work order to build the issue-#11 decision: financial paperwork as + interceptable financial-record payloads, retiring + `MessageChannel::Financial` into an accounting-carrier capability, with + economy.md's tap/inject discovery moving onto that mail) - **Why:** the general message-passing system the flow law requires — channels with read conditions, delivery on the recipient's clock, authored traffic (Marcus's 3 a.m. call becomes phone traffic), diff --git a/wiki/process/specs.md b/wiki/process/specs.md index fed23f30..75adf76e 100644 --- a/wiki/process/specs.md +++ b/wiki/process/specs.md @@ -53,7 +53,7 @@ replaced the old `spec/`/`knowledge/` directory split. | [../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 | IN PROGRESS | | [../mechanics/machine-work.md](../mechanics/machine-work.md) | machine work — delegation, visible tokens, and the byproduct network | IMPLEMENTED | -| [../mechanics/messages.md](../mechanics/messages.md) | messages — the social graph as a flow system | IMPLEMENTED | +| [../mechanics/messages.md](../mechanics/messages.md) | messages — the social graph as a flow system | IN PROGRESS | | [../mechanics/people-tokens.md](../mechanics/people-tokens.md) | people and tokens — carriers, attention, trust | IN PROGRESS | | [../mechanics/plots.md](../mechanics/plots.md) | plots — authored manipulation stories | READY | | [../mechanics/reach.md](../mechanics/reach.md) | digital reach | IMPLEMENTED | diff --git a/wiki/process/tick-ledger.md b/wiki/process/tick-ledger.md index df220307..d8d133cd 100644 --- a/wiki/process/tick-ledger.md +++ b/wiki/process/tick-ledger.md @@ -46,7 +46,7 @@ Verdicts: **clean** (slice and code agree), **finding** (acted this tick), | `wiki/mechanics/cursor.md` | 2026-07-18 | finding | re-audit: `fog_at` precedence, `inspect`, `person_label`/`observer_label`/`person_glyph` gates, `Sensor.sees`/`hears` flags, and the cursor's absence from the save all still verify (prior pins stand); the drift was two phrases presenting the retired versioned-migration rule as current (criterion 1's parenthetical, the design-notes save-format bullet) — both now state the current-version-only policy and the release-era ladder owed at first public release; number-free wording, so the save-claim gate could not see it | | `wiki/mechanics/intel.md` | 2026-07-12 | clean | code matches: buffer bounded at `INTEL_BUFFER_CAPACITY` 24 (drop-oldest-unprocessed), `SIGHTINGS_FOR_SCHEDULE` processed sightings stage `Knowledge::Unknown -> Schedule` (`communications.rs`), one pooled inbox with a single `AutoReviewRecordings` thought tap (WatchPerson retired to migration), pinned by `processed_sightings_stage_schedule_and_buffer_is_bounded` | | `wiki/mechanics/research.md` | 2026-07-12 | clean | code matches: `Track::ALL` = Efficiency/Tradecraft/Perception/Routing (spec order + serialization order), `EFFICIENCY_MULT_PER_LEVEL` 1.15 and `ROUTING_SPEED_MULT_PER_LEVEL` 1.50 match the per-level effects, one active track (`Research::active`, pinned by `only_the_active_track_accrues`), Tradecraft scrub multiplier 1.5; v20 three-track saves pad Routing on load | -| `wiki/mechanics/economy.md` | 2026-07-12 | clean | sampled the concrete claims on this mature 10-criterion spec: slush starts $0 (`account.rs:278`), purchase-order inject is exact-or-rejected (`purchase_order_injection_is_exact_or_rejected`, "a rejected order leaves no transfer"), inject/redirect emit scaled financial signatures to Priya, and the income routes settle through slush — all agree; criteria have tests (`siphon_and_redirect_operate_on_scheduled_flows`, `inject_and_redirect_emit_scaled_financial_signatures`, `injection_positions_and_intel_sales_settle_through_slush`) | +| `wiki/mechanics/economy.md` | 2026-07-18 | finding | re-audit: runtime claims still hold (`tap_accounting`, `financial_records_waiting`, `review_financial_records`, exact-or-rejected injection, scaled Priya signatures) and the 2026-07-17 financial-mail decision is honestly held as decided-not-yet-runtime in both owners; the gap was dispatch — economy.md and messages.md both defer to "the financial-mail work order" but no such order existed on the board. messages.md is REOPENED as its owner (`financial-mail`, priority 70, class save) and the generated index carries it — [log](../log/2026-07-18-financial-mail-dispatch.md). Prior sampled audit (2026-07-12): slush starts $0 (`account.rs:278`), purchase-order inject is exact-or-rejected (`purchase_order_injection_is_exact_or_rejected`, "a rejected order leaves no transfer"), inject/redirect emit scaled financial signatures to Priya, and the income routes settle through slush — all agree; criteria have tests (`siphon_and_redirect_operate_on_scheduled_flows`, `inject_and_redirect_emit_scaled_financial_signatures`, `injection_positions_and_intel_sales_settle_through_slush`) | | `wiki/mechanics/income.md` | 2026-07-18 | finding | Beacon feel note 5 verified as a real bug: the embedded contractor-persona field was never written, so the Moonlight card, the start-row persona pricing, and the agent status line all read a dead `None`; earning itself was correct (schemes mirrors the WORK share) but illegible at 0.0. Removed the dead field, routed every reader through `Sim::moonlight_persona` (persona-world link), added the stalled-earning card cue, regression test, and spec amendment — [log](../log/2026-07-18-moonlight-persona-card.md). Prior Wager/egress audit (2026-07-12) stands: Wager constants match (`WAGER_STAKE_CAP` 300, base 0.55, cap 0.75, mult 2x, analysis divisor 400), Marcus's $400/week arrears is the modeled creditor flow (`account.rs`) while the $8,400 principal is narrative-by-design (spec states full payoff is not a B1 requirement), egress/banked-signature present, and all 7 criteria have passing tests (moonlight payout/signature, wager outcomes/cap, egress routes, hands-beat-from-zero, busted-bankroll) | | `wiki/mechanics/schedules.md` | 2026-07-12 | finding | mechanism matches code (`ScheduleBlock` start/end/room, single `DAY_TICKS`=400 clock, `person_glyph` `?`-until-Schedule, erratic day-hash drift, per-instance data, all 5 criteria have passing tests); tightened stale Act One prose — Ray patrols dock/stairwell/storage not "corridors", Priya has no "office-off-plane" block, Voss's two blocks are both server-room — to match `People::act_one` | | `wiki/mechanics/social.md` | 2026-07-12 | clean | code matches spec: `AssetKnowledge` reliabilities 0.7/0.85/0.95 and knowing certainty floor 30 (`person.rs`), `person_label` staging, `USEFUL_WORK_TRUST`, and the named asset-task/recruit/badge pins all exist; `personas.md` correctly depends on this baseline, not the reverse, so its omission from Depends is right |