{
  "canon_meta": {
    "canon_id": "devon-panel-runtime-bridge",
    "version": "1.0.0",
    "status": "ACTIVE",
    "bridge_mode": "control_plane_to_panel_push_snapshot"
  },
  "runtime_bridge": {
    "objective": "Define the canonical transport path that moves approved canon-derived panel data from the Devon control plane to the live Operator Panel server.\n",
    "source_of_truth": {
      "host_role": "control-plane",
      "host_id": "devon-control-plane",
      "source_root": "/opt/devon/canon"
    },
    "target_panel": {
      "host_role": "production-host",
      "host_purpose": "panel-ui-host",
      "target_root": "/home/yeff/public_html/devon/canon/execution/state/dh_sources"
    },
    "transport_policy": {
      "model": "push_snapshot",
      "allowed_modes": [
        "rsync_over_ssh",
        "scp_over_ssh"
      ],
      "forbidden_modes": [
        "manual_copy_paste_as_runtime_strategy",
        "browser_side_direct_fs_reads",
        "fake_local_mocks"
      ]
    },
    "exported_artifacts": [
      "panel_manifest.json",
      "canonical_matrix_v1.json",
      "panel_navigation_spec.json",
      "panel_content_index.json",
      "panel_ui_blueprint.json",
      "panel_component_contract.json"
    ],
    "generation_rules": {
      "source_format": "yaml",
      "export_format": "json",
      "export_only_from_approved_canon": true,
      "export_must_be_versioned": true,
      "export_must_include_generated_at_utc": true,
      "export_must_include_source_hashes": true
    },
    "validation_rules": [
      "source_files_exist",
      "source_yaml_valid",
      "export_json_valid",
      "target_path_writable",
      "snapshot_transfer_successful",
      "manifest_matches_export_set"
    ],
    "status_rules": {
      "PASS": "bridge spec exists and snapshot pipeline validates end-to-end",
      "FAIL": "bridge exists but generation or transfer validation fails",
      "MISSING": "bridge spec or transport evidence does not exist"
    }
  }
}
