{
  "phase_id": "phase-02",
  "category_id": "architecture_engineering_core",
  "doc_id": "canonical_matrix_v1",
  "source_path": "/home/yeff/public_html/devon/panel/data/canonical_matrix_v1.json",
  "documentation_branch_status": "CUSTOM_BRANCH",
  "bucket_statuses_from_docs_index": {
    "Prerequisites": "ACTIVE",
    "Installation": "ACTIVE",
    "Configuration": "ACTIVE",
    "Validation": "ACTIVE",
    "Observable Evidence": "ACTIVE",
    "Failure Modes & Recovery": "ACTIVE",
    "Completion & Promotion": "ACTIVE"
  },
  "exported_at": "2026-04-28T05:56:48.644291+00:00",
  "export_rule": "docs/json export generated from real panel/data source plus docs/index.php branch evidence; no authored content invented by export patch",
  "source_payload": {
    "canon_meta": {
      "canon_id": "devon-canonical-matrix",
      "version": "1.0.0",
      "status": "ACTIVE",
      "matrix_mode": "deployment_order",
      "source_files": [
        "00_project_scope_canonical.yaml",
        "01_deployment_order_canonical.yaml",
        "02_panel_canonical_tree.yaml",
        "03_card_contract_minimums.yaml",
        "04_memory_canonical_architecture.yaml",
        "05_server_registry_canonical.yaml",
        "06_sandbox_environment_canonical.yaml",
        "07_subcategory_pipelines.yaml"
      ]
    },
    "matrix": [
      {
        "matrix_id": "MX-001",
        "deployment_order": 10,
        "deployment_stage": "host_readiness",
        "section_id": "S00",
        "card_id": "core-host-readiness",
        "display_name": "Host Readiness",
        "subcategory": "filesystem",
        "objective": "validate writable canonical filesystem",
        "hard_dependencies": [],
        "blockers": [
          "filesystem_unwritable"
        ],
        "evidence_expected": [
          "canonical_directories_exist",
          "canonical_directories_writable"
        ],
        "checks": [
          "path_exists_check",
          "write_probe_check"
        ],
        "pipeline_ref": "host_readiness",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-002",
        "deployment_order": 10,
        "deployment_stage": "host_readiness",
        "section_id": "S00",
        "card_id": "core-host-readiness",
        "display_name": "Host Readiness",
        "subcategory": "root_context",
        "objective": "validate privileged operational context",
        "hard_dependencies": [],
        "blockers": [
          "missing_root_access_when_required"
        ],
        "evidence_expected": [
          "root_shell_access"
        ],
        "checks": [
          "whoami_check"
        ],
        "pipeline_ref": "host_readiness",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-003",
        "deployment_order": 10,
        "deployment_stage": "host_readiness",
        "section_id": "S00",
        "card_id": "core-host-readiness",
        "display_name": "Host Readiness",
        "subcategory": "python_runtime",
        "objective": "validate python3 runtime presence",
        "hard_dependencies": [],
        "blockers": [
          "missing_python3"
        ],
        "evidence_expected": [
          "python3_binary",
          "python3_version_output"
        ],
        "checks": [
          "python3_version_check"
        ],
        "pipeline_ref": "host_readiness",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-004",
        "deployment_order": 10,
        "deployment_stage": "host_readiness",
        "section_id": "S00",
        "card_id": "core-host-readiness",
        "display_name": "Host Readiness",
        "subcategory": "git_runtime",
        "objective": "validate git runtime presence",
        "hard_dependencies": [],
        "blockers": [
          "missing_git"
        ],
        "evidence_expected": [
          "git_binary",
          "git_version_output"
        ],
        "checks": [
          "git_version_check"
        ],
        "pipeline_ref": "host_readiness",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-005",
        "deployment_order": 10,
        "deployment_stage": "host_readiness",
        "section_id": "S00",
        "card_id": "core-host-readiness",
        "display_name": "Host Readiness",
        "subcategory": "docker_runtime",
        "objective": "validate container runtime presence",
        "hard_dependencies": [],
        "blockers": [
          "missing_container_runtime"
        ],
        "evidence_expected": [
          "docker_binary",
          "docker_version_output"
        ],
        "checks": [
          "docker_version_check"
        ],
        "pipeline_ref": "host_readiness",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-010",
        "deployment_order": 20,
        "deployment_stage": "canon_control_plane",
        "section_id": "S01",
        "card_id": "project-scope",
        "display_name": "Project Scope",
        "subcategory": "mission",
        "objective": "define global project scope",
        "hard_dependencies": [
          "MX-001"
        ],
        "blockers": [
          "missing_scope_file"
        ],
        "evidence_expected": [
          "/opt/devon/canon/00_project_scope_canonical.yaml"
        ],
        "checks": [
          "file_exists_check",
          "yaml_header_check"
        ],
        "pipeline_ref": "canon_control_plane",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-011",
        "deployment_order": 20,
        "deployment_stage": "canon_control_plane",
        "section_id": "S01",
        "card_id": "deployment-order",
        "display_name": "Deployment Order",
        "subcategory": "stages",
        "objective": "define official operational deployment sequence",
        "hard_dependencies": [
          "MX-010"
        ],
        "blockers": [
          "missing_deployment_order_file"
        ],
        "evidence_expected": [
          "/opt/devon/canon/01_deployment_order_canonical.yaml"
        ],
        "checks": [
          "file_exists_check",
          "stage_order_check"
        ],
        "pipeline_ref": "canon_control_plane",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-012",
        "deployment_order": 20,
        "deployment_stage": "canon_control_plane",
        "section_id": "S01",
        "card_id": "card-contracts",
        "display_name": "Card Contracts",
        "subcategory": "required_blocks",
        "objective": "define minimum contract schema for every card",
        "hard_dependencies": [
          "MX-010"
        ],
        "blockers": [
          "missing_contract_schema"
        ],
        "evidence_expected": [
          "/opt/devon/canon/03_card_contract_minimums.yaml"
        ],
        "checks": [
          "file_exists_check",
          "required_blocks_check"
        ],
        "pipeline_ref": "canon_control_plane",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-020",
        "deployment_order": 30,
        "deployment_stage": "server_registry",
        "section_id": "S02",
        "card_id": "server-registry",
        "display_name": "Server Registry",
        "subcategory": "control_plane",
        "objective": "register Devon as canonical control plane",
        "hard_dependencies": [
          "MX-011"
        ],
        "blockers": [
          "missing_server_registry"
        ],
        "evidence_expected": [
          "/opt/devon/canon/05_server_registry_canonical.yaml"
        ],
        "checks": [
          "file_exists_check",
          "control_plane_node_check"
        ],
        "pipeline_ref": "server_registry",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-021",
        "deployment_order": 30,
        "deployment_stage": "server_registry",
        "section_id": "S02",
        "card_id": "server-registry",
        "display_name": "Server Registry",
        "subcategory": "sandbox_hosts",
        "objective": "define sandbox host model",
        "hard_dependencies": [
          "MX-020"
        ],
        "blockers": [
          "missing_sandbox_host_definition"
        ],
        "evidence_expected": [
          "dedicated_sandbox_host_hypothesis"
        ],
        "checks": [
          "future_hypothesis_check"
        ],
        "pipeline_ref": "server_registry",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-030",
        "deployment_order": 40,
        "deployment_stage": "foundation_infrastructure",
        "section_id": "S03",
        "card_id": "infrastructure",
        "display_name": "Infrastructure",
        "subcategory": "containers",
        "objective": "enable base container runtime",
        "hard_dependencies": [
          "MX-020",
          "MX-005"
        ],
        "blockers": [
          "missing_container_runtime"
        ],
        "evidence_expected": [
          "docker_binary",
          "compose_runtime"
        ],
        "checks": [
          "docker_version_check",
          "docker_ps_check"
        ],
        "pipeline_ref": "foundation_infrastructure",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-031",
        "deployment_order": 50,
        "deployment_stage": "storage_state",
        "section_id": "S03",
        "card_id": "storage-state",
        "display_name": "Storage & State",
        "subcategory": "structured_state",
        "objective": "define structured persistence backend",
        "hard_dependencies": [
          "MX-030"
        ],
        "blockers": [
          "missing_structured_state_backend"
        ],
        "evidence_expected": [
          "db_runtime",
          "db_connectivity"
        ],
        "checks": [
          "backend_presence_check",
          "read_write_probe_check"
        ],
        "pipeline_ref": "storage_state",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-040",
        "deployment_order": 60,
        "deployment_stage": "memory_control_plane",
        "section_id": "S04",
        "card_id": "memory-manager",
        "display_name": "Memory Manager",
        "subcategory": "control_plane",
        "objective": "establish memory control plane",
        "hard_dependencies": [
          "MX-031"
        ],
        "blockers": [
          "missing_memory_control_plane"
        ],
        "evidence_expected": [
          "/opt/devon/canon/04_memory_canonical_architecture.yaml",
          "router_runtime",
          "partition_registry_runtime"
        ],
        "checks": [
          "file_exists_check",
          "memory_router_presence_check"
        ],
        "pipeline_ref": "memory_control_plane",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-050",
        "deployment_order": 70,
        "deployment_stage": "core_runtime",
        "section_id": "S05",
        "card_id": "core-runtime",
        "display_name": "Core Runtime",
        "subcategory": "api_runtime",
        "objective": "enable Devon application runtime",
        "hard_dependencies": [
          "MX-040"
        ],
        "blockers": [
          "missing_entrypoint",
          "invalid_env"
        ],
        "evidence_expected": [
          "app_entrypoint",
          "api_runtime_process",
          "health_endpoint"
        ],
        "checks": [
          "boot_check",
          "health_endpoint_check"
        ],
        "pipeline_ref": "core_runtime",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-060",
        "deployment_order": 80,
        "deployment_stage": "observability_audit_base",
        "section_id": "S06",
        "card_id": "observability-audit",
        "display_name": "Observability & Audit",
        "subcategory": "logs",
        "objective": "enable structured logs and evidence sinks",
        "hard_dependencies": [
          "MX-050"
        ],
        "blockers": [
          "missing_log_sink"
        ],
        "evidence_expected": [
          "log_output",
          "writable_log_path"
        ],
        "checks": [
          "log_emit_check",
          "path_write_check"
        ],
        "pipeline_ref": "observability_audit_base",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-070",
        "deployment_order": 90,
        "deployment_stage": "remote_access_orchestration",
        "section_id": "S07",
        "card_id": "remote-orchestration",
        "display_name": "Remote Orchestration",
        "subcategory": "ssh_profiles",
        "objective": "define SSH access policy for first-party nodes",
        "hard_dependencies": [
          "MX-020",
          "MX-060"
        ],
        "blockers": [
          "missing_ssh_profiles"
        ],
        "evidence_expected": [
          "ssh_profile_registry"
        ],
        "checks": [
          "ssh_profile_check"
        ],
        "pipeline_ref": "remote_access_orchestration",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-080",
        "deployment_order": 100,
        "deployment_stage": "sandbox_orchestration",
        "section_id": "S07",
        "card_id": "sandbox-environments",
        "display_name": "Sandbox Environments",
        "subcategory": "mirror_strategy",
        "objective": "define project mirroring into sandbox",
        "hard_dependencies": [
          "MX-070",
          "MX-031"
        ],
        "blockers": [
          "missing_sandbox_strategy"
        ],
        "evidence_expected": [
          "/opt/devon/canon/06_sandbox_environment_canonical.yaml",
          "mirror_strategy_definition"
        ],
        "checks": [
          "file_exists_check",
          "mirror_strategy_check"
        ],
        "pipeline_ref": "sandbox_orchestration",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "PASS"
      },
      {
        "matrix_id": "MX-090",
        "deployment_order": 110,
        "deployment_stage": "cognition_base",
        "section_id": "S08",
        "card_id": "embeddings",
        "display_name": "Embeddings",
        "subcategory": "embedding_model",
        "objective": "enable embeddings backend",
        "hard_dependencies": [
          "MX-050",
          "MX-040"
        ],
        "blockers": [
          "missing_model_registry",
          "missing_embedding_runtime"
        ],
        "evidence_expected": [
          "embedding_model",
          "embedding_inference"
        ],
        "checks": [
          "model_load_check",
          "encode_probe_check"
        ],
        "pipeline_ref": "cognition_base",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-100",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "architect",
        "display_name": "Architect",
        "subcategory": "system_design",
        "objective": "enable architecture planning module",
        "hard_dependencies": [
          "MX-080",
          "MX-090"
        ],
        "blockers": [
          "missing_module_runtime",
          "missing_module_contract"
        ],
        "evidence_expected": [
          "architect_module",
          "architect_contract"
        ],
        "checks": [
          "module_presence_check",
          "contract_check"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-101",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "planner",
        "display_name": "Planner",
        "subcategory": "execution_plan",
        "objective": "enable execution planning module",
        "hard_dependencies": [
          "MX-100"
        ],
        "blockers": [
          "missing_module_runtime"
        ],
        "evidence_expected": [
          "planner_module",
          "planner_contract"
        ],
        "checks": [
          "module_presence_check",
          "contract_check"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-102",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "generator",
        "display_name": "Generator",
        "subcategory": "patch_generation",
        "objective": "enable controlled artifact generation",
        "hard_dependencies": [
          "MX-101"
        ],
        "blockers": [
          "missing_generation_runtime"
        ],
        "evidence_expected": [
          "generator_module",
          "generation_contract"
        ],
        "checks": [
          "module_presence_check",
          "generation_probe_check"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-103",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "canonizer",
        "display_name": "Canonizer",
        "subcategory": "structure_canon",
        "objective": "normalize outputs to canonical structure",
        "hard_dependencies": [
          "MX-102"
        ],
        "blockers": [
          "missing_canonizer_runtime"
        ],
        "evidence_expected": [
          "canonizer_module"
        ],
        "checks": [
          "module_presence_check"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-104",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "validator-ci",
        "display_name": "Validator / CI",
        "subcategory": "functional_validation",
        "objective": "validate generated artifacts and runtime behavior",
        "hard_dependencies": [
          "MX-103"
        ],
        "blockers": [
          "missing_validator_suite"
        ],
        "evidence_expected": [
          "validator_module",
          "validator_suite"
        ],
        "checks": [
          "suite_presence_check",
          "validation_run_check"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-105",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "executor",
        "display_name": "Executor",
        "subcategory": "safe_execution",
        "objective": "execute approved actions safely",
        "hard_dependencies": [
          "MX-104",
          "MX-080"
        ],
        "blockers": [
          "missing_executor_runtime",
          "missing_execution_policy"
        ],
        "evidence_expected": [
          "executor_module",
          "execution_policy"
        ],
        "checks": [
          "module_presence_check",
          "sandbox_execution_probe"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-106",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "artifact-canon-layer",
        "display_name": "Artifact Canon Layer",
        "subcategory": "artifact_registry",
        "objective": "register artifacts and provenance",
        "hard_dependencies": [
          "MX-102"
        ],
        "blockers": [
          "missing_artifact_registry"
        ],
        "evidence_expected": [
          "artifact_registry_runtime"
        ],
        "checks": [
          "registry_presence_check"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-107",
        "deployment_order": 120,
        "deployment_stage": "engineering_modules",
        "section_id": "S09",
        "card_id": "skill-registry",
        "display_name": "Skill Registry",
        "subcategory": "skills_index",
        "objective": "index skills and eligibility rules",
        "hard_dependencies": [
          "MX-104"
        ],
        "blockers": [
          "missing_skill_registry"
        ],
        "evidence_expected": [
          "skill_registry_runtime"
        ],
        "checks": [
          "registry_presence_check"
        ],
        "pipeline_ref": "engineering_modules",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-110",
        "deployment_order": 130,
        "deployment_stage": "governance_policy",
        "section_id": "S10",
        "card_id": "policy-governance",
        "display_name": "Policy & Governance",
        "subcategory": "policy_rules",
        "objective": "enforce operational rules and scope",
        "hard_dependencies": [
          "MX-105",
          "MX-060"
        ],
        "blockers": [
          "missing_policy_engine"
        ],
        "evidence_expected": [
          "policy_ruleset",
          "policy_runtime"
        ],
        "checks": [
          "policy_load_check",
          "scope_enforcement_check"
        ],
        "pipeline_ref": "governance_policy",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-111",
        "deployment_order": 130,
        "deployment_stage": "governance_policy",
        "section_id": "S10",
        "card_id": "self-monitoring",
        "display_name": "Self-Monitoring",
        "subcategory": "state_watch",
        "objective": "watch internal state and regressions",
        "hard_dependencies": [
          "MX-110"
        ],
        "blockers": [
          "missing_monitor_runtime"
        ],
        "evidence_expected": [
          "self_monitor_runtime"
        ],
        "checks": [
          "runtime_presence_check"
        ],
        "pipeline_ref": "governance_policy",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-120",
        "deployment_order": 140,
        "deployment_stage": "benchmark_learning",
        "section_id": "S11",
        "card_id": "benchmark-runner",
        "display_name": "Benchmark Runner",
        "subcategory": "test_suites",
        "objective": "run benchmark suites and record scores",
        "hard_dependencies": [
          "MX-104",
          "MX-110"
        ],
        "blockers": [
          "missing_benchmark_harness"
        ],
        "evidence_expected": [
          "benchmark_runner_runtime",
          "baseline_registry"
        ],
        "checks": [
          "runtime_presence_check",
          "benchmark_probe_check"
        ],
        "pipeline_ref": "benchmark_learning",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-121",
        "deployment_order": 140,
        "deployment_stage": "benchmark_learning",
        "section_id": "S11",
        "card_id": "rl-engine",
        "display_name": "RL Engine",
        "subcategory": "reward_model",
        "objective": "enable reinforcement learning component",
        "hard_dependencies": [
          "MX-120"
        ],
        "blockers": [
          "missing_rl_runtime"
        ],
        "evidence_expected": [
          "rl_module",
          "reward_model"
        ],
        "checks": [
          "module_presence_check"
        ],
        "pipeline_ref": "benchmark_learning",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-122",
        "deployment_order": 140,
        "deployment_stage": "benchmark_learning",
        "section_id": "S11",
        "card_id": "learning-loop",
        "display_name": "Learning Loop",
        "subcategory": "promotion_decision",
        "objective": "compare outcomes, update memory and control promotion",
        "hard_dependencies": [
          "MX-121",
          "MX-040",
          "MX-107"
        ],
        "blockers": [
          "missing_learning_loop_runtime"
        ],
        "evidence_expected": [
          "learning_loop_module",
          "promotion_decision_log"
        ],
        "checks": [
          "runtime_presence_check",
          "decision_record_check"
        ],
        "pipeline_ref": "benchmark_learning",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-130",
        "deployment_order": 150,
        "deployment_stage": "operator_panel",
        "section_id": "S12",
        "card_id": "operator-panel",
        "display_name": "Operator Panel",
        "subcategory": "contract_explorer",
        "objective": "expose canon, contracts and evidence in UI",
        "hard_dependencies": [
          "MX-012",
          "MX-060",
          "MX-100"
        ],
        "blockers": [
          "missing_panel_runtime",
          "missing_panel_schema"
        ],
        "evidence_expected": [
          "panel_runtime",
          "contract_views",
          "evidence_drawers"
        ],
        "checks": [
          "ui_load_check",
          "contract_view_check",
          "drawer_render_check"
        ],
        "pipeline_ref": "operator_panel",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      },
      {
        "matrix_id": "MX-140",
        "deployment_order": 160,
        "deployment_stage": "promotion_rollback",
        "section_id": "S12",
        "card_id": "operator-panel",
        "display_name": "Promotion & Rollback",
        "subcategory": "promotion_gate",
        "objective": "enforce final release gate with rollback readiness",
        "hard_dependencies": [
          "MX-130",
          "MX-080",
          "MX-122"
        ],
        "blockers": [
          "missing_rollback_strategy",
          "missing_release_audit"
        ],
        "evidence_expected": [
          "release_gate_policy",
          "rollback_strategy",
          "release_audit"
        ],
        "checks": [
          "promotion_gate_check",
          "rollback_readiness_check"
        ],
        "pipeline_ref": "operator_panel",
        "contract_ref": "03_card_contract_minimums.yaml",
        "status_initial": "MISSING"
      }
    ]
  }
}
