Skip to main content
A reflection wave is the project-level workflow. It runs over a snapshot of every terminal experiment and every claim’s current status, and it ends by publishing a new project graph, approved claim changes, and the next wave of experiments.

States

abandoned is the explicit terminal exit. One wave may be open per project at a time.

Gates

Lenses

Three are fixed — amplify (what’s working, push it), avoid (what’s failing, stop it), entropy (what hasn’t been tried) — and two are written for the wave with distinct charters. Each reads the snapshot independently; none sees another’s findings until synthesis. reflection.create opens the wave.
The project graph pinned by a published reflection wave, rendered in the Reflection page

The project graph a wave publishes.

Consolidation and publish

Passing reflection review makes the research decision authoritative and starts code consolidation: one immutable proposal must account for every experiment, and a separate consolidation_reviewer checks it. The runner then compare-and-swaps that exact proposal into Merv’s central Git ref. Only after that receipt does publish happen, atomically: record the graph version, apply approved claim changes, create the approved experiment wave, record the event.

When a wave is triggered

The project has no status column of its own; its state is derived: Experiment-scoped status calls stay focused on that experiment and carry the project’s reflection signal alongside. Running one: Running research → Reflection wave.