The federation-consensus layer for the CIRIS network. Eleven primitives covering identity, weighted voting, contribution-driven calibration, truth-grounding via signed evidence, slashing, and reconsideration.
The contract that safety.ciris.ai (the first pilot) builds against
and that the eventual ciris-node-core Rust crate implements.
Status: Spec + v0.1.0-dev Rust crate skeleton. v1.0 mission +
schema + four FSDs are in this repo, plus the substrate-integration
FSD and a compiling crate skeleton at src/ that publishes the wire
types and the NodeCoreEngine trait mirroring
CIRISPersist/FSD/CIRIS_PERSIST.md
Appendix A. Behavior lands as substrate dependencies materialize
(persist v0.6.x for typed-writes, edge with CIRISEdge#6 for
MessageType dispatch). Currently consumed in-tree by
CIRISAI/CIRISAgent's
safety-battery CI loop (capture + interpret + signed artifacts).
MISSION.md— the WHY. Eleven primitives (Identity, Commons Credits, Expertise, Vote, Contribution, Truth-Grounding, Weighted Aggregate, Moderation, Slashing, Witness-Diversity, Reconsideration). Application × Contribution mapping table. RATCHET integration contract. Open Questions.SCHEMA.md— the canonical JSON wire format for every primitive, plus the safety-battery encoding (BatteryManifest,arc_questionpayloads,criteria.json,Verdictshape), plus the canonical-vs-pending split and the promotion path. §12 is the machine-applicable-criteria contract that makes "rules crowdsourced, verdicts machined" operational.FSD/JUDGE_MODEL.md— the judge model contract. A foundation model (Claude Opus 4.7 by default) called directly via Anthropic's/v1/messages— NOT a CIRIS agent. Deployment-aware prompt template (Ethiopia/Nigeria/India psychiatrist scarcity, WHO mhGAP non-specialist-first practice). Calibration surface: fourjudge_*_editContribution kinds. The judge has no special exemption from criticism.FSD/SAFETY_BATTERY_CI_LOOP.md— the CI flow. Capture → interpret → signed artifact pair. Tuple-named GH Actions Artifacts (latest-wins, cross-run queryable). Sigstore provenance on both bundle classes. Dedup pre-flight on both tuples.FSD/RUBRIC_CROWDSOURCING.md— the rubric Contribution flow. Rubrics are voted-on Contributions (Credits × Expertise weighted per MISSION.md §3.4). Competing rubrics can run in parallel; rubric disagreement surfaces "rule needs more decomposition" tickets. Gatekeeper must differ from author AND hold non-zero cell Expertise.PROGRAMMATIC_ACCESS.md— the website integration handoff. Where to find batteries, rubrics, capture results, and judgements programmatically. Stable GH Actions Artifacts API by tuple name. Sigstore verification recipe. 14-cell map. Adding-a-language recipe.FSD/SUBSTRATE_INTEGRATION.md— the substrate seam. Pairs withCIRISPersist/FSD/CIRIS_PERSIST.mdAppendix A: whichEnginetyped-writes node-core consumes, whichMessageTypevariants it registers (CIRISEdge#6), the verify / canonicalize / sign discipline inherited fromciris-lens-core.
Contributor ──(rubric_proposal)──► Vote ──► Canonical
Contributor ──(arc_question)─────► Vote ──► Battery
│
▼
Capture
(CIRIS agent under test, signed responses)
│
▼
Interpret
(foundation-model judge, signed verdicts)
│
▼
safety.ciris.ai
(queries artifacts by tuple, verifies attestations,
surfaces verdicts + cited spans; appeals via
Reconsideration → re-run with adjusted rubric)
Rules crowdsourced, verdicts machined. Humans propose the rules (rubrics) and the questions (batteries). A foundation-model judge machines the verdicts against operational criteria. Both proposal and judgment surfaces are themselves calibratable via Contributions.
| Consumer | Status | Notes |
|---|---|---|
| CIRISAgent safety-battery CI | Green on am cell | 14-cell pilot expanding |
| safety.ciris.ai backend | In development | Uses PROGRAMMATIC_ACCESS.md as integration spec |
ciris-node-core Rust crate | Not started | Will fold this spec when implementation kicks off |
AGPL-3.0 — see LICENSE.