riprap-nyc / app /stones /__init__.py
seriffic's picture
Stones C1: add taxonomy modules without changing behaviour
f24976f
"""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
# Iteration order for the briefing prompt and trace UI.
DATA_STONES = [cornerstone, keystone, touchstone, lodestone]
ALL_STONES = DATA_STONES + [capstone]
__all__ = [
"ALL_STONES",
"DATA_STONES",
"capstone",
"cornerstone",
"keystone",
"lodestone",
"touchstone",
]