Skip to Content

Compliance Watch Skills

This page documents the RRC oil & gas vertical — the watch skills survey the five installed RRC packs. The mechanisms (packs, skills, routers, HITL rules) are domain-neutral.

There is no longer a dedicated “Compliance Monitor” agent. Its conversational role — surveying regulatory posture across an operator’s portfolio and pointing the user at what needs attention — is covered by three read-only watch skills plus the Compliance Dashboard. A user reaches the watch skills in a general-mode conversation through the compliance and field_events routers.

How it is reached

Skill keyRouterCovers
compliance_watchcompliancePortfolio-wide compliance posture — which entities are compliant, action-needed, or overdue across domains
filings_watchcomplianceFiling-queue status — what is drafted, in review, or submitted
events_watchfield_eventsThe event feed (the Events page)

These are read-only surveillance skills. When a user actually needs to prepare a filing, the conversation loads the filing skills instead (rrc_rule37 / rrc_rule32), whose own HITL rules gate submission. The watch skills never mutate — they detect, summarize, and hand off.

Historical note: the retired compliance-monitor-agent (agent type compliance_monitor) has no agent_definitions row — permanently, by design. The agent_type enum value remains valid only for historical snapshots and replay. A monitor-typed /execute request degrades to core tools.

The dashboard does the heavy lifting

The persistent, non-conversational compliance view is the entity × compliance matrix on the Compliance Dashboard (rows = entities, columns = compliance domains, color-coded status cells). It is backed by the compliance_status materialized cache and recomputed on schedule or on-demand — not by an agent conversation. The domain axis is registry-driven (GET /compliance/domains), so installing a pack adds a column with zero frontend edits.

Compliance status values

Each entity-domain pair is classified into one of five statuses that populate the matrix:

StatusColorMeaning
compliantGreenNo action needed, all requirements met
action_neededAmberUpcoming deadlines or minor issues requiring attention
overdueRedMissed deadlines, active violations, or exceedances
not_applicableGreyThis compliance domain does not apply to this entity
in_reviewBlueFiling is in progress or under HITL review

How assessment actually runs

Compliance status is computed by the config-driven assessors (R41_CONFIG_ASSESSORS, ON by default since 2026-07-12) from each pack’s assessment recipe — a five-verb DSL with thresholds resolved from rule_versions and pack-declared Cypher. The legacy imperative RRC assessors in compliance/engine.py remain only as a parity oracle / fallback. Graph reads use the KG service’s parameterized {template_id, params} contract; a graph-query failure surfaces as status: partial / 503 — never a fabricated all-compliant matrix.

The watch skills and the dashboard detect and summarize; they never take autonomous remediation action. Preparing exceptions or updating filings is always initiated by a human and gated by the filing skills’ own mandatory HITL checkpoints.

Source Files

FilePurpose
services/agent-config-service/src/agent_config/seed_watch_skills.pySeeds compliance_watch / filings_watch / events_watch
services/agent-config-service/src/agent_config/routers_seed.pycompliance and field_events routers
services/orchestration-engine/src/orchestration/compliance/config_assessor.pyConfig-driven assessors (five-verb DSL)
services/orchestration-engine/src/orchestration/compliance/engine.pyLegacy imperative assessors (parity oracle)
services/compliance-monitor/Deadline / rule-change tracking service (port 8006)
Last updated on