MeridiansMeridians

Projection anatomy — Reading · Graph · Signal [Concept]

Source path: knowledge-base/diagrams/concepts/projection-anatomy.md

# Projection anatomy — Reading · Graph · Signal `[Concept]`

A **Projection** is the third layer of opinion ([three-layers](three-layers.md)): 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](../../knowledge/foundations/PIVOT.md)). 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.

```mermaid
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](../../knowledge/foundations/PIVOT.md). 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](program-loop.md)); the derivation math is shared with Streams ([derivations](derivations.md)).
Open on GitHub

Raw Markdown source