{
  "schema_version": 1,
  "rules": [
    {
      "glob": "docs/orchestration-audit/auditor-reports/S*-report.md",
      "lifetime": "delete-once-served",
      "served_when": "The run's synthesis findings doc (docs/orchestration-audit/<audit-date>-findings.md) has been written and verified; these per-session reports are the raw inputs it condenses.",
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "calibration pass #2 (2026-07-15)",
      "note": "Per-session raw auditor reports condensed by the run's synthesis findings doc; delete-once-served is always confirm-tier (ADR-0039)."
    },
    {
      "glob": "plugins/*/HANDOFF-*.md",
      "lifetime": "delete-once-served",
      "served_when": "The handoff it describes has been picked up and its follow-on work completed in a later session.",
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "calibration pass #1 (lifecycle-aware-doc-hygiene)",
      "note": "Classifier-judged served_when \u2014 always confirm-tier by ADR-0039; never auto-deleted."
    },
    {
      "glob": "autoresearch/classic-*/",
      "lifetime": "temporary",
      "retain_recent": 3,
      "max_age_days": 30,
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "calibration pass #1 (lifecycle-aware-doc-hygiene); narrowed from autoresearch/*/ 2026-07-15",
      "note": "Autoresearch run directories are disposable run output; keep the 3 newest, age out the rest. Narrowed to conventional prefixes so autoresearch/ can hold keep-worthy content."
    },
    {
      "glob": "autoresearch/improve-*/",
      "lifetime": "temporary",
      "retain_recent": 3,
      "max_age_days": 30,
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "calibration pass #1 (lifecycle-aware-doc-hygiene); narrowed from autoresearch/*/ 2026-07-15",
      "note": "Autoresearch run directories are disposable run output; keep the 3 newest, age out the rest. Narrowed to conventional prefixes so autoresearch/ can hold keep-worthy content."
    },
    {
      "glob": "docs/orchestration-audit/factsheets/*.md",
      "lifetime": "temporary",
      "retain_recent": 10,
      "max_age_days": 90,
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "calibration pass #1 (lifecycle-aware-doc-hygiene)",
      "note": "Regenerable precompute for the orchestration IRL audit; the audit skill rebuilds them on each run."
    },
    {
      "glob": "openspec/changes/archive/*/",
      "lifetime": "temporary",
      "retain_recent": 3,
      "max_age_days": 90,
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "conversation 2026-07-15 (openspec lifecycle rules)",
      "note": "Archived change dirs are redundant once synced into specs/ and stay recoverable from git history; age out after a quarter."
    },
    {
      "glob": "plugins/*/.pytest_cache/",
      "lifetime": "temporary",
      "retain_recent": 0,
      "max_age_days": 7,
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "calibration pass #1 (lifecycle-aware-doc-hygiene)",
      "note": "Regenerable pytest cache. Judge noted a .gitignore entry may be preferable long-term."
    },
    {
      "glob": "plugins/*/openspec/changes/archive/*/",
      "lifetime": "temporary",
      "retain_recent": 3,
      "max_age_days": 90,
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "conversation 2026-07-15 (openspec lifecycle rules)",
      "note": "Archived change dirs are redundant once synced into specs/ and stay recoverable from git history; age out after a quarter."
    },
    {
      "glob": "openspec/specs/**",
      "lifetime": "keep",
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "conversation 2026-07-15 (openspec lifecycle rules)",
      "note": "Live OpenSpec capability specs \u2014 source of truth future changes diff against; never age out."
    },
    {
      "glob": "plugins/*/openspec/specs/**",
      "lifetime": "keep",
      "confirmed_by": "human",
      "confirmed_on": "2026-07-15",
      "source": "conversation 2026-07-15 (openspec lifecycle rules)",
      "note": "Live OpenSpec capability specs \u2014 source of truth future changes diff against; never age out."
    }
  ]
}
