{
  "schema": "actproof.roadmap.v1",
  "source": "https://actproof.org/roadmap/",
  "package": "actproof-events",
  "current_version": "1.8.1",
  "principle": "Track shipped capabilities separately from planned utilities. Do not imply that planned features are live.",
  "shipped": [
    {
      "id": "profile-view-export",
      "since": "1.7.0",
      "label": "Profile-view export",
      "status": "live",
      "description": "Generate a browser/API/agent-ready profile-view JSON projection from the canonical catalogue entry."
    },
    {
      "id": "dora-field-source-binding",
      "since": "1.8.0",
      "label": "DORA required-field source binding",
      "status": "live",
      "description": "15/15 required DORA initial-notification fields template-field bound, with source atoms and derivations."
    },
    {
      "id": "prevalidation-primitives",
      "since": "1.8.0",
      "label": "Pre-validation primitives",
      "status": "live_in_package_static_on_site",
      "description": "Lint/prevalidate report shapes and expose profile data to agents through static JSON and NDJSON surfaces."
    },
    {
      "id": "agent-discovery",
      "since": "site",
      "label": "Agent discovery surface",
      "status": "live_on_site",
      "description": ".well-known cards, llms.txt, OpenAPI, MCP-oriented manifests and static NDJSON feeds."
    },
    {
      "id": "profile-completeness",
      "since": "1.8.1",
      "label": "Profile completeness model",
      "status": "live",
      "description": "Declare what the profile models, what it is not exhaustive of, and what challenge types are allowed."
    },
    {
      "id": "source-atom-coverage",
      "since": "1.8.1",
      "label": "Source-atom coverage",
      "status": "live",
      "description": "Compute which recorded source atoms are used by fields, required-field bindings, contextual bindings or left unused."
    },
    {
      "id": "field-id-policy",
      "since": "1.8.1",
      "label": "Field-ID non-universality policy",
      "status": "live",
      "description": "ActProof field IDs are stable profile-local identifiers, not universal market names. Mapping must use source basis, not names alone."
    }
  ],
  "planned": [
    {
      "id": "challenge-records",
      "target": "1.8.x/1.9.0",
      "label": "Challenge records",
      "status": "planned",
      "description": "Machine-readable records for missing-field, wrong-source, weak-derivation, outdated-source and ambiguous-mapping challenges."
    },
    {
      "id": "compare-schema",
      "target": "1.9.0",
      "label": "Candidate schema comparison",
      "status": "planned",
      "description": "Compare an external schema or field list to ActProof as candidate mappings for human review, never authoritative matches."
    },
    {
      "id": "external-schema-mapping-records",
      "target": "1.9.0",
      "label": "External schema mapping records",
      "status": "planned",
      "description": "Persist reviewed mappings between external system fields and ActProof field IDs with source evidence and review state."
    },
    {
      "id": "official-text-hash-sealing",
      "target": "future",
      "label": "Official text fragment sealing",
      "status": "planned",
      "description": "Move from locator-bound provisional atoms to verified official text fragment hashes where feasible."
    },
    {
      "id": "native-mcp-runtime",
      "target": "future",
      "label": "Native MCP runtime",
      "status": "planned",
      "description": "Move beyond static MCP-oriented manifests into a real MCP Streamable HTTP runtime when the hosted execution layer is ready."
    }
  ],
  "boundaries": [
    "not_legal_advice",
    "not_compliance_certification",
    "not_supervisory_approval",
    "not_submission_gateway",
    "planned_features_are_not_live_until_listed_as_shipped"
  ]
}
