R.I.S.C.E.A.R. Completeness¶
The R.I.S.C.E.A.R. specification is the contract an FCC persona signs with the rest of the system. A persona whose spec is complete is a persona that can be audited, tested, governed, composed, and shipped. A persona whose spec is incomplete is, from an auditor's perspective, a black box — and the FCC framework explicitly refuses to certify it.
This page documents the 10 elements, the v1.3.8 enforcement rules, and how to interpret findings when fcc audit personas --strict flags a persona.
The 10 Elements¶
| # | Element | What it answers |
|---|---|---|
| 1 | Role | Who the persona is, in one sentence |
| 2 | Input | What the persona consumes |
| 3 | Style | How the persona communicates and works |
| 4 | Constraints | What the persona will not do |
| 5 | Expected Output | What the persona produces |
| 6 | Archetype | Which archetypal pattern the persona inherits from |
| 7 | Responsibilities | Concrete duties |
| 8 | Role Skills | Technical and soft skills |
| 9 | Role Collaborators | Named collaboration partners |
| 10 | Role Adoption Checklist | Steps for a human to adopt the persona |
All 10 are required. There is no "optional" element. An empty list is treated as missing.
The schema lives at src/fcc/data/schemas/persona.schema.json.
The v1.3.8 Strict Enforcement¶
From v1.3.8 onward, fcc audit personas --strict is wired into CI and the release gate. The command runs four checks per persona:
- Structural: all 10 R.I.S.C.E.A.R. elements present
- Semantic: each element's contents pass its per-element validator (e.g.
constraintsmust be a non-empty list of strings) - Cross-reference: declared collaborators exist in the registry
- Action consistency: declared deliverables appear in at least one action the persona owns
If any check fails, fcc audit personas --strict exits non-zero and the release gate blocks.
Sample output when a persona is incomplete:
{
"persona_id": "XYZ",
"status": "fail",
"findings": [
{
"rule": "riscear.missing_element",
"element": "constraints",
"severity": "tier_1",
"remediation": "Add a non-empty list of constraints to src/fcc/data/personas/vertical/xyz.yaml"
}
]
}
Interpreting Findings¶
riscear.missing_element¶
One of the 10 R.I.S.C.E.A.R. elements is absent or empty. This is always tier_1. The persona is unshippable until fixed.
Remediation: open the persona YAML, add the missing element, re-run fcc audit personas --strict.
riscear.semantic_violation¶
The element is present but fails a per-element validator. Examples:
constraintscontains a single string instead of a listcollaboratorsreferences a persona ID that does not existresponsibilitiesis a string paragraph instead of a list of responsibility bullets
Remediation: consult the schema at src/fcc/data/schemas/persona.schema.json for the exact shape.
riscear.orphan_collaborator¶
A persona references a collaborator whose ID is not in the registry. This is usually a typo or a stale reference to a removed persona.
Remediation: either correct the ID or remove the collaboration link.
riscear.deliverable_not_produced¶
The persona declares a deliverable that no action produces. This indicates drift between the spec and the action engine.
Remediation: either add an action that produces the deliverable or remove the declaration.
The Why¶
Why enforce completeness strictly? Three reasons, each an auditability principle:
- Legibility before performance. An AI system that cannot be described precisely cannot be certified. R.I.S.C.E.A.R. is the minimum legible description FCC will accept.
- Contract over convention. Conventions drift; contracts are machine-checkable. R.I.S.C.E.A.R. converts tribal knowledge about "what a persona does" into a diffable, testable, auditable artefact.
- Reusability. A persona with a complete R.I.S.C.E.A.R. spec can be cloned, customised, and reused by downstream projects. An incomplete one is stuck in its original context.
Worked Example — Reviewing the RC Persona¶
Let's walk through auditing the RC (Research Crafter) persona.
# Pull just this persona's data
fcc persona show RC --format yaml > /tmp/rc.yaml
fcc audit personas --ids RC --strict --report /tmp/rc_audit.json
The report should show status: pass. If it does not, walk the findings:
{
"persona_id": "RC",
"riscear": {
"role": "PRESENT",
"inputs": "PRESENT (4 items)",
"style": "PRESENT",
"constraints": "PRESENT (3 items)",
"expected_output": "PRESENT (5 items)",
"archetype": "PRESENT",
"responsibilities": "PRESENT (7 items)",
"role_skills": "PRESENT (6 items)",
"role_collaborators": "PRESENT (4 items)",
"role_adoption_checklist": "PRESENT (5 items)"
},
"status": "pass"
}
Every PRESENT line is an audit checkpoint. Open the YAML and spot-check two or three of them by eye: does the declared role match what the persona does in practice? Are the constraints credible and testable? Is the adoption checklist concrete enough that a human engineer could work through it?
If any of those qualitative checks fail, file a finding. The strict command catches structural drift; your eye catches semantic drift.
Persona-Level Audit Matrix¶
Run this matrix once per engagement, ideally as a spreadsheet exported from the audit JSON.
| Dimension | What you check | Automated? |
|---|---|---|
| Structural completeness | All 10 elements present | Yes — fcc audit personas --strict |
| Semantic validity | Each element well-formed | Yes — schema validation |
| Cross-reference integrity | Collaborators exist | Yes — registry lookup |
| Deliverable consistency | Outputs match actions | Yes — action-engine trace |
| Constitution alignment | Persona respects its constitution | Partially — see Governance |
| Model-card currency | Matching model card < 30 days old | Manual |
| Risk-category accuracy | Matches AIActClassifier output |
Yes |
| Quality-gate coverage | At least one gate references the persona | Yes |
Items flagged "Yes" run in CI on every commit. Items flagged "Manual" need reviewer judgement; budget 10-15 minutes per persona for manual spot-check.
Batch Audit — The Whole Registry¶
fcc audit personas --strict --report /audit/personas.json --format json
# Summary
jq '.summary' /audit/personas.json
# Failing personas only
jq '[.personas[] | select(.status=="fail")]' /audit/personas.json
With v1.3.8+, a clean deployment returns zero failures across all 147 personas. Any non-zero result is an audit finding and blocks the release.
Related Reading¶
- Compliance Audit Workflow — the enclosing audit process
- Quality Gates Reference — gates that reference personas
- Evidence Artifacts — OPEN-SCI-009 Agent Transparency Card
- Personas module docs — implementation reference
- Governance module docs — constitutions & tags
- For Developers: Custom Personas — authoring new personas