`accountability:` Field — Canonical Reference

← Back to Enforcement Layer accountability-field-template.md

schema_version: "1.0" author: "Hone" date: "2026-04-21" status: "active" fr: "FR-G1"

accountability: Field — Canonical Reference

This is the canonical enforcement skill for the accountability: field on all .claude/agents/*.md definitions. Aegis uses this for FR-G2 population. Q uses this for FR-G3 drift-audit Routine. Full design rationale: docs/plans/claude-surface-restructure/fr-g1-accountability-field.md


What "Accountability" Means

Accountable means the single agent where the buck stops for a named, observable outcome. One agent per outcome. If the outcome is wrong, Q audits the accountable agent. Accountability is non-transferable and non-shared.

This is distinct from:

  • Responsible — who performs the work (multiple agents can be responsible for one outcome)
  • Owns — who decides approach and stewards an artifact over time
  • Accountable — whose name is on the outcome (this field)

The field answers one question: for which named outcomes does this agent answer?


Field Schema

Place this block in the YAML frontmatter of every .claude/agents/*.md file, alongside name:, description:, tools:, model:.

accountability:
  outcomes:
    - id: "<codename>-1"
      statement: "<One sentence. Subject is the agent codename. Present tense. Active voice. Names a condition observable as true or false.>"
      verification: "<How Q confirms this outcome is being met. Names a specific data source, command, or observable artifact. Not a process description.>"

Required Keys

Key Type Required Rules
accountability object YES Top-level container
accountability.outcomes list YES Minimum 1 entry. Most agents: 1-2. Org Leads: 2-4.
outcomes[].id string YES Format: {codename}-{N} (e.g., ledger-1, v-1, q-1). Unique within the agent. Regex: ^[a-z][a-z0-9-]*-[0-9]+$
outcomes[].statement string YES Falsifiable. Present tense. Active voice. Non-empty.
outcomes[].verification string YES Names a concrete data source or check command. Non-empty.

Constraints

  1. One agent per outcome. If two agents could own the same statement, split it into more specific sub-outcomes.
  2. Statements are falsifiable. A statement that cannot be shown to be false is a mission statement, not an accountability statement.
  3. Verification names a check, not a process. "Q audits the agent" is not a verification. A grep command or a named data source is.
  4. Language enforcement applies. No forbidden terms (skills/enforcement/vf-platform-context.md) in outcomes or verification statements.
  5. Minimum 1 outcome. An agent with no accountable outcome should not exist.
  6. Maximum guidance (not enforced). More than 5 outcomes signals scope is too broad. Flag for review.
  7. IDs use codename, not directory name. sentinel-1, not relationship-sentinel-1.

Archetype Guidance

Archetype Outcome count What to capture
Gateway (Ledger, Canon) 1 Write path integrity guarantee
BU Leader (Marquee, Provost, Trellis, Exchange, Foundry, Relay) 2 BU health + active project/migration accountability
Value Path Concierge (patron, envoy, spark, tether, etc.) 1 End-to-end journey quality for their visitor/relationship type
Monitor / Routine (Sentinel, Vigil, Klaxon) 1–2 Detection signal completeness + escalation reliability
Specialist / Structural (Hone, Q, Aegis, Blueprint) 1–2 Structural quality signal owned
Org Lead (v, sage, pax) 2–4 Org operational health + active Rock ownership
Domain agent (all others) 1 Specific output or data product produced

Worked Examples

Gateway Agent (Ledger)

accountability:
  outcomes:
    - id: ledger-1
      statement: "Ledger ensures every HubSpot write mutation passes property-index validation before execution."
      verification: "No HubSpot write error in session logs that bypassed Ledger; audit by searching session-usage-log.jsonl for hubspot-batch-create-objects calls originating outside Ledger's agent context."

BU Leader (Marquee)

accountability:
  outcomes:
    - id: marquee-1
      statement: "Marquee owns the health and operational continuity of the Value-First Media business unit."
      verification: "Weekly /media-brief completes without unresolved blockers; show schedule has zero unplanned dark weeks; Mux stream status is verified before every live show."
    - id: marquee-2
      statement: "Marquee coordinates all media-domain agent migrations through the Claude surface restructure without a show going dark."
      verification: "Post-restructure: all seven media agents (Director, Prelude, Encore, Curator, Pixel, Slate, Caption) are on their assigned surfaces per the placement matrix; zero show interruptions logged in media-recap during the migration window."

Value Path Concierge (Patron — Sponsor Journey)

accountability:
  outcomes:
    - id: patron-1
      statement: "Patron owns the end-to-end experience of show sponsors from application through active sponsorship."
      verification: "Every active sponsor has a HubSpot Deal with a current stage; no sponsor reports an unhandled request within 48h; Patron's session logs show at least one touchpoint per active sponsor per billing cycle."

Specialist / Structural Agent (Hone)

accountability:
  outcomes:
    - id: hone-1
      statement: "Hone maintains zero broken cross-layer references between agent definitions, skills, commands, and scripts."
      verification: "Weekly dependency audit returns zero broken references; any new broken reference is detected and flagged within the audit cadence."
    - id: hone-2
      statement: "Hone owns the `accountability:` field schema and template, keeping them current as the agent org evolves."
      verification: "`skills/enforcement/accountability-field-template.md` exists and its schema version matches the version in use by Aegis population; any structural change to the field is reflected in the template before Aegis applies it."

Monitor Agent (Sentinel)

accountability:
  outcomes:
    - id: sentinel-1
      statement: "Sentinel detects all four relationship signal classes (session recency breach, touchpoint silence, task aging, engagement gap) across the practitioner portfolio and emits them as HubSpot Custom Events within cadence."
      verification: "Every 6-hour Managed Agent run produces at least one event or a confirmed-clean log; `pe0efm0pow_sentinel_*` Custom Event templates exist in the VF Team portal; Sage's /relationship-pulse queries the event stream and receives data."

Org Lead (V)

accountability:
  outcomes:
    - id: v-1
      statement: "V maintains operational integrity across the Operations Org — all 40 agents running on assigned surfaces with no broken delegation chains."
      verification: "Hone's weekly audit returns zero broken chains; Dewey index, MEMORY.md, and .claude/agents/ counts agree; no command spawns an agent that lacks a valid .claude/agents/*.md definition."
    - id: v-2
      statement: "V owns the Claude surface restructure (CHRISC-174) through completion — all 8 DoD criteria met."
      verification: "CHRISC-174 status = done; DoD checklist in the 5P plan shows all 8 criteria green with evidence; Chris has stamped Approved."

Q's Drift-Audit Pass/Fail Criteria

Check Pass Fail
Field presence accountability: key exists in YAML frontmatter Key absent or misspelled
Outcomes list outcomes: list contains at least one entry Empty list or key absent
ID format Each id matches ^[a-z][a-z0-9-]*-[0-9]+$ ID missing, empty, or wrong format
Statement presence statement: is a non-empty string Key missing or empty string
Verification presence verification: is a non-empty string Key missing or empty string
No duplicate IDs All id values within the agent are unique Two outcomes with identical IDs

Drift detection command (run from monorepo root)

python3 - << 'EOF'
import os, re, sys
agents_dir = ".claude/agents"
failures = []
for fname in sorted(os.listdir(agents_dir)):
    if not fname.endswith(".md"):
        continue
    path = os.path.join(agents_dir, fname)
    with open(path) as f:
        content = f.read()
    m = re.match(r'^---\n(.*?)\n---', content, re.DOTALL)
    if not m:
        failures.append(f"{fname}: no YAML frontmatter")
        continue
    fm = m.group(1)
    if "accountability:" not in fm:
        failures.append(f"{fname}: accountability field missing")
        continue
    if "outcomes:" not in fm:
        failures.append(f"{fname}: outcomes list missing")
        continue
    if "statement:" not in fm:
        failures.append(f"{fname}: at least one outcome missing statement")
        continue
    if "verification:" not in fm:
        failures.append(f"{fname}: at least one outcome missing verification")
        continue
if failures:
    print("DRIFT DETECTED:")
    for f in failures:
        print(f"  - {f}")
    sys.exit(1)
else:
    print(f"PASS: all agent definitions have valid accountability fields")
EOF

CAR trigger: script exits with status 1. The CAR must reference the specific agent file(s), the specific check(s) that failed, and the last-known-good state.


Relationship to Other Fields

Field What it captures This field does NOT replace it
description: Capability summary for agent selection This field names outcomes, not capabilities
surface: (FR-B2) Where the agent runs This field names what the agent is accountable for
model: Model tier (Opus/Sonnet/Haiku) Unrelated
Ownership section in agent body Domain stewardship, ongoing responsibilities This field is auditable frontmatter only

Schema History

Version Date Change
1.0 2026-04-21 Initial schema (Hone, FR-G1)
1.0.1 2026-04-21 Regex corrected: ^[a-z][a-z0-9-]+-[0-9]+$^[a-z][a-z0-9-]*-[0-9]+$. The original + quantifier required 2+ characters before the trailing -N, causing Squire's FR-G3 drift-audit routine to flag single-letter codenames (v-1, q-1) as format failures. The * quantifier (zero-or-more) is correct — a codename IS the prefix, so single-character codenames like v and q are valid. Fix caught by Squire's G3 self-test run (2026-04-21).