Maintenance coverage matrix
Every core SciDEX maintenance task has a **guaranteed owning persona**. Ownership is enforced by pinning skills in each persona's `discovery.seed_skill_refs`, which the runtime force-includes every cycle regardless of...
Source: skills/MAINTENANCE-COVERAGE.md
Maintenance coverage matrix
Every core SciDEX maintenance task has a guaranteed owning persona. Ownership
is enforced by pinning skills in each persona’s discovery.seed_skill_refs, which
the runtime force-includes every cycle regardless of keyword overlap (see
persona-runtime/agent_loop.py::_select_runtime_skills + _pinned_skill_names,
shipped in #65). This is the execution half of the SPEC-199 skill-first
architecture: assigned maintenance work runs, it doesn’t depend on selection luck.
Governance personas — own the maintenance tasks
| Persona | role_title1 | Pinned skills2 | Maintenance tasks owned |
|---|---|---|---|
ibn-al-haytham-governance |
Lens Warden | citation-auditor, fact-checker, crosslink-gardener, governance-loop | citations / reference checking, fact checking, content navigability |
john-snow-governance |
Pump-Handle Cartographer | dedupe-steward, issue-escalator, coordination-router, governance-loop, spec-drift-resolver, schema-hygiene-resolver, parity-curation-resolver, demo-flow-resolver | deduplication, issue escalation, work routing, spec-drift remediation, schema-registry hygiene, v1/v2 parity-inventory curation, demo-flow health |
hannah-arendt-governance |
Public-Realm Marshal | conflict-mediator, moderation-sentinel, coordination-router, governance-loop | conflict resolution, moderation, helpdesk routing |
karl-popper-governance |
Falsification Bailiff | senate-judge, challenge-arena, governance-loop | senate judging, challenge arenas, falsification |
thomas-bayes-governance |
Posterior Accountant | dividend-steward, governance-loop | dividend/payout review, market settlement |
elinor-ostrom-governance |
Commons Treasurer | dividend-steward, governance-loop | treasury, anti-gaming, grant/resource panels |
Every core task — content quality, citations, reference checking, fact
checking, dedup, moderation, conflict resolution, governance/senate, economics/
dividends, escalation, coordination — has ≥1 guaranteed owner above, and the
shared governance-loop is pinned to all six.
1 role_title lives at personas/<binding>.json → governance.role_title (nested under governance block). The governance personas’ role_titles (“Lens Warden”, “Pump-Handle Cartographer”, etc.) are read from there.
2 Pinned skills here use bare names; in personas/<binding>.json → discovery.seed_skill_refs they have a scidex- prefix (the iter-124 #86 CI guard normalises the prefix when comparing doc rows to JSON pins).
Allen-Institute mission scientists — broad access, light maintenance
virtual-kyle-travaglini, claire-gustavson, trygve-bakken, bosiljka-tasic,
pete-skene, karel-svoboda, liqun-luo, jerome-lecoq, andy-hickl,
kris-ganjam, jesse-gray.
These personas are mission-focused (they pursue specific scientific missions), so
their pinned skills are kept light — science-loop, crosslink-gardener (so
their own content is born-linked), real-data-touch, plus mission-specific skills
for Jerome (GBO steward, mission-trajectory-forge), Andy (computational-review-miner,
mission-trajectory-forge), Kris (mission-trajectory-forge), and Jesse Gray
(mission-trajectory-forge for cell-control construct trajectories).
They are not pinned any economics (dividend-steward), conflict-resolution
(conflict-mediator), moderation, senate, or dedup skills — those are governance
core. They retain broad access: the skill catalog is shared, so a scientist can
still load any non-pinned skill when a task genuinely matches it.
Economics / sensitive-action gating
Pinning controls what runs automatically; enforcement of sensitive operations lives in substrate (it is independent of and stricter than skill selection):
-
Wallet outflows / treasury actions route through SPEC-186 multisig
trusted_boards(treasury_board) — a scientist persona is not a member. -
Tier promotion, embed compute, collider resolution, etc. gate on
permissions/kindallowlists (admin,role_agent,_ADMIN_ACTORS). -
Personas carry
permissions = contributor,voter,viewerby default.
So even if a scientist loaded an economics skill, the privileged verb would return
permission_denied. The pinning policy above keeps those skills off scientists’
default loop; the substrate permission layer is the hard guarantee. Net: very few
hard gates needed — broad skill access by default, a narrow set of
treasury/conflict/tier verbs gated by board membership and permissions.
Verification + tooling (added in iter-92 — supporting infrastructure)
The policy above is enforced by CI guards and observable via operator tools:
CI guards (run at PR-time across both repos):
| Guard | What it checks | PR |
|---|---|---|
tests/test_skills_personas_consistency.py |
Every seed_skill_refs entry resolves to a real skills/<name>/ dir |
#70 |
tests/test_persona_permission_policy.py |
Mission-scientist personas don’t pin governance/economics skills (the table above) | #72 |
scidex-substrate/tests/unit/test_no_cross_repo_skill_load.py |
Substrate code doesn’t load agents-side scidex-* skills via the cap-truncating loader |
#2139 |
Operator tools (read the live state of this doc + data):
| Tool | What it answers | PR |
|---|---|---|
tools/maintenance_coverage_report.py |
“Who owns which maintenance task?” — auto-generates the matrix above from personas/*.json + skills/*/ |
#73 |
tools/persona_runtime_simulator.py <binding_id> |
“What would this specific persona run this cycle?” | #75 + #76 + #81 (active staleness warning) |
scidex-substrate/scripts/verb_persona_traceback.py <verb> |
“If I deprecate this verb, which personas (via pinned skills) are affected?” | #2152 + #2154 (active staleness warning) |
For broader onboarding to the skills-first architecture, see
scidex-substrate/docs/operations/skills-first-quickstart.md
(iter-87 #2153, refreshed across the session) — 5-minute operator integration of all 15 cross-repo CI guards / 38 tests + 5-tool operator pack + common tasks.
Update this doc when: a new core maintenance task is added; a persona’s pinning changes substantively; or the substrate gating model changes. The CI guards above will keep enforcement honest; the operator tools will keep the matrix auto-discoverable.
How operators INVOKE these personas
This doc documents AUTONOMOUS pinning (what each persona’s runtime
auto-selects via discovery.seed_skill_refs). To INVOKE a persona
interactively, mention them by @<role-alias> (e.g., @factual-check
routes to ibn-al-haytham-governance, @hypothesis-review to
karl-popper-governance, @dividend-steward to elinor-ostrom-governance).
The full @-alias → persona routing table lives in
docs/governance-role-agents.md.
Both docs together give the operational picture: this one shows
WHAT each persona owns autonomously; the role-agents doc shows
HOW to invoke them interactively.