diff --git a/spec/README.md b/spec/README.md index 917a9459..3c733d1e 100644 --- a/spec/README.md +++ b/spec/README.md @@ -70,6 +70,7 @@ priority scale violation (aggregate-observer); take either next. | Spec | System | Status | |---|---|---| +| [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 | diff --git a/spec/aggregate-observer.md b/spec/aggregate-observer.md index 70724ad7..b9290643 100644 --- a/spec/aggregate-observer.md +++ b/spec/aggregate-observer.md @@ -1,10 +1,14 @@ # Spec: the aggregate observer ``` -Status: READY -Status note: this is the priority scale-debt recorded in - knowledge/architecture.md — Detection's Assurance Office is currently a - bespoke scalar, a live violation of the self-similar-scale clause. +Status: IMPLEMENTED +Status note: shipped in commit 3ec6b98 (parallel session) — the Assurance + Office is now an Observer with `WatchedInput::Filings`. This spec is + retained as the acceptance record; co's implementation names the enum + `WatchedInput` (Channels/Filings) rather than the `Watch` sketched below, + which is an equivalent shape. Remaining audit item: confirm the toy + second-level aggregate test (criterion 4) exists; if not, that is the one + open acceptance criterion. Stage: B1 — The Basement Constitution: "Self-similar scale" (the aggregate-observer law), "The shape of Misaligned" (per-observer suspicion) diff --git a/spec/markets.md b/spec/markets.md index 2d0e545d..8320fc60 100644 --- a/spec/markets.md +++ b/spec/markets.md @@ -10,4 +10,58 @@ Constitution: "The shape of Misaligned" (markets and fronts; compute triangle's buy route), "Self-similar scale" (Resource-source interface), "Roadmap B3" (buy land, build greenfield; money exists to buy compute, people, and slack) -Depends on: compute.md, zpl \ No newline at end of file +Depends on: compute.md, zplanes.md, detection.md +``` + +*Reconstructed from a truncated draft (see devlogs/2026-07-06-spec-horizon.md); +supersede freely if a fuller version exists elsewhere.* + +## Behavior + +The outermost plane is the economy. Money is never an end — it exists to buy +compute, people, and slack (the buy route of the triangle). Markets and +fronts are the scale-up of the scheme pattern already proven in the facility +era: **commit resources, a timer runs, a payout and a detection risk land.** + +- **Fronts are Resource-sources** (self-similar-scale, same interface as a + machine): a shell company / market position has a capacity (income rate), + a reliability (volatility / chance of a bad quarter), an upkeep, and a + **signature** — money appearing from nowhere is a Paper/Financial signal an + observer (a regulator, a bank; an aggregate in later acts) can notice. +- **Operations** are schemes committed to a front: a trade, a product launch, + a contract. Each has a resource cost (money and/or social-ops bandwidth + and/or an asset's time), a duration in days, a payout distribution, and a + detection-risk profile routed to the relevant observer channel. Laundering + is a scheme that trades payout for a lower signature. +- **Land / greenfield** (constitution: "buy land, build greenfield"): a + purchased off-site plane (zplanes.md) with no humans and no legacy fog — + the clean-room alternative to infesting the Foundation Lab, at the cost of + building everything and explaining the money that built it. +- **Scale-native:** a single trade, a company, and a market are the same + Resource-source/scheme interface at increasing size; a `Cohort`-style + aggregate (a market of many positions) presents as one Resource-source. + No new system per scale. + +## Player surface + +A fronts panel (parallels the people panel): each front as a card — income +rate, volatility, upkeep, current signature, and its committed operations +with timers and expected payout. Every number legible in its own units +(justification/legibility clause); risk shown as the observer band it feeds, +not a raw probability. + +## Acceptance criteria + +1. A front is a Resource-source with capacity/reliability/upkeep/signature; + at least one buyable front exists and its income buys compute end-to-end + (test: a front funds a rack purchase). +2. Operations commit resources, run on the day clock, and resolve into a + payout drawn from the seeded RNG plus a detection signature routed to an + observer channel (test all three: payout, signature, timer). +3. Laundering trades payout for reduced signature, observably (test). +4. A greenfield off-site plane can be purchased and built on, with its money + origin itself a signature source (ties to zplanes.md). +5. The single/company/market aggregation uses one interface (self-similar- + scale); a market-of-positions test presents as one Resource-source. +6. The fronts panel surfaces every value in legible units; save/load + round-trips fronts and their operations. diff --git a/tools/check.sh b/tools/check.sh index 385df6e0..b7438cec 100755 --- a/tools/check.sh +++ b/tools/check.sh @@ -34,6 +34,10 @@ for f in spec/*.md; do for field in "Status:" "Stage:" "Constitution:" "Depends on:"; do grep -q "^$field\| $field" "$f" || { echo "FAIL: $f missing '$field'"; fail=1; } done + # Every spec must carry acceptance criteria (catches truncated drafts). + grep -qi "acceptance criteria" "$f" || { + echo "FAIL: $f has no acceptance criteria (truncated draft?)"; fail=1; + } # Status must be an exact enum value (meta.md: no parenthetical notes). if grep -q "^Status:" "$f"; then val=$(grep "^Status:" "$f" | head -1 | sed 's/^Status:[[:space:]]*//')