{
  "schema": "vm101-canonical-source-analysis-v1",
  "targets": [
    {
      "label": "refresh_pool_safe",
      "source_path": "/root/hmn/hmn-refresh-pool-safe.sh",
      "purpose": "atomic refresh backup preflight and rollback manifest",
      "sha256": "bb047e820196c4c5cb263499ed890c782190293257a2033568015c6b19230682",
      "size_bytes": 8670,
      "line_count": 308,
      "shebang": "#!/bin/ash",
      "sensitive": false,
      "functions": [
        {
          "name": "say",
          "line": 32
        },
        {
          "name": "write_status",
          "line": 36
        },
        {
          "name": "record_download_rc",
          "line": 41
        },
        {
          "name": "set_retry_needed",
          "line": 46
        },
        {
          "name": "clear_retry_needed",
          "line": 53
        },
        {
          "name": "restore_backup",
          "line": 58
        },
        {
          "name": "run_validate_current_pool",
          "line": 96
        },
        {
          "name": "run_body",
          "line": 115
        }
      ],
      "uppercase_assignments": [
        {
          "name": "BASE",
          "line": 5
        },
        {
          "name": "LOGDIR",
          "line": 6
        },
        {
          "name": "STATE",
          "line": 7
        },
        {
          "name": "BACKUPDIR",
          "line": 8
        },
        {
          "name": "DOWNLOADER",
          "line": 10
        },
        {
          "name": "VALIDATE",
          "line": 11
        },
        {
          "name": "MAN",
          "line": 12
        },
        {
          "name": "LOCK",
          "line": 14
        },
        {
          "name": "MODE",
          "line": 16
        },
        {
          "name": "TS",
          "line": 20
        },
        {
          "name": "LOG",
          "line": 21
        },
        {
          "name": "RCFILE",
          "line": 22
        },
        {
          "name": "BACK",
          "line": 24
        },
        {
          "name": "RETRY_FLAG",
          "line": 26
        },
        {
          "name": "RETRY_REASON",
          "line": 27
        },
        {
          "name": "LAST_FRESH_DOWNLOAD_RC",
          "line": 28
        },
        {
          "name": "LAST_FRESH_DOWNLOAD_AT",
          "line": 29
        },
        {
          "name": "LAST_REFRESH_POOL_SOURCE",
          "line": 30
        },
        {
          "name": "REASON",
          "line": 47
        },
        {
          "name": "LATEST_DIR",
          "line": 66
        },
        {
          "name": "OLD_LINK",
          "line": 67
        },
        {
          "name": "OLD_REAL",
          "line": 68
        },
        {
          "name": "VALIDATE_RC",
          "line": 104
        },
        {
          "name": "BACK",
          "line": 150
        },
        {
          "name": "DOWNLOAD_RC",
          "line": 169
        },
        {
          "name": "DOWNLOAD_RC",
          "line": 177
        },
        {
          "name": "DOWNLOAD_RC",
          "line": 180
        },
        {
          "name": "DOWNLOAD_RC",
          "line": 189
        },
        {
          "name": "RC",
          "line": 212
        },
        {
          "name": "RC",
          "line": 233
        },
        {
          "name": "MAN_RC",
          "line": 249
        },
        {
          "name": "MAN_RC",
          "line": 251
        },
        {
          "name": "BAD",
          "line": 290
        },
        {
          "name": "RC",
          "line": 302
        }
      ],
      "token_lines": {
        "table_200": [
          145,
          266
        ],
        "hmn_endpoint": [],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [
          14,
          22
        ],
        "active_interface_error": []
      }
    },
    {
      "label": "code_test",
      "source_path": "/root/hmn/hmn-code-test.sh",
      "purpose": "healthy bootstrap interface detection",
      "sha256": "3515205270211206a9f3a34bc5c62d94a9f14a54ad712d6fa7e9c7d50db1370a",
      "size_bytes": 1525,
      "line_count": 66,
      "shebang": "#!/bin/ash",
      "sensitive": false,
      "functions": [],
      "uppercase_assignments": [
        {
          "name": "ENV_FILE",
          "line": 5
        },
        {
          "name": "ACTIVE",
          "line": 21
        },
        {
          "name": "ACTIVE",
          "line": 24
        },
        {
          "name": "TMP",
          "line": 41
        }
      ],
      "token_lines": {
        "table_200": [
          21,
          28,
          29
        ],
        "hmn_endpoint": [],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [
          41
        ],
        "active_interface_error": [
          28
        ]
      }
    },
    {
      "label": "download_all_awg",
      "source_path": "/root/hmn/hmn-download-all-awg.sh",
      "purpose": "healthy bootstrap interface detection",
      "sha256": "c20d8ff7feead493f2524c6da3c921bbf62cbdfb503a11a8ea75e4d15144e18f",
      "size_bytes": 8926,
      "line_count": 308,
      "shebang": "#!/bin/ash",
      "sensitive": false,
      "functions": [],
      "uppercase_assignments": [
        {
          "name": "BASE",
          "line": 5
        },
        {
          "name": "ENV_FILE",
          "line": 6
        },
        {
          "name": "AWG_PARAM",
          "line": 17
        },
        {
          "name": "SERVERLIST_URL",
          "line": 18
        },
        {
          "name": "CONFIG_URL",
          "line": 19
        },
        {
          "name": "ACTIVE",
          "line": 32
        },
        {
          "name": "ACTIVE",
          "line": 34
        },
        {
          "name": "TS",
          "line": 44
        },
        {
          "name": "RUN_DIR",
          "line": 45
        },
        {
          "name": "CONFIG_DIR",
          "line": 46
        },
        {
          "name": "LATEST_DIR",
          "line": 47
        },
        {
          "name": "SERVERLIST_FILE",
          "line": 52
        },
        {
          "name": "CANDIDATES_FILE",
          "line": 53
        },
        {
          "name": "WORKING_FILE",
          "line": 54
        },
        {
          "name": "FAIL_FILE",
          "line": 55
        },
        {
          "name": "SUMMARY_FILE",
          "line": 56
        },
        {
          "name": "SERVER_ID",
          "line": 120
        },
        {
          "name": "COUNTRY_CODE",
          "line": 123
        },
        {
          "name": "SERVER_NAME",
          "line": 126
        },
        {
          "name": "WG_BLOCK",
          "line": 129
        },
        {
          "name": "WG_IP",
          "line": 132
        },
        {
          "name": "WG_PORT",
          "line": 135
        },
        {
          "name": "TOTAL",
          "line": 148
        },
        {
          "name": "N",
          "line": 165
        },
        {
          "name": "OK",
          "line": 166
        },
        {
          "name": "FAIL",
          "line": 167
        },
        {
          "name": "N",
          "line": 170
        },
        {
          "name": "EXPECTED_ENDPOINT",
          "line": 171
        },
        {
          "name": "SAFE_NAME",
          "line": 173
        },
        {
          "name": "TMP_CONFIG",
          "line": 178
        },
        {
          "name": "CONFIG_FILE",
          "line": 179
        },
        {
          "name": "ENDPOINT",
          "line": 195
        },
        {
          "name": "ADDRESS",
          "line": 196
        },
        {
          "name": "MATCH",
          "line": 199
        },
        {
          "name": "MATCH",
          "line": 201
        },
        {
          "name": "OK",
          "line": 212
        },
        {
          "name": "REASON",
          "line": 215
        },
        {
          "name": "FAIL",
          "line": 222
        },
        {
          "name": "FAIL",
          "line": 232
        },
        {
          "name": "QUARANTINE_LATEST",
          "line": 253
        }
      ],
      "token_lines": {
        "table_200": [
          32,
          40
        ],
        "hmn_endpoint": [],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [],
        "active_interface_error": [
          38
        ]
      }
    },
    {
      "label": "refresh_awg",
      "source_path": "/root/hmn/hmn-refresh-awg.sh",
      "purpose": "healthy bootstrap interface detection",
      "sha256": "f725224e1b766f85f1ccf4a934e44f3c240865081348ff6bed8f63d366678e17",
      "size_bytes": 4979,
      "line_count": 213,
      "shebang": "#!/bin/ash",
      "sensitive": false,
      "functions": [
        {
          "name": "cleanup_lock",
          "line": 37
        },
        {
          "name": "say",
          "line": 43
        },
        {
          "name": "fail",
          "line": 48
        },
        {
          "name": "run_cmd",
          "line": 54
        },
        {
          "name": "get_table_default_dev",
          "line": 64
        }
      ],
      "uppercase_assignments": [
        {
          "name": "MODE",
          "line": 5
        },
        {
          "name": "BASE",
          "line": 6
        },
        {
          "name": "LOGDIR",
          "line": 7
        },
        {
          "name": "PING_IP",
          "line": 8
        },
        {
          "name": "DOWNLOAD",
          "line": 10
        },
        {
          "name": "TESTER",
          "line": 11
        },
        {
          "name": "RANKER",
          "line": 12
        },
        {
          "name": "PLANNER",
          "line": 13
        },
        {
          "name": "APPLY",
          "line": 14
        },
        {
          "name": "LOCKDIR",
          "line": 31
        },
        {
          "name": "CRON_STATUS",
          "line": 88
        },
        {
          "name": "ACTIVE",
          "line": 101
        },
        {
          "name": "TABLE_DEV",
          "line": 107
        },
        {
          "name": "TS",
          "line": 152
        },
        {
          "name": "REPORT",
          "line": 153
        }
      ],
      "token_lines": {
        "table_200": [
          65,
          109,
          110,
          113,
          147,
          183,
          184
        ],
        "hmn_endpoint": [
          190,
          194
        ],
        "amneziawg": [
          118
        ],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [
          31,
          91,
          92,
          95,
          145,
          178
        ],
        "active_interface_error": [
          128
        ]
      }
    },
    {
      "label": "validate_current_pool",
      "source_path": "/root/hmn/hmn-validate-current-pool.sh",
      "purpose": "healthy bootstrap interface detection",
      "sha256": "7cf24b674fff3a5077308f07f1202b70dd34979e50b835758f92e9bda92507ee",
      "size_bytes": 7298,
      "line_count": 266,
      "shebang": "#!/bin/ash",
      "sensitive": false,
      "functions": [
        {
          "name": "cleanup",
          "line": 61
        },
        {
          "name": "write_ranked_table",
          "line": 153
        }
      ],
      "uppercase_assignments": [
        {
          "name": "BASE",
          "line": 7
        },
        {
          "name": "CONFIG_DIR",
          "line": 8
        },
        {
          "name": "TESTER",
          "line": 9
        },
        {
          "name": "CACHE",
          "line": 10
        },
        {
          "name": "REPORTS",
          "line": 11
        },
        {
          "name": "STATE",
          "line": 12
        },
        {
          "name": "LOGDIR",
          "line": 13
        },
        {
          "name": "MIN_ALL_OK",
          "line": 15
        },
        {
          "name": "MIN_FOREIGN_OK",
          "line": 16
        },
        {
          "name": "EXCLUDE_REGEX",
          "line": 17
        },
        {
          "name": "MAINT",
          "line": 19
        },
        {
          "name": "BAD",
          "line": 20
        },
        {
          "name": "QUAR",
          "line": 21
        },
        {
          "name": "TS",
          "line": 23
        },
        {
          "name": "RUNLOG",
          "line": 24
        },
        {
          "name": "CRON_WAS_RUNNING",
          "line": 51
        },
        {
          "name": "CRON_WAS_RUNNING",
          "line": 53
        },
        {
          "name": "MAINT_WAS_PRESENT",
          "line": 56
        },
        {
          "name": "MAINT_WAS_PRESENT",
          "line": 58
        },
        {
          "name": "ACTIVE",
          "line": 90
        },
        {
          "name": "RCFILE",
          "line": 97
        },
        {
          "name": "TEST_RC",
          "line": 103
        },
        {
          "name": "RESULTS",
          "line": 112
        },
        {
          "name": "TMP_ALL_LINES",
          "line": 121
        },
        {
          "name": "TMP_FOREIGN_LINES",
          "line": 122
        },
        {
          "name": "OUT_ALL",
          "line": 123
        },
        {
          "name": "OUT_FOREIGN",
          "line": 124
        },
        {
          "name": "ALL_OK",
          "line": 138
        },
        {
          "name": "FOREIGN_OK",
          "line": 139
        },
        {
          "name": "IN",
          "line": 154
        },
        {
          "name": "OUT",
          "line": 155
        },
        {
          "name": "N",
          "line": 159
        },
        {
          "name": "TAB",
          "line": 160
        },
        {
          "name": "N",
          "line": 164
        },
        {
          "name": "AVG_CLEAN",
          "line": 166
        },
        {
          "name": "EP",
          "line": 218
        },
        {
          "name": "ACTIVE",
          "line": 229
        }
      ],
      "token_lines": {
        "table_200": [
          92,
          232,
          250
        ],
        "hmn_endpoint": [
          218
        ],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [
          19,
          70,
          71,
          84,
          85,
          86,
          97,
          121,
          122
        ],
        "active_interface_error": []
      }
    },
    {
      "label": "planner",
      "source_path": "/usr/local/sbin/router-egress-hmn-plan-top5.sh",
      "purpose": "runtime endpoint source of truth",
      "sha256": "6ec99e157235d811d6f0f3ab92de7f3371dc813f2478a654358982cda7ce34ce",
      "size_bytes": 5273,
      "line_count": 192,
      "shebang": "#!/bin/sh",
      "sensitive": false,
      "functions": [
        {
          "name": "json_s",
          "line": 13
        },
        {
          "name": "pool_mtime_epoch_local",
          "line": 17
        },
        {
          "name": "contains_endpoint",
          "line": 34
        },
        {
          "name": "candidate_row_for_endpoint",
          "line": 42
        },
        {
          "name": "pick_replacement",
          "line": 48
        }
      ],
      "uppercase_assignments": [
        {
          "name": "HELPER",
          "line": 4
        },
        {
          "name": "POOL",
          "line": 5
        },
        {
          "name": "FALLBACK_POOL",
          "line": 6
        },
        {
          "name": "WORK",
          "line": 7
        },
        {
          "name": "SLOTS",
          "line": 8
        },
        {
          "name": "POOL",
          "line": 67
        },
        {
          "name": "QUARANTINE_ENABLED",
          "line": 78
        },
        {
          "name": "QUARANTINE_ENABLED",
          "line": 80
        },
        {
          "name": "CAND",
          "line": 83
        },
        {
          "name": "DESIRED",
          "line": 84
        },
        {
          "name": "CURRENT",
          "line": 85
        },
        {
          "name": "KEEPERS",
          "line": 86
        },
        {
          "name": "ASSIGNED",
          "line": 87
        },
        {
          "name": "PLAN",
          "line": 88
        }
      ],
      "token_lines": {
        "table_200": [],
        "hmn_endpoint": [
          125
        ],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [
          7
        ],
        "active_interface_error": []
      }
    },
    {
      "label": "rebalance_apply",
      "source_path": "/usr/local/sbin/router-egress-hmn-rebalance-top5-apply.sh",
      "purpose": "runtime source apply retry and nonzero failure exit",
      "sha256": "2fa6b725c5e123b7fdc3dd14747058a02415d025231054c7537d72b8edc2346f",
      "size_bytes": 7723,
      "line_count": 213,
      "shebang": "#!/bin/sh",
      "sensitive": false,
      "functions": [
        {
          "name": "json_escape",
          "line": 25
        },
        {
          "name": "strict_ping",
          "line": 27
        }
      ],
      "uppercase_assignments": [
        {
          "name": "SLOTS_CONF",
          "line": 4
        },
        {
          "name": "CACHE_DIR",
          "line": 5
        },
        {
          "name": "STATE_DIR",
          "line": 6
        },
        {
          "name": "LOG",
          "line": 7
        },
        {
          "name": "MAX_POOL_AGE_SEC",
          "line": 8
        },
        {
          "name": "PREFERRED_POOL_FILES",
          "line": 9
        },
        {
          "name": "POST_APPLY_SLEEP_SEC",
          "line": 10
        },
        {
          "name": "MODE",
          "line": 11
        },
        {
          "name": "CONFIRM",
          "line": 12
        },
        {
          "name": "NR",
          "line": 73
        },
        {
          "name": "NR",
          "line": 90
        },
        {
          "name": "NR",
          "line": 95
        },
        {
          "name": "FILENAME",
          "line": 102
        },
        {
          "name": "FILENAME",
          "line": 109
        }
      ],
      "token_lines": {
        "table_200": [],
        "hmn_endpoint": [
          85,
          153,
          163
        ],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [
          173
        ],
        "apply_ok": [
          127,
          172,
          199
        ],
        "rebalance_rc": [],
        "strict_ping": [
          27,
          171
        ],
        "root_backup_path": [],
        "tmp_backup_path": [
          31,
          33,
          37,
          60,
          61,
          62,
          63
        ],
        "active_interface_error": []
      }
    },
    {
      "label": "emergency_runner",
      "source_path": "/usr/local/sbin/router-egress-emergency-refresh.sh",
      "purpose": "validate rebalance JSON contract",
      "sha256": "bea82c260ba6006b524ef01c614848097bd231fa6d49a725baded99046fe5d11",
      "size_bytes": 9034,
      "line_count": 304,
      "shebang": "#!/bin/sh",
      "sensitive": true,
      "functions": [
        {
          "name": "json_s",
          "line": 62
        },
        {
          "name": "json_bool",
          "line": 66
        },
        {
          "name": "now_epoch",
          "line": 73
        },
        {
          "name": "get_state",
          "line": 85
        },
        {
          "name": "set_state",
          "line": 95
        },
        {
          "name": "daily_count",
          "line": 103
        },
        {
          "name": "count_healthy_slots",
          "line": 111
        },
        {
          "name": "json_external_status",
          "line": 122
        },
        {
          "name": "threshold_reached",
          "line": 131
        },
        {
          "name": "cooldown_remaining",
          "line": 136
        },
        {
          "name": "emit_json",
          "line": 147
        },
        {
          "name": "acquire_lock",
          "line": 185
        },
        {
          "name": "release_lock",
          "line": 192
        },
        {
          "name": "selftest",
          "line": 196
        }
      ],
      "uppercase_assignments": [
        {
          "name": "CONF",
          "line": 4
        },
        {
          "name": "EMERGENCY_DAILY_FAIL_THRESHOLD",
          "line": 7
        },
        {
          "name": "EMERGENCY_COOLDOWN_SECONDS",
          "line": 8
        },
        {
          "name": "EMERGENCY_COMMIT_ENABLED",
          "line": 9
        },
        {
          "name": "EMERGENCY_DIRECT_FAILOPEN_ENABLED",
          "line": 10
        },
        {
          "name": "EMERGENCY_STATE_HELPER",
          "line": 12
        },
        {
          "name": "EMERGENCY_REFRESH_CMD",
          "line": 13
        },
        {
          "name": "EMERGENCY_PLANNER_CMD",
          "line": 14
        },
        {
          "name": "EMERGENCY_REBALANCE_APPLY_CMD",
          "line": 15
        },
        {
          "name": "EMERGENCY_WATCHER_CMD",
          "line": 16
        },
        {
          "name": "EMERGENCY_CONFIRM_TOKEN",
          "line": 17
        },
        {
          "name": "EMERGENCY_LOCK_DIR",
          "line": 18
        },
        {
          "name": "EMERGENCY_LOG",
          "line": 19
        }
      ],
      "token_lines": {
        "table_200": [],
        "hmn_endpoint": [],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [
          274,
          275,
          277,
          278,
          280
        ],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [
          114,
          117
        ],
        "active_interface_error": []
      }
    },
    {
      "label": "slots_apply",
      "source_path": "/usr/local/sbin/router-egress-slots-apply.sh",
      "purpose": "table 200 optional contract",
      "sha256": "6e5bfbcc2b216a234f5501d72f2319a74f5ae9f49ec931d10157e322eeb66bfc",
      "size_bytes": 2217,
      "line_count": 83,
      "shebang": "#!/bin/sh",
      "sensitive": false,
      "functions": [
        {
          "name": "ensure_link",
          "line": 4
        },
        {
          "name": "ensure_rule",
          "line": 12
        }
      ],
      "uppercase_assignments": [],
      "token_lines": {
        "table_200": [
          44
        ],
        "hmn_endpoint": [],
        "amneziawg": [],
        "wg_show": [],
        "commit_failed": [],
        "apply_ok": [],
        "rebalance_rc": [],
        "strict_ping": [],
        "root_backup_path": [],
        "tmp_backup_path": [],
        "active_interface_error": []
      }
    }
  ],
  "warnings": [
    {
      "label": "code_test",
      "warning": "table_200_contract_present",
      "lines": [
        21,
        28,
        29
      ]
    },
    {
      "label": "download_all_awg",
      "warning": "table_200_contract_present",
      "lines": [
        32,
        40
      ]
    },
    {
      "label": "refresh_awg",
      "warning": "table_200_contract_present",
      "lines": [
        65,
        109,
        110,
        113,
        147,
        183,
        184
      ]
    },
    {
      "label": "validate_current_pool",
      "warning": "table_200_contract_present",
      "lines": [
        92,
        232,
        250
      ]
    },
    {
      "label": "planner",
      "warning": "uci_hmn_endpoint_used",
      "lines": [
        125
      ]
    },
    {
      "label": "rebalance_apply",
      "warning": "uci_hmn_endpoint_used",
      "lines": [
        85,
        153,
        163
      ]
    },
    {
      "label": "slots_apply",
      "warning": "table_200_contract_present",
      "lines": [
        44
      ]
    }
  ]
}
