{
  "schema_version": "0.1",
  "artifact_type": "prd",
  "canonical": true,
  "artifact_id": "PRD-003",
  "agent_summary": {
    "title": "Configurable delegated reporting",
    "status": "approved",
    "summary": "PRD Plugin defines a canonical, directly editable and CLI-togglable policy for delegating selected non-deterministic reporting tasks to AI-Collab, plus deterministic input and validated result contracts with safe fallback.",
    "last_reviewed_at": "2026-07-12",
    "load_notes": "This JSON artifact is canonical. Generate Markdown only on explicit human request."
  },
  "goals": [
    "Free the primary repository model from routine report synthesis while preserving grounded facts and user-facing quality.",
    "Keep one configuration truth in .prd_plugin/config.json with safe prd_config.py editing.",
    "Let AI-Collab own provider/model execution without adding credentials or model SDKs to PRD Plugin."
  ],
  "non_goals": [
    "Implement or configure AI-Collab's provider runtime in this repository.",
    "Delegate deterministic validators, project-state writes, consent decisions, or final completion approval.",
    "Store provider API keys or provider-specific pricing in PRD Plugin state."
  ],
  "requirements": [
    {
      "id": "PRD-REQ-016",
      "priority": "must",
      "summary": "Canonical delegation policy in .prd_plugin/config.json with validated get/set/list support in prd_config.py, including a string-list task allowlist.",
      "source_ids": ["REQ-084"],
      "acceptance_ids": ["PRD-ACC-014", "PRD-ACC-015"],
      "status": "approved"
    },
    {
      "id": "PRD-REQ-017",
      "priority": "must",
      "summary": "Generate a deterministic, versioned reporting bundle containing policy, facts, findings, and source references without invoking an LLM.",
      "source_ids": ["REQ-084"],
      "acceptance_ids": ["PRD-ACC-016"],
      "status": "approved"
    },
    {
      "id": "PRD-REQ-018",
      "priority": "must",
      "summary": "Define and validate the AI-Collab delegated-result contract: summary, source-backed notable items, recommended actions, confidence, executor, profile, and contract version.",
      "source_ids": ["REQ-084"],
      "acceptance_ids": ["PRD-ACC-017", "PRD-ACC-018"],
      "status": "approved"
    },
    {
      "id": "PRD-REQ-019",
      "priority": "must",
      "summary": "Update /prd-report guidance to request delegated synthesis only for enabled/allowed tasks when an AI-Collab executor capability is available, otherwise preserve deterministic or primary-model fallback.",
      "source_ids": ["REQ-084"],
      "acceptance_ids": ["PRD-ACC-019"],
      "status": "approved"
    },
    {
      "id": "PRD-REQ-020",
      "priority": "must",
      "summary": "Ship the configuration, contract script, UTCP discovery surface, commands, skills, and templates consistently to supported downstream hosts.",
      "source_ids": ["REQ-084"],
      "acceptance_ids": ["PRD-ACC-020"],
      "status": "approved"
    }
  ],
  "non_functional_requirements": [
    {
      "id": "PRD-NFR-008",
      "summary": "Remain provider-neutral, stdlib-only, and zero model-runtime dependencies; model profiles are aliases resolved by AI-Collab.",
      "source_ids": ["REQ-084"]
    },
    {
      "id": "PRD-NFR-009",
      "summary": "Bundles exclude local-only raw session content and secrets; delegated output cannot mutate project truth.",
      "source_ids": ["REQ-084"]
    },
    {
      "id": "PRD-NFR-010",
      "summary": "Delegation is off by default, fail-open according to explicit fallback policy, and backward compatible with current /prd-report behavior.",
      "source_ids": ["REQ-084"]
    }
  ],
  "acceptance_criteria": [
    {"id": "PRD-ACC-014", "summary": "Direct JSON edits and prd_config.py resolve to the same effective policy.", "requirement_ids": ["PRD-REQ-016"]},
    {"id": "PRD-ACC-015", "summary": "prd_config.py validates bool, enum, int, string, and string_list delegation fields and rejects invalid task names.", "requirement_ids": ["PRD-REQ-016"]},
    {"id": "PRD-ACC-016", "summary": "The bundle command emits stable JSON with contract_version, task, repo, policy, facts, findings, source_refs, and constraints.", "requirement_ids": ["PRD-REQ-017"]},
    {"id": "PRD-ACC-017", "summary": "Delegated results missing required source references or using a mismatched contract version are rejected deterministically.", "requirement_ids": ["PRD-REQ-018"]},
    {"id": "PRD-ACC-018", "summary": "Valid delegated results are normalized without being written into canonical project state.", "requirement_ids": ["PRD-REQ-018"]},
    {"id": "PRD-ACC-019", "summary": "Reporting instructions use delegation only when enabled, allowed, and available, with documented main/deterministic/fail fallback semantics.", "requirement_ids": ["PRD-REQ-019"]},
    {"id": "PRD-ACC-020", "summary": "Installer/parity/release tests prove all live and downstream configuration and command surfaces remain synchronized.", "requirement_ids": ["PRD-REQ-020"]}
  ],
  "dependencies": [
    "AI-Collab runtime support for reading the policy and executing the contract is external to this repository.",
    "Existing deterministic report/status/request/doctor scripts remain the fact sources."
  ],
  "open_questions": [],
  "traceability": {
    "source_ids": ["REQ-084"],
    "request_ids": ["REQ-084"],
    "architecture_ids": ["ARCH-COMP-013", "ARCH-COMP-014", "ARCH-COMP-015", "ARCH-COMP-016"],
    "implementation_task_ids": ["IMP-TASK-025", "IMP-TASK-026", "IMP-TASK-027", "IMP-TASK-028", "IMP-TASK-029", "IMP-TASK-030"],
    "health_ids": []
  }
}
