{
  "schema_version": "1.0",
  "module_id": "prd-plugin.method",
  "module_mode": "agent_routable",
  "repository": {
    "repo_id": "prd-plugin",
    "display_name": "PRD Plugin",
    "visibility": "workspace",
    "source_revision": "ff1fb2ff7ef8e48ef48d7aec9b090e8ebddf6944",
    "source_root": "."
  },
  "compatibility": {
    "manifest_contract": "1.0",
    "ai_collab_runtime": ">=1 <2",
    "hub_contracts": {
      "repos_modules": "1",
      "tools": "1",
      "knowledge": "1",
      "configuration": "1",
      "skills": "1",
      "permissions": "1",
      "agents_teams": "1",
      "observability": "1",
      "apps": "1"
    },
    "legacy_aliases": ["prd-method"],
    "deprecated_capabilities": []
  },
  "consumes": [
    {
      "id": "ai-collab-substrate",
      "contract": "ai-collab.substrate",
      "provider_class": "ai-collab",
      "version_range": ">=2 <3",
      "capabilities": ["events", "graph", "records"],
      "policy": {"required": false, "fallback": "local"}
    }
  ],
  "needs": {
    "permissions": [
      {
        "id": "project-truth-read",
        "actions": ["read"],
        "resource": "repository canonical PRD state",
        "approval": "policy",
        "audit_required": true,
        "policy": {"required": true, "fallback": "block"}
      }
    ],
    "secrets": [
      {
        "id": "provider-handle",
        "purpose": "resolve an admitted model provider at the runner boundary",
        "scope": "provider",
        "provider_class": "workspace-model-provider",
        "rotation_policy": "workspace managed",
        "policy": {"required": false, "fallback": "degrade", "degraded_capability": "planning only"}
      }
    ],
    "runtime": [
      {
        "id": "tool-calling",
        "kind": "model_capability",
        "constraint": "structured tool calling",
        "policy": {"required": true, "fallback": "block"}
      }
    ]
  },
  "offers": {
    "tools": [
      {
        "id": "prd-status",
        "catalog_authority": "utcp",
        "utcp_manual_ref": "utcp.json#/tools/prd_status",
        "transports": ["utcp", "mcp"],
        "mcp_projection": "generated",
        "input_schema_ref": "utcp.json#/tools/prd_status/inputs",
        "output_schema_ref": "utcp.json#/tools/prd_status/outputs",
        "side_effect": "read",
        "idempotency": "idempotent",
        "permission_refs": ["project-truth-read"],
        "secret_requirement_refs": [],
        "approval": "policy",
        "timeout_ms": 10000,
        "health_ref": "prd doctor"
      }
    ],
    "knowledge": [
      {
        "id": "prd-wiki",
        "authority": "derived",
        "visibility": "workspace",
        "source_roots": ["raw/", "wiki/"],
        "freshness": "wiki freshness and link gates",
        "citation_base": ".",
        "indexing": "allow"
      }
    ],
    "configuration": [
      {
        "id": "prd-config",
        "schema_ref": "templates/config.json",
        "scope": "repository",
        "visibility": "repository",
        "mutability": "validated_write",
        "activation": "next_session",
        "validation_ref": "scripts/prd_config.py",
        "secret_requirement_refs": []
      }
    ],
    "skills": [
      {"id": "project-decision-policy", "contract_ref": "skills/project-decision-policy/SKILL.md", "permission_refs": [], "status": "native"}
    ],
    "workflows": [
      {"id": "planning-requirements", "contract_ref": "templates/workflows.json#/planning.requirements", "permission_refs": ["project-truth-read"], "status": "native"}
    ],
    "data_contracts": [
      {"id": "prd-artifacts", "contract_ref": "templates/prd.json", "permission_refs": ["project-truth-read"], "status": "native"}
    ],
    "app_contributions": [],
    "runners": [],
    "observability": [
      {"id": "prd-doctor", "contract_ref": "scripts/prd_doctor.py", "permission_refs": ["project-truth-read"], "status": "native"}
    ],
    "agent_profile_refs": ["prd-repo-expert"]
  },
  "governance": {
    "roles": [
      {
        "id": "repository-expert",
        "purpose": "answer and act within the repository boundary",
        "capabilities": ["code", "docs", "plan", "review", "test"],
        "responsibilities": ["ground claims", "preserve project truth", "respect consent floor"],
        "permission_refs": ["project-truth-read"],
        "skill_refs": ["project-decision-policy"],
        "data_boundaries": ["this repository"],
        "escalation": "use the workspace approval path for floor actions"
      }
    ],
    "agent_profiles": [
      {
        "id": "prd-repo-expert",
        "profile_kind": "repo_expert",
        "role_ref": "repository-expert",
        "instructions_ref": "AGENTS.md",
        "repo_scope": "current repository only",
        "supported_tasks": ["code", "docs", "plan", "review", "test"],
        "permission_refs": ["project-truth-read"],
        "skill_refs": ["project-decision-policy"],
        "knowledge_refs": ["prd-wiki"],
        "model_capabilities": ["long-context", "tool-calling"],
        "handoff_policy": "handoff outside the repository boundary"
      }
    ],
    "team_templates": [
      {
        "id": "single-expert",
        "required_profile_refs": ["prd-repo-expert"],
        "optional_profile_refs": [],
        "routing": "route PRD Plugin work to the repo expert",
        "concurrency": 1,
        "separation_of_duty": ["independent verification for release claims"]
      }
    ],
    "provider_policy": {
      "allowed_classes": ["workspace-approved"],
      "required_capabilities": ["long-context", "tool-calling"],
      "fallback_order": ["workspace-default"],
      "privacy": "repository content follows workspace and repository visibility",
      "residency": "workspace managed",
      "budget_class": "workspace_managed"
    },
    "requested_policy": {
      "autonomy": "autonomous",
      "consent_floor_ref": "AGENTS.md#secrets-handling"
    }
  },
  "migration": {
    "source_authority": "PRD Plugin repository authorities at the pinned revision",
    "adapter_kind": "legacy_compiler",
    "adapter_version": "1",
    "conformance_level": "manifest_shimmed",
    "field_provenance": {
      "consumes": ".prd_plugin/services.json",
      "offers.tools": "utcp.json",
      "offers.knowledge": "wiki/index.md",
      "offers.configuration": "templates/config.json"
    },
    "missing_fields": ["complete UTCP write catalog", "native app contribution"],
    "compatibility_warnings": ["native MCP remains transitional until UTCP parity"],
    "legacy_entrypoints": ["mcp/server.cjs"],
    "replacement_contracts": ["UTCP manual plus generated MCP bridge"],
    "state_migrations": [],
    "parity_evidence_refs": [],
    "rollback": {
      "supported": true,
      "contract_ref": "retain the previous admitted binding while the legacy adapter is transitional"
    }
  },
  "provenance": {
    "compiled_at": "2026-07-15T22:00:00Z",
    "compiler": "prd-plugin module compiler fixture",
    "source_revision": "ff1fb2ff7ef8e48ef48d7aec9b090e8ebddf6944",
    "manifest_digest": "2222222222222222222222222222222222222222222222222222222222222222",
    "artifacts": [
      {
        "path": "templates/services.json",
        "sha256": "dd7c6ae898a0d26f37a5921df18e5ea728624c916ebc738ecee74fa401bbf503",
        "status": "shipped"
      },
      {
        "path": "docs/specs/repository-module-contract-v1/module-manifest.schema.json",
        "sha256": "3333333333333333333333333333333333333333333333333333333333333333",
        "status": "proposed"
      }
    ]
  }
}
