| """Five Stones β conceptual grouping over the FSM specialists. |
| |
| Riprap's FSM runs ~20 atomic specialist actions; the Stones layer is a |
| thin re-grouping that gives the trace UI, the briefing prompt, and the |
| project's public framing five legible roles instead of 20 atomic |
| function calls. |
| |
| Each Stone module exposes the same shape: |
| |
| NAME β display name (e.g. "Cornerstone") |
| TAGLINE β single phrase used as a section header |
| DESCRIPTION β one-sentence description for the README / trace UI |
| SOURCES β list of FSM state keys this Stone aggregates from |
| collect(state) β pull this Stone's documents out of the state dict |
| |
| Order is meaningful: |
| 1. Cornerstone β the hazard reader (static record) |
| 2. Keystone β the asset register (exposure) |
| 3. Touchstone β the live observer (current sensors + EO) |
| 4. Lodestone β the projector (forecast) |
| 5. Capstone β the synthesiser (Granite 4.1 + Mellea) |
| |
| The first four are *data-Stones*; the Capstone IS the reconciler. |
| """ |
| from __future__ import annotations |
|
|
| from app.stones import capstone, cornerstone, keystone, lodestone, touchstone |
|
|
| |
| DATA_STONES = [cornerstone, keystone, touchstone, lodestone] |
| ALL_STONES = DATA_STONES + [capstone] |
|
|
| __all__ = [ |
| "ALL_STONES", |
| "DATA_STONES", |
| "capstone", |
| "cornerstone", |
| "keystone", |
| "lodestone", |
| "touchstone", |
| ] |
|
|