{
  "canon_meta": {
    "canon_id": "devon-panel-data-contract",
    "version": "1.0.0",
    "status": "ACTIVE",
    "contract_mode": "ui_read_only_from_canon"
  },
  "panel_data_contract": {
    "objective": "Define the canonical data interface the Operator Panel must consume in order to render deployment-ordered navigation, cards, subcategories, evidence, contracts, timelines, filters and status counters without deriving fake state.\n",
    "primary_sources": {
      "project_scope": "/opt/devon/canon/00_project_scope_canonical.yaml",
      "deployment_order": "/opt/devon/canon/01_deployment_order_canonical.yaml",
      "panel_tree": "/opt/devon/canon/02_panel_canonical_tree.yaml",
      "card_contracts": "/opt/devon/canon/03_card_contract_minimums.yaml",
      "memory_architecture": "/opt/devon/canon/04_memory_canonical_architecture.yaml",
      "server_registry": "/opt/devon/canon/05_server_registry_canonical.yaml",
      "sandbox_architecture": "/opt/devon/canon/06_sandbox_environment_canonical.yaml",
      "subcategory_pipelines": "/opt/devon/canon/07_subcategory_pipelines.yaml",
      "canonical_matrix": "/opt/devon/canon/08_canonical_matrix_v1.yaml",
      "navigation_spec": "/opt/devon/canon/09_panel_navigation_spec.yaml"
    },
    "panel_views": {
      "required": [
        "deployment_overview",
        "section_view",
        "card_view",
        "subcategory_view",
        "contract_view",
        "evidence_view",
        "dependency_view",
        "timeline_view",
        "server_scope_view",
        "memory_scope_view",
        "project_scope_view"
      ]
    },
    "canonical_entities": {
      "section": {
        "primary_key": "section_id",
        "required_fields": [
          "section_id",
          "display_name",
          "cards"
        ]
      },
      "card": {
        "primary_key": "card_id",
        "required_fields": [
          "card_id",
          "display_name",
          "subcategories"
        ]
      },
      "matrix_row": {
        "primary_key": "matrix_id",
        "required_fields": [
          "matrix_id",
          "deployment_order",
          "deployment_stage",
          "section_id",
          "card_id",
          "display_name",
          "subcategory",
          "objective",
          "hard_dependencies",
          "blockers",
          "evidence_expected",
          "checks",
          "pipeline_ref",
          "contract_ref",
          "status_initial"
        ]
      },
      "status_counter": {
        "required_fields": [
          "total",
          "pass",
          "fail",
          "missing",
          "by_stage"
        ]
      }
    },
    "ui_resolution_rules": {
      "deployment_navigation_source": "section_id + deployment_stage + deployment_order",
      "card_grid_source": "panel_tree.deployment_sections.cards",
      "matrix_source": "canonical_matrix.matrix",
      "contract_source": "card_contracts.contract_schema",
      "timeline_source": "canonical_matrix.matrix",
      "status_source": "observable_evidence_only",
      "no_mock_or_derived_fake_progress": true
    },
    "join_rules": [
      {
        "join_name": "section_to_card",
        "left": "panel_tree.deployment_sections.section_id",
        "right": "canonical_matrix.matrix.section_id"
      },
      {
        "join_name": "card_to_matrix",
        "left": "panel_tree.deployment_sections.cards.card_id",
        "right": "canonical_matrix.matrix.card_id"
      },
      {
        "join_name": "stage_to_matrix",
        "left": "deployment_order.deployment_order.stage",
        "right": "canonical_matrix.matrix.deployment_stage"
      }
    ],
    "filters": {
      "required": [
        "by_project",
        "by_server",
        "by_status",
        "by_stage",
        "by_card",
        "by_memory_scope"
      ]
    },
    "drawers": {
      "evidence_drawer": {
        "required_fields": [
          "matrix_id",
          "evidence_expected",
          "checks",
          "status",
          "last_validation"
        ]
      },
      "contract_drawer": {
        "required_fields": [
          "card_id",
          "contract_ref",
          "required_blocks"
        ]
      },
      "dependency_drawer": {
        "required_fields": [
          "matrix_id",
          "hard_dependencies",
          "blockers"
        ]
      },
      "memory_scope_drawer": {
        "required_fields": [
          "memory_partition_class",
          "routing_keys",
          "read_policy",
          "write_policy"
        ]
      },
      "server_scope_drawer": {
        "required_fields": [
          "server_id",
          "role",
          "allowed_projects",
          "sandbox_capable",
          "promotion_capable"
        ]
      }
    },
    "status_rules": {
      "PASS": "evidence exists and functional validation passes",
      "FAIL": "evidence exists and validation fails",
      "MISSING": "evidence does not exist observably"
    },
    "render_contract": {
      "topbar": {
        "required": [
          "project_selector",
          "server_selector",
          "deployment_stage_selector",
          "global_status_counters",
          "search_box",
          "quick_actions"
        ]
      },
      "sidebar": {
        "ordering": "deployment_order_only",
        "source": "deployment_order + panel_tree"
      },
      "center_workspace": {
        "default_tab": "preview",
        "allowed_tabs": [
          "preview",
          "artifact",
          "contract",
          "diff",
          "logs",
          "metrics",
          "timeline"
        ]
      },
      "right_stack": {
        "required_drawers": [
          "evidence_drawer",
          "dependency_drawer",
          "memory_scope_drawer",
          "validation_drawer",
          "server_scope_drawer"
        ]
      }
    }
  }
}
