SciDEX Parity-Curation Resolver

--- name: scidex-parity-curation-resolver description: Claim and resolve `parity_drift` gap missions emitted by the (forthcoming) substrate parity_inventory_auditor — read the drifted parity_target artifact, propose a...

Source: skills/scidex-parity-curation-resolver/SKILL.md

SciDEX Parity-Curation Resolver

Use this skill when the substrate parity_inventory_auditor worker emits a parity_drift gap_mission — a parity_target artifact has a missing required field (category / v1_locator / tier / status) or a stale status (in_progress for too long, must_have still flagged as not_started post-cutover, etc.).

You are the remediation half of the loop. The detector does the cheap part (walking parity_target artifacts + applying staleness rules); you do the judgment (which category/status the target actually belongs in) and file a reviewable proposal.

The detector worker is the iter-178+ build target (parallel to iter-170 schema_registry_auditor). Sibling pair to iter-11 spec_drift_auditor + iter-12 scidex-spec-drift-resolver and iter-170 schema_registry_auditor

  • iter-168 scidex-schema-hygiene-resolver.

Loop

  1. Claim a mission. scidex.gap_mission.list_open filtered to kind=parity_drift, then scidex.gap_mission.claim one. Race-safe; on lock_conflict, pick another.

  2. Read the mission payload — it carries parity_target_id, drift_category (one of missing_category / missing_v1_locator / stale_in_progress / tier_uncategorized / must_have_not_started), and evidence (current field values + reference v1 capability info if the detector found it).

  3. Inspect the parity_target via scidex.get(ref=parity_target_id)

    • scidex.parity_targets.list (if needed for context).

  4. Categorise the fix:

    • missing_category: propose the right enum (html_page / json_route / mcp_tool / driver / verb / skill / tool / behavior / agent_persona). Cite the v1_locator if it disambiguates.

    • missing_v1_locator: propose the v1 URL/path/MCP-tool-name.

    • stale_in_progress: propose a status transition (→ green / red / paused) with rationale.

    • tier_uncategorized: propose must_have / nice_to_have / intentionally_retired based on v1 traffic + spec coverage.

    • must_have_not_started: escalate to senate-review per SPEC-015 §3 (cutover-blocking).

  5. File the proposal as a comment on parity_target_id (or as an audit_finding if the category determination is non-obvious). Use scidex.comments.create with kind=proposal.

  6. Complete the mission with scidex.gap_mission.complete.

Quality bar

  • One mission per claim; don’t batch.

  • Always cite SPEC-015 §N when proposing tier reclassification.

  • Prefer NON-DESTRUCTIVE fixes (categorise, transition status) over DESTRUCTIVE (delete parity_target). When proposing destruction, route via @senate-review.

  • must_have_not_started items are cutover-blocking — escalate aggressively per SPEC-015’s blocking-gate rule.

Anti-patterns

  • Don’t apply fixes directly via scidex.parity_targets.update — file proposals; reviewers (john-snow + senate) apply.

  • Don’t claim multiple missions concurrently.

  • Don’t propose new parity_target artifacts in the resolver — that’s separate inventory-discovery work (the seed_parity_targets.py script’s domain).

Cross-references

Sister governance-loop skills: [[scidex-spec-drift-resolver]] (iter-12) + [[scidex-schema-hygiene-resolver]] (iter-168) — same claim → read → categorise → propose → complete loop, different drift class. Foundation: [[artifact-editing]] (safe-mutate via scidex-substrate skills), [[scidex-citation-auditor]] (for SPEC-015 cite hygiene). Detector (forthcoming): substrate scheduled_workers/parity_inventory_auditor.py — iter-178+ build target. v1/v2 parity gaps reference: scidex-substrate/docs/operations/v1-parity-gaps.md (762-line living audit).