MeridiansMeridians

Projection anatomy — Reading · Graph · Signal [Concept]

From the Meridians Wiki · Public · Maintained · joint

A Projection is the third layer of opinion (three-layers): a live forward read that is never marked true or false — it is the reasoning behind a Position, and it is the Position that gets graded (PIVOT). It is not a single number — it is an assembly of three parts that keep it honest and keep it current. Like a GPS, it maintains a read of the road; it does not grade the trip afterward.

flowchart TB
    subgraph Anchor["how it is anchored"]
        direction TB
        Reading["**Reading**<br/>a cohort of Futures,<br/>softmax-priced by priorLogit"]
        Graph["**Reasoning Graph**<br/>the *why* — the causal scaffold<br/>the futures were chosen from"]
        Reading -.->|"grounded in"| Graph
    end

    Reading -->|"open: outcomes + opening stance"| Proj

    subgraph Proj["the Projection — maintained while the question is live"]
        direction TB
        Stance["priced stance over the outcomes"]
        Monitor["**monitor** — watches the domain's<br/>internal signal delta on a cadence"]
        Track["trajectory — ordered Checks<br/>(a sparkline of how the read moved)"]
        Monitor --> Stance --> Track
    end

    Evidence(["Signals — fresh Notes + Research<br/>since lastRunAt"]) -->|"applied as a Check"| Monitor
    Proj -->|"horizonAt passes"| Dorm(["dormant<br/>— read not marked true/false;<br/>its Position is graded"])

Invariants

  • A Reading is compulsory. A Projection cannot open without one: the Reading's Future set is the projection's outcome set, and its softmax distribution is the opening stance. There is no parallel math — a projection number is a Reading's softmax; movement is evidence re-pricing that same distribution.
  • The Graph is the "why". The Reasoning Graph (source merge / coordination-plan / manual) records the causal reasoning behind the cohort. A live projection protects its reading and graph (neither can be deleted directly), but deleting the projection releases them by default — the reasoning outlives the call as free-standing arc artifacts. Taking them down with it is an explicit cascade opt-in (the confirm dialog's tick); the same release-not-cascade rule holds one level down, where deleting a Reading releases the graphs that grounded it.
  • Signals re-price; they never resolve. The monitor wakes on a cadence (cadenceForHorizon: tighter near-term, looser long-horizon), reads the delta of Notes + Research since lastRunAt, and applies a Check on a non-empty delta. A Check moves the stance and extends the trajectory — it is never a verdict.
  • No Brier on the read itself. A Projection stays live until horizonAt, then goes dormant; it is never marked true or false. What is measured is the Position it argued for and, across many, the engine's Calibration — reversed 2026-08-03, see PIVOT. Competing projections (other members' takes over the same outcomes) coexist without a winner.

Where it lives: src/types/domain/reading.ts (Reading · SavedReasoningGraph · Projection · CompetingProjection), src/lib/core/position/ (position · suggest · window-monitor · run-all · schedule), src/lib/core/program/project.ts (the Program's Project task). The Program keeps it current (program-loop); the derivation math is shared with Streams (derivations).