-
Notifications
You must be signed in to change notification settings - Fork 1
Architecture
flowchart TB
D([Directive]) --> RQ["Recall Quality<br/><i>justified prior memories</i>"]
RQ --> BR["Briefing Engine<br/><i>lessons · repeated errors · blind spots</i>"]
BR --> HM["House Mind<br/><i>shared current understanding</i>"]
HM --> C["Council of 14<br/><i>parallel deliberation → convergence</i>"]
C --> G{"Governance Engine<br/><i>constitution enforced</i>"}
G -->|rejected| C
G -->|passes| W["Write: memory · predictions · reputation<br/>House Mind update"]
W --> V([Verdict])
W -.->|"7 / 30 / 90 / 180 days"| OT["Outcome Tracking<br/><i>graded against reality</i>"]
OT -.->|"revises"| HM
The dotted edge is the part most systems do not have: the loop closes. A verdict is not the end — it becomes a prediction that gets graded later, and the grade feeds back into what the House believes.
| Layer | Responsibility |
|---|---|
| Recall | retrieve prior memories, weighted by whether they turned out to be justified |
| Briefing | synthesise the House's own graded history into a brief the council reads first |
| House Mind | the single shared model of current understanding |
| Council | fourteen members deliberating in parallel, then converging |
| Governance | the constitution, enforced — not advisory |
| Reputation | per-member calibrated skill estimates |
| Outcome | predictions graded at fixed horizons |
One SQLite database, schema v5, with reversible migrations.
| Module | Role |
|---|---|
institutional_db.py |
schema owner · migrations · the single connection layer |
council_memory.py |
persists sessions · outcome-weighted recall |
recall_quality.py |
the 5 recall scores + 5 validity states |
deliberation_briefing.py |
synthesises history into a council brief |
house_state.py |
the House Mind · belief evolution |
governance_engine.py |
enforces the constitution · minority tracking |
agent_reputation.py |
Bayesian, calibrated, recency-weighted |
outcome_tracker.py |
7 / 30 / 90 / 180-day reviews |
scheduler.py |
the durable Outcome Clock |
council_intelligence_api.py |
/api/council/* and the dashboard |
Seven policies run at three fixed hooks, not one. Which hook a policy sits on is the whole point of it — a fabrication guard that fired before the action would be guarding the wrong boundary:
| Hook | Fires | Policies |
|---|---|---|
PRE_ACT |
before a side effect leaves the House |
governance.gps2 · shadow.fabrication · approvals.prior_deny · run.tool_allow
|
PRE_VALIDATE |
before output is accepted as valid | cvl.quality_gate |
PRE_COMMIT |
before a claim is committed as belief |
guidance.g1 · warrant.cee_c1
|
Most-restrictive-wins, deny-by-default, every decision audited. The boot log prints each hook
with its own policies; kernel_policy.registered_by_hook() is the authority. See
Security Model and Governance Engine.
The system prompt is assembled from files rather than hardcoded:
IDENTITY.md → AGENTS.md → TOOLS.md → SOUL.md → USER.md
Two variants are built and selected per task — roughly 22k characters full and 13k compact on a
default install — because a long prompt plus many tool schemas can exceed a local model's context
ceiling. The exact sizes are yours, not fixed: they move with your skills, USER.md, and the
generated SELF.md. The boot log prints the real numbers.
→ Next: The Council
SkynetClaw · THE HOUSE · Apache-2.0 · a council that forgets every meeting is not a council
Start
How it works
- Architecture
- The Council
- Institutional Memory
- Recall Quality
- House Mind
- Governance Engine
- Reputation
- Outcome Tracking
Using it
Running it