{
  "assessment": {
    "all_ok": true,
    "blockers": [],
    "decision": "PASS_STEP_044A3_DB_SCHEMA_CONTRACT_CLOSE_READONLY",
    "expected_absence": {
      "manual_agent_service_start_used": false,
      "private_material_published": false,
      "safe_peer_inventory_contains_preshared_key": false,
      "safe_peer_inventory_contains_public_key": false,
      "vm100_changed": false,
      "vm101_changed": false,
      "vm121_changed": false
    },
    "success_checks": {
      "allocator_schema_need_identified": true,
      "columns_query_ok": true,
      "enabled_peer_count_five": true,
      "jobs_action_column_seen": true,
      "jobs_payload_json_column_seen": true,
      "jobs_status_column_seen": true,
      "jobs_summary_query_ok": true,
      "no_existing_lease_schema_confirmed": true,
      "peers_enabled_column_seen": true,
      "peers_id_column_seen": true,
      "peers_node_id_column_seen": true,
      "peers_paid_until_column_seen": true,
      "peers_tunnel_ip_column_seen": true,
      "peers_user_id_column_seen": true,
      "pending_jobs_zero": true,
      "postgres_container_found": true,
      "public_report_created": true,
      "safe_counts_query_ok": true,
      "safe_peer_inventory_no_keys_collected": true
    },
    "warnings": [
      "No existing lease/egress/assignment schema exists; next step should design a new runtime egress lease table."
    ]
  },
  "changes": {
    "manual_agent_service_start_used": "NO",
    "private_material_published": "NO",
    "vm100_changed": "NO",
    "vm101_changed": "NO",
    "vm121_changed": "NO"
  },
  "db_summary": {
    "actual_job_payload_column": "payload_json",
    "actual_peer_identity_columns": [
      "id",
      "user_id",
      "node_id",
      "tunnel_ip",
      "paid_until",
      "enabled",
      "created_at",
      "disabled_at"
    ],
    "enabled_peers": 5,
    "lease_schema_exists": false,
    "pending_jobs": 0
  },
  "design_findings": {
    "activity_metric": "inner useful forwarded traffic after wg_paid decrypt, preferably transit_vpn-bound, not WireGuard handshake/keepalive",
    "current_source_of_truth": "public.peers + public.provisioning_jobs",
    "new_runtime_table_needed": true,
    "policy": "sticky while active, reassign after idle",
    "recommended_table": "public.peer_egress_leases",
    "tunables": {
      "ROUTER_EGRESS_ACTIVE_MIN_BYTES": 16384,
      "ROUTER_EGRESS_ACTIVE_MIN_PACKETS": 10,
      "ROUTER_EGRESS_IDLE_SECONDS": 900,
      "ROUTER_EGRESS_REASSIGN_COOLDOWN_SECONDS": 900,
      "ROUTER_EGRESS_SAMPLE_SECONDS": 120
    }
  },
  "mode": "READONLY_CLOSE_DB_SCHEMA_INVENTORY_WITH_ACTUAL_COLUMNS",
  "publish": {
    "local_report": "http://127.0.0.1:8099/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260709-122413_step044a3_db_schema_contract_close_readonly/",
    "trycf_report": "https://helena-background-beam-harry.trycloudflare.com/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/20260709-122413_step044a3_db_schema_contract_close_readonly/"
  },
  "schema": "router-step-facts-v1",
  "step": "STEP_044A3_DB_SCHEMA_CONTRACT_CLOSE_READONLY"
}
