File size: 1,440 Bytes
f24976f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""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",
]