1
0

runtime: publish SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1

This commit is contained in:
homelab-runtime-publisher
2026-09-11 23:33:30 +00:00
parent 24b1c930e7
commit 59aaa55bf9
4 changed files with 249 additions and 231 deletions
@@ -0,0 +1,38 @@
{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1",
"status": "OK",
"rc": 0,
"host": "pve01",
"mode": "read-only",
"component": "infra-dr-backupv2-control-backup-logic",
"started_at_utc": "2026-09-11T23:33:29Z",
"finished_at_utc": "2026-09-11T23:33:29Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "2c1d227e011446eb686ecf97218c70c89f651616f45b4bb3e68f32bba3533ace",
"duplicate_failed_command_blocked": false,
"block_reason": null,
"execution_started": true,
"change_declared": false,
"result_contract_valid": true,
"result_contract_status": null,
"result_contract_error": null,
"command_rc": 0,
"changes_made": false,
"rollback_started": false,
"rollback_restored": null,
"mutation_outcome": "NO_MUTATION",
"sanitized": true,
"secrets_included": false,
"private_addresses_included": false,
"raw_evidence_retained_locally": true,
"raw_evidence_sha256": "4be463d9015eac40cac32a68aa1b48e571e45d59f953244a55f8eba2d6e159cb",
"sanitized_output_sha256": "f367fb4787ad044b2e839dc8ca1d49f1687c27df5a650940aeacd85661a27130",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "LOGIC255_BEGIN\nCOMMAND_ID=SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1\nMODE=READ_ONLY_LOCAL_SOURCE_LOGIC\nCLOUD_CALLS_BY_255=0\nRCLONE_COMMANDS_EXECUTED_BY_255=0\nERROR_REGISTER_CHECK=READ\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=READ\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nAUTHORITY_FRESH_READ=OK\nTARGET_PATH=/usr/local/sbin/homelab-control-backup\nTARGET_SHA256=0b3a0f685d4e67cb86250df89a4918aff2e6c67799b7d35b0e54b1bbc016ee57\nTARGET_SHA_MATCH=YES\nUNIT_PATH=/etc/systemd/system/homelab-control-backup.service\nUNIT_SHA256=428d3e1f3042c3347b7c34b6f190e44fa35f7a97264eec3974239f581c9b9250\nUNIT_SHA_MATCH=YES\nTARGET_LINE_COUNT=150\nFUNCTION_COUNT=0\nSOURCE_SKELETON_BEGIN\nSRC_LINE_001=#!/usr/bin/env bash\nSRC_LINE_002=set -Eeuo pipefail\nSRC_LINE_003=umask 077\nSRC_LINE_004=LOGICAL_ID=control-bootstrap-v2\nSRC_LINE_005=DUE_SECONDS=43200\nSRC_LINE_006=SLA_SECONDS=86400\nSRC_LINE_007=STATE_ROOT=<LONG_TOKEN_REDACTED>\nSRC_LINE_008=STATE_DIR=$STATE_ROOT/$LOGICAL_ID\nSRC_LINE_009=EVIDENCE_ROOT=<LONG_TOKEN_REDACTED>\nSRC_LINE_010=HEALTH=<LONG_TOKEN_REDACTED>.json\nSRC_LINE_011=STAGE_ROOT=<LONG_TOKEN_REDACTED>\nSRC_LINE_012=VERIFY_ROOT=<LONG_TOKEN_REDACTED>\nSRC_LINE_013=LOCK=<LONG_TOKEN_REDACTED>.lock\nSRC_LINE_014=HEAVY_LOCK=/run/homelab-backup-heavy.lock\nSRC_LINE_015=RCLONE_CONFIG_SOURCE=${RCLONE_CONFIG:-/root/.config/rclone/[SENSITIVE_FILE]}\nSRC_LINE_016=TRANSPORT=<LONG_TOKEN_REDACTED>\nSRC_LINE_017=TRANSPORT_SHA=<LONG_TOKEN_REDACTED>\nSRC_LINE_018=BUILDER=<LONG_TOKEN_REDACTED>\nSRC_LINE_019=BUILDER_SHA=<LONG_TOKEN_REDACTED>\nSRC_LINE_020=REMOTE_A=pve01-mail-01-crypt:homelab-backups\nSRC_LINE_021=REMOTE_B=pve01-mail-02-crypt:homelab-backups\nSRC_LINE_022=CLOUD_WRITE_MARKER=${<LONG_TOKEN_REDACTED>:-}\nSRC_LINE_023=\nSRC_LINE_024=die(){ printf 'CONTROL_BACKUP_ERROR=%s<LF>' \"$1\" >&2; exit \"${2:-65}\"; }\nSRC_LINE_025=for c in jq date find sort tail cut sha256sum stat flock rclone mktemp cmp awk mkdir rm install xargs grep cat mv chmod; do command -v \"$c\" >/dev/null || die \"TOOL_MISSING_$c\" 69; done\nSRC_LINE_026=[[ -x \"$TRANSPORT\" && ! -L \"$TRANSPORT\" ]] || die TRANSPORT_UNSAFE 69\nSRC_LINE_027=[[ \"$(sha256sum \"$TRANSPORT\"|awk '{print $1}')\" == \"$TRANSPORT_SHA\" ]] || die TRANSPORT_SHA_DRIFT 65\nSRC_LINE_028=[[ -x \"$BUILDER\" && ! -L \"$BUILDER\" ]] || die BUILDER_UNSAFE 69\nSRC_LINE_029=[[ \"$(sha256sum \"$BUILDER\"|awk '{print $1}')\" == \"$BUILDER_SHA\" ]] || die BUILDER_SHA_DRIFT 65\nSRC_LINE_030=\nSOURCE_SKELETON_END\nSOURCE_REDACTED_LINE_COUNT=0\nFIXED_REMOTE_PVE01_MAIL_01_CRYPT_LINES=20\nFIXED_REMOTE_PVE01_MAIL_02_CRYPT_LINES=21\nMARKER_RCLONE_LINES=15,25,66,67,68,74,79,94\nMARKER_SEALED_LINES=43,46,92,114,129,142\nMARKER_VERIFY_SEALED_LINES=92\nMARKER_BACKUP_DELETE_LINES=129,139\nMARKER_LOCAL_CLEANUP_LINES=NONE\nMARKER_RUN_BACKUP_LINES=109,146,147\nMARKER_VERIFY_GENERATION_LINES=87,120,129,141,148\nMARKER_CLEANUP_VERIFY_LINES=95,106\nMARKER_RECONSTRUCT_LINES=70,97,103\nMARKER_SPLIT_LINES=NONE\nMARKER_536870912_LINES=NONE\nMARKER_512M_LINES=NONE\nMARKER_PART_LINES=71,72,73,74,78,79,80,81,82\nUNIT_LINE_COUNT=16\nUNIT_SKELETON_BEGIN\nUNIT_LINE_001=[Unit]\nUNIT_LINE_002=Description=Homelab recurring CONTROL cloud quorum backup\nUNIT_LINE_003=After=network-online.target\nUNIT_LINE_004=Wants=network-online.target\nUNIT_LINE_005=ConditionPathExists=<LONG_TOKEN_REDACTED>\nUNIT_LINE_006=ConditionPathExists=<LONG_TOKEN_REDACTED>\nUNIT_LINE_007=\nUNIT_LINE_008=[Service]\nUNIT_LINE_009=Type=oneshot\nUNIT_LINE_010=ExecStart=<LONG_TOKEN_REDACTED> run\nUNIT_LINE_011=User=root\nUNIT_LINE_012=Group=root\nUNIT_LINE_013=UMask=0077\nUNIT_LINE_014=Nice=10\nUNIT_LINE_015=IOSchedulingClass=best-effort\nUNIT_LINE_016=IOSchedulingPriority=7\nUNIT_SKELETON_END\nUNIT_REDACTED_LINE_COUNT=0\nFILES_WRITTEN_BY_PAYLOAD=0\nSYSTEMD_MUTATIONS_BY_255=0\nLOGIC255_READY_FOR_MINIMAL_PATCH=YES\nLOGIC255_END\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\n"
}
@@ -0,0 +1,123 @@
CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=infra-dr-backupv2-control-backup-logic
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=2c1d227e011446eb686ecf97218c70c89f651616f45b4bb3e68f32bba3533ace
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=4be463d9015eac40cac32a68aa1b48e571e45d59f953244a55f8eba2d6e159cb
SANITIZED_OUTPUT_SHA256=f367fb4787ad044b2e839dc8ca1d49f1687c27df5a650940aeacd85661a27130
OUTPUT_BEGIN
LOGIC255_BEGIN
COMMAND_ID=SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1
MODE=READ_ONLY_LOCAL_SOURCE_LOGIC
CLOUD_CALLS_BY_255=0
RCLONE_COMMANDS_EXECUTED_BY_255=0
ERROR_REGISTER_CHECK=READ
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
REFERENCE_CHECK=READ
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
AUTHORITY_FRESH_READ=OK
TARGET_PATH=/usr/local/sbin/homelab-control-backup
TARGET_SHA256=0b3a0f685d4e67cb86250df89a4918aff2e6c67799b7d35b0e54b1bbc016ee57
TARGET_SHA_MATCH=YES
UNIT_PATH=/etc/systemd/system/homelab-control-backup.service
UNIT_SHA256=428d3e1f3042c3347b7c34b6f190e44fa35f7a97264eec3974239f581c9b9250
UNIT_SHA_MATCH=YES
TARGET_LINE_COUNT=150
FUNCTION_COUNT=0
SOURCE_SKELETON_BEGIN
SRC_LINE_001=#!/usr/bin/env bash
SRC_LINE_002=set -Eeuo pipefail
SRC_LINE_003=umask 077
SRC_LINE_004=LOGICAL_ID=control-bootstrap-v2
SRC_LINE_005=DUE_SECONDS=43200
SRC_LINE_006=SLA_SECONDS=86400
SRC_LINE_007=STATE_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_008=STATE_DIR=$STATE_ROOT/$LOGICAL_ID
SRC_LINE_009=EVIDENCE_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_010=HEALTH=<LONG_TOKEN_REDACTED>.json
SRC_LINE_011=STAGE_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_012=VERIFY_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_013=LOCK=<LONG_TOKEN_REDACTED>.lock
SRC_LINE_014=HEAVY_LOCK=/run/homelab-backup-heavy.lock
SRC_LINE_015=RCLONE_CONFIG_SOURCE=${RCLONE_CONFIG:-/root/.config/rclone/[SENSITIVE_FILE]}
SRC_LINE_016=TRANSPORT=<LONG_TOKEN_REDACTED>
SRC_LINE_017=TRANSPORT_SHA=<LONG_TOKEN_REDACTED>
SRC_LINE_018=BUILDER=<LONG_TOKEN_REDACTED>
SRC_LINE_019=BUILDER_SHA=<LONG_TOKEN_REDACTED>
SRC_LINE_020=REMOTE_A=pve01-mail-01-crypt:homelab-backups
SRC_LINE_021=REMOTE_B=pve01-mail-02-crypt:homelab-backups
SRC_LINE_022=CLOUD_WRITE_MARKER=${<LONG_TOKEN_REDACTED>:-}
SRC_LINE_023=
SRC_LINE_024=die(){ printf 'CONTROL_BACKUP_ERROR=%s<LF>' "$1" >&2; exit "${2:-65}"; }
SRC_LINE_025=for c in jq date find sort tail cut sha256sum stat flock rclone mktemp cmp awk mkdir rm install xargs grep cat mv chmod; do command -v "$c" >/dev/null || die "TOOL_MISSING_$c" 69; done
SRC_LINE_026=[[ -x "$TRANSPORT" && ! -L "$TRANSPORT" ]] || die TRANSPORT_UNSAFE 69
SRC_LINE_027=[[ "$(sha256sum "$TRANSPORT"|awk '{print $1}')" == "$TRANSPORT_SHA" ]] || die TRANSPORT_SHA_DRIFT 65
SRC_LINE_028=[[ -x "$BUILDER" && ! -L "$BUILDER" ]] || die BUILDER_UNSAFE 69
SRC_LINE_029=[[ "$(sha256sum "$BUILDER"|awk '{print $1}')" == "$BUILDER_SHA" ]] || die BUILDER_SHA_DRIFT 65
SRC_LINE_030=
SOURCE_SKELETON_END
SOURCE_REDACTED_LINE_COUNT=0
FIXED_REMOTE_PVE01_MAIL_01_CRYPT_LINES=20
FIXED_REMOTE_PVE01_MAIL_02_CRYPT_LINES=21
MARKER_RCLONE_LINES=15,25,66,67,68,74,79,94
MARKER_SEALED_LINES=43,46,92,114,129,142
MARKER_VERIFY_SEALED_LINES=92
MARKER_BACKUP_DELETE_LINES=129,139
MARKER_LOCAL_CLEANUP_LINES=NONE
MARKER_RUN_BACKUP_LINES=109,146,147
MARKER_VERIFY_GENERATION_LINES=87,120,129,141,148
MARKER_CLEANUP_VERIFY_LINES=95,106
MARKER_RECONSTRUCT_LINES=70,97,103
MARKER_SPLIT_LINES=NONE
MARKER_536870912_LINES=NONE
MARKER_512M_LINES=NONE
MARKER_PART_LINES=71,72,73,74,78,79,80,81,82
UNIT_LINE_COUNT=16
UNIT_SKELETON_BEGIN
UNIT_LINE_001=[Unit]
UNIT_LINE_002=Description=Homelab recurring CONTROL cloud quorum backup
UNIT_LINE_003=After=network-online.target
UNIT_LINE_004=Wants=network-online.target
UNIT_LINE_005=ConditionPathExists=<LONG_TOKEN_REDACTED>
UNIT_LINE_006=ConditionPathExists=<LONG_TOKEN_REDACTED>
UNIT_LINE_007=
UNIT_LINE_008=[Service]
UNIT_LINE_009=Type=oneshot
UNIT_LINE_010=ExecStart=<LONG_TOKEN_REDACTED> run
UNIT_LINE_011=User=root
UNIT_LINE_012=Group=root
UNIT_LINE_013=UMask=0077
UNIT_LINE_014=Nice=10
UNIT_LINE_015=IOSchedulingClass=best-effort
UNIT_LINE_016=IOSchedulingPriority=7
UNIT_SKELETON_END
UNIT_REDACTED_LINE_COUNT=0
FILES_WRITTEN_BY_PAYLOAD=0
SYSTEMD_MUTATIONS_BY_255=0
LOGIC255_READY_FOR_MINIMAL_PATCH=YES
LOGIC255_END
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
OUTPUT_END
CHAT_OUTPUT_END
+8 -8
View File
File diff suppressed because one or more lines are too long
+80 -223
View File
@@ -1,15 +1,15 @@
CHAT_OUTPUT_BEGIN
COMMAND_ID=SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-STATIC-254R1
COMMAND_ID=SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=infra-dr-backupv2-control-backup-static
COMPONENT=infra-dr-backupv2-control-backup-logic
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=0d1c1e2624f3ddfc06d59a300295efe0f8010bee2dfd582760022ba3bfac16f3
COMMAND_SHA256=2c1d227e011446eb686ecf97218c70c89f651616f45b4bb3e68f32bba3533ace
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
@@ -24,14 +24,14 @@ MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=1daa06d99f984ed4228e1380fc92b69a832c3c7dd89f74d9838e95a51a875daf
SANITIZED_OUTPUT_SHA256=1daa06d99f984ed4228e1380fc92b69a832c3c7dd89f74d9838e95a51a875daf
RAW_EVIDENCE_SHA256=4be463d9015eac40cac32a68aa1b48e571e45d59f953244a55f8eba2d6e159cb
SANITIZED_OUTPUT_SHA256=f367fb4787ad044b2e839dc8ca1d49f1687c27df5a650940aeacd85661a27130
OUTPUT_BEGIN
STATIC254_BEGIN
COMMAND_ID=SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-STATIC-254R1
MODE=READ_ONLY_LOCAL_STATIC_INSPECTION
CLOUD_CALLS_BY_254=0
RCLONE_COMMANDS_EXECUTED_BY_254=0
LOGIC255_BEGIN
COMMAND_ID=SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1
MODE=READ_ONLY_LOCAL_SOURCE_LOGIC
CLOUD_CALLS_BY_255=0
RCLONE_COMMANDS_EXECUTED_BY_255=0
ERROR_REGISTER_CHECK=READ
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
REFERENCE_CHECK=READ
@@ -39,228 +39,85 @@ REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d6
AUTHORITY_FRESH_READ=OK
TARGET_PATH=/usr/local/sbin/homelab-control-backup
TARGET_SHA256=0b3a0f685d4e67cb86250df89a4918aff2e6c67799b7d35b0e54b1bbc016ee57
TARGET_EXPECTED_SHA256=0b3a0f685d4e67cb86250df89a4918aff2e6c67799b7d35b0e54b1bbc016ee57
TARGET_SHA_MATCH=YES
TARGET_SIZE=11862
TARGET_MODE=0755
UNIT_PATH=/etc/systemd/system/homelab-control-backup.service
UNIT_SHA256=428d3e1f3042c3347b7c34b6f190e44fa35f7a97264eec3974239f581c9b9250
UNIT_SHA_MATCH=YES
TARGET_LINE_COUNT=150
TARGET_SHEBANG_CLASS=SHELL
FUNCTION_COUNT=7
FUNCTION_01_NAME=latest_state
FUNCTION_01_START_LINE=31
FUNCTION_01_END_LINE=34
FUNCTION_01_BODY_SHA256=bec501f7ff7546300cd64d2544a149d608e5c682ce2de15996f53d847645f797
FUNCTION_02_NAME=state_decision
FUNCTION_02_START_LINE=35
FUNCTION_02_END_LINE=57
FUNCTION_02_BODY_SHA256=50a7cb6579d12dde99f66d43b9e323a8339f96abece487e1ef8c60124419b8a2
FUNCTION_03_NAME=mark_cloud_write
FUNCTION_03_START_LINE=58
FUNCTION_03_END_LINE=65
FUNCTION_03_BODY_SHA256=780374f488da4bf93632d8a0de2db31cd351329b6c5581bf5ef7a8a4f63a6002
FUNCTION_04_NAME=prepare_rclone
FUNCTION_04_START_LINE=66
FUNCTION_04_END_LINE=69
FUNCTION_04_BODY_SHA256=9894074a28ce27f1a50447d4b6e33b4f5dde259754ad71f2dd982831ef9fe0c5
FUNCTION_05_NAME=reconstruct
FUNCTION_05_START_LINE=70
FUNCTION_05_END_LINE=86
FUNCTION_05_BODY_SHA256=19062cac5f312d1f9a6930f3e9f5e7c96ea37b265f69acc51425b4b74187ff0e
FUNCTION_06_NAME=verify_generation
FUNCTION_06_START_LINE=87
FUNCTION_06_END_LINE=108
FUNCTION_06_BODY_SHA256=a5ddad1c6e8de963c1b9fc548a1fe2716af4e57e0e591a0966ffcd2e78691e16
FUNCTION_07_NAME=run_backup
FUNCTION_07_START_LINE=109
FUNCTION_07_END_LINE=150
FUNCTION_07_BODY_SHA256=e086b8a4c2bf8bcd159cdd65733b8552d73ff3266c360e156ed2c97e93bdd60d
ASSIGNMENT_COUNT=44
ASSIGN_001_LINE=4
ASSIGN_001_NAME=LOGICAL_ID
ASSIGN_001_CLASS=SAFE_SCALAR
ASSIGN_002_LINE=5
ASSIGN_002_NAME=DUE_SECONDS
ASSIGN_002_CLASS=SAFE_SCALAR
ASSIGN_003_LINE=6
ASSIGN_003_NAME=SLA_SECONDS
ASSIGN_003_CLASS=SAFE_SCALAR
ASSIGN_004_LINE=7
ASSIGN_004_NAME=STATE_ROOT
ASSIGN_004_CLASS=PATH_LITERAL
ASSIGN_005_LINE=8
ASSIGN_005_NAME=STATE_DIR
ASSIGN_005_CLASS=OTHER
ASSIGN_006_LINE=9
ASSIGN_006_NAME=EVIDENCE_ROOT
ASSIGN_006_CLASS=PATH_LITERAL
ASSIGN_007_LINE=10
ASSIGN_007_NAME=HEALTH
ASSIGN_007_CLASS=PATH_LITERAL
ASSIGN_008_LINE=11
ASSIGN_008_NAME=STAGE_ROOT
ASSIGN_008_CLASS=PATH_LITERAL
ASSIGN_009_LINE=12
ASSIGN_009_NAME=VERIFY_ROOT
ASSIGN_009_CLASS=PATH_LITERAL
ASSIGN_010_LINE=13
ASSIGN_010_NAME=LOCK
ASSIGN_010_CLASS=PATH_LITERAL
ASSIGN_011_LINE=14
ASSIGN_011_NAME=HEAVY_LOCK
ASSIGN_011_CLASS=PATH_LITERAL
ASSIGN_012_LINE=15
ASSIGN_012_NAME=RCLONE_CONFIG_SOURCE
ASSIGN_012_CLASS=OTHER
ASSIGN_013_LINE=16
ASSIGN_013_NAME=TRANSPORT
ASSIGN_013_CLASS=PATH_LITERAL
ASSIGN_014_LINE=17
ASSIGN_014_NAME=TRANSPORT_SHA
ASSIGN_014_CLASS=SAFE_SCALAR
ASSIGN_015_LINE=18
ASSIGN_015_NAME=BUILDER
ASSIGN_015_CLASS=PATH_LITERAL
ASSIGN_016_LINE=19
ASSIGN_016_NAME=BUILDER_SHA
ASSIGN_016_CLASS=SAFE_SCALAR
ASSIGN_017_LINE=20
ASSIGN_017_NAME=REMOTE_A
ASSIGN_017_CLASS=FIXED_CRYPT_REMOTE
ASSIGN_018_LINE=21
ASSIGN_018_NAME=REMOTE_B
ASSIGN_018_CLASS=FIXED_CRYPT_REMOTE
ASSIGN_019_LINE=22
ASSIGN_019_NAME=CLOUD_WRITE_MARKER
ASSIGN_019_CLASS=OTHER
ASSIGN_020_LINE=39
ASSIGN_020_NAME=status
ASSIGN_020_CLASS=OTHER
ASSIGN_021_LINE=46
ASSIGN_021_NAME=sha
ASSIGN_021_CLASS=OTHER
ASSIGN_022_LINE=47
ASSIGN_022_NAME=epoch
ASSIGN_022_CLASS=OTHER
ASSIGN_023_LINE=49
ASSIGN_023_NAME=ev
ASSIGN_023_CLASS=OTHER
ASSIGN_024_LINE=53
ASSIGN_024_NAME=age
ASSIGN_024_CLASS=OTHER
ASSIGN_025_LINE=72
ASSIGN_025_NAME=expected_manifest
ASSIGN_025_CLASS=OTHER
ASSIGN_026_LINE=73
ASSIGN_026_NAME=manifest
ASSIGN_026_CLASS=OTHER
ASSIGN_027_LINE=76
ASSIGN_027_NAME=idx
ASSIGN_027_CLASS=SAFE_SCALAR
ASSIGN_028_LINE=79
ASSIGN_028_NAME=part
ASSIGN_028_CLASS=OTHER
ASSIGN_029_LINE=80
ASSIGN_029_NAME=got_size
ASSIGN_029_CLASS=OTHER
ASSIGN_030_LINE=89
ASSIGN_030_NAME=gen
ASSIGN_030_CLASS=OTHER
ASSIGN_031_LINE=90
ASSIGN_031_NAME=state
ASSIGN_031_CLASS=OTHER
ASSIGN_032_LINE=94
ASSIGN_032_NAME=work
ASSIGN_032_CLASS=OTHER
ASSIGN_033_LINE=96
ASSIGN_033_NAME=base_a
ASSIGN_033_CLASS=OTHER
ASSIGN_034_LINE=99
ASSIGN_034_NAME=verify_json
ASSIGN_034_CLASS=OTHER
ASSIGN_035_LINE=101
ASSIGN_035_NAME=archive_sha
ASSIGN_035_CLASS=OTHER
ASSIGN_036_LINE=102
ASSIGN_036_NAME=tmp
ASSIGN_036_CLASS=OTHER
ASSIGN_037_LINE=105
ASSIGN_037_NAME=tmp
ASSIGN_037_CLASS=OTHER
ASSIGN_038_LINE=114
ASSIGN_038_NAME=incompletes
ASSIGN_038_CLASS=OTHER
ASSIGN_039_LINE=116
ASSIGN_039_NAME=line
ASSIGN_039_CLASS=OTHER
ASSIGN_040_LINE=117
ASSIGN_040_NAME=gen
ASSIGN_040_CLASS=OTHER
ASSIGN_041_LINE=123
ASSIGN_041_NAME=decision
ASSIGN_041_CLASS=SAFE_SCALAR
ASSIGN_042_LINE=126
ASSIGN_042_NAME=state
ASSIGN_042_CLASS=OTHER
ASSIGN_043_LINE=133
ASSIGN_043_NAME=now
ASSIGN_043_CLASS=OTHER
ASSIGN_044_LINE=135
ASSIGN_044_NAME=payload
ASSIGN_044_CLASS=OTHER
FIXED_REMOTE_PVE01_MAIL_01_CRYPT_PRESENT=YES
FUNCTION_COUNT=0
SOURCE_SKELETON_BEGIN
SRC_LINE_001=#!/usr/bin/env bash
SRC_LINE_002=set -Eeuo pipefail
SRC_LINE_003=umask 077
SRC_LINE_004=LOGICAL_ID=control-bootstrap-v2
SRC_LINE_005=DUE_SECONDS=43200
SRC_LINE_006=SLA_SECONDS=86400
SRC_LINE_007=STATE_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_008=STATE_DIR=$STATE_ROOT/$LOGICAL_ID
SRC_LINE_009=EVIDENCE_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_010=HEALTH=<LONG_TOKEN_REDACTED>.json
SRC_LINE_011=STAGE_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_012=VERIFY_ROOT=<LONG_TOKEN_REDACTED>
SRC_LINE_013=LOCK=<LONG_TOKEN_REDACTED>.lock
SRC_LINE_014=HEAVY_LOCK=/run/homelab-backup-heavy.lock
SRC_LINE_015=RCLONE_CONFIG_SOURCE=${RCLONE_CONFIG:-/root/.config/rclone/[SENSITIVE_FILE]}
SRC_LINE_016=TRANSPORT=<LONG_TOKEN_REDACTED>
SRC_LINE_017=TRANSPORT_SHA=<LONG_TOKEN_REDACTED>
SRC_LINE_018=BUILDER=<LONG_TOKEN_REDACTED>
SRC_LINE_019=BUILDER_SHA=<LONG_TOKEN_REDACTED>
SRC_LINE_020=REMOTE_A=pve01-mail-01-crypt:homelab-backups
SRC_LINE_021=REMOTE_B=pve01-mail-02-crypt:homelab-backups
SRC_LINE_022=CLOUD_WRITE_MARKER=${<LONG_TOKEN_REDACTED>:-}
SRC_LINE_023=
SRC_LINE_024=die(){ printf 'CONTROL_BACKUP_ERROR=%s<LF>' "$1" >&2; exit "${2:-65}"; }
SRC_LINE_025=for c in jq date find sort tail cut sha256sum stat flock rclone mktemp cmp awk mkdir rm install xargs grep cat mv chmod; do command -v "$c" >/dev/null || die "TOOL_MISSING_$c" 69; done
SRC_LINE_026=[[ -x "$TRANSPORT" && ! -L "$TRANSPORT" ]] || die TRANSPORT_UNSAFE 69
SRC_LINE_027=[[ "$(sha256sum "$TRANSPORT"|awk '{print $1}')" == "$TRANSPORT_SHA" ]] || die TRANSPORT_SHA_DRIFT 65
SRC_LINE_028=[[ -x "$BUILDER" && ! -L "$BUILDER" ]] || die BUILDER_UNSAFE 69
SRC_LINE_029=[[ "$(sha256sum "$BUILDER"|awk '{print $1}')" == "$BUILDER_SHA" ]] || die BUILDER_SHA_DRIFT 65
SRC_LINE_030=
SOURCE_SKELETON_END
SOURCE_REDACTED_LINE_COUNT=0
FIXED_REMOTE_PVE01_MAIL_01_CRYPT_LINES=20
FIXED_REMOTE_PVE01_MAIL_02_CRYPT_PRESENT=YES
FIXED_REMOTE_PVE01_MAIL_02_CRYPT_LINES=21
DYNAMIC_TERM_COUNT=0
RCLONE_REFERENCE_LINE_COUNT=8
RCLONE_REF_01_LINE=15
RCLONE_REF_01_VERBS=UNKNOWN
RCLONE_REF_02_LINE=25
RCLONE_REF_02_VERBS=cat,mkdir
RCLONE_REF_03_LINE=66
RCLONE_REF_03_VERBS=UNKNOWN
RCLONE_REF_04_LINE=67
RCLONE_REF_04_VERBS=UNKNOWN
RCLONE_REF_05_LINE=68
RCLONE_REF_05_VERBS=UNKNOWN
RCLONE_REF_06_LINE=74
RCLONE_REF_06_VERBS=cat
RCLONE_REF_07_LINE=79
RCLONE_REF_07_VERBS=cat
RCLONE_REF_08_LINE=94
RCLONE_REF_08_VERBS=UNKNOWN
MARKER_SEALED_PRESENT=YES
MARKER_SEALED_LINES=43,114,129,142
MARKER_VERIFY_SEALED_PRESENT=YES
MARKER_RCLONE_LINES=15,25,66,67,68,74,79,94
MARKER_SEALED_LINES=43,46,92,114,129,142
MARKER_VERIFY_SEALED_LINES=92
MARKER_BACKUP_DELETE_PRESENT=YES
MARKER_BACKUP_DELETE_LINES=129,139
MARKER_LOCAL_CLEANUP_PRESENT=NO
MARKER_LOCAL_CLEANUP_LINES=NONE
MARKER_536870912_PRESENT=NO
MARKER_RUN_BACKUP_LINES=109,146,147
MARKER_VERIFY_GENERATION_LINES=87,120,129,141,148
MARKER_CLEANUP_VERIFY_LINES=95,106
MARKER_RECONSTRUCT_LINES=70,97,103
MARKER_SPLIT_LINES=NONE
MARKER_536870912_LINES=NONE
MARKER_HOMELAB_CLOUD_QUORUM_PAYLOAD_V1_PRESENT=NO
MARKER_HOMELAB_CLOUD_QUORUM_PAYLOAD_V1_LINES=NONE
DELETE_LIKE_LINE_COUNT=8
DELETE_LIKE_LINES=25,79,82,85,95,129,139,140
WRAPPER_UNIT_COUNT=1
WRAPPER_01_UNIT=homelab-control-backup.service
WRAPPER_01_PATH=/etc/systemd/system/homelab-control-backup.service
WRAPPER_01_SHA256=428d3e1f3042c3347b7c34b6f190e44fa35f7a97264eec3974239f581c9b9250
WRAPPER_01_SIZE=411
WRAPPER_01_ACTIVE=inactive
WRAPPER_01_ENABLED=static
STATIC_FIXED_PAIR_PRESENT=YES
STATIC_DYNAMIC_ALLOCATOR_PRESENT=NO
STATIC_512M_PART_MARKER_PRESENT=NO
STATIC_SEALED_VERIFY_GATE_PRESENT=YES
STATIC_DELETE_PATH_PRESENT=YES
STATIC_COMPATIBLE_WITH_DYNAMIC_2_OF_13=NO
MARKER_512M_LINES=NONE
MARKER_PART_LINES=71,72,73,74,78,79,80,81,82
UNIT_LINE_COUNT=16
UNIT_SKELETON_BEGIN
UNIT_LINE_001=[Unit]
UNIT_LINE_002=Description=Homelab recurring CONTROL cloud quorum backup
UNIT_LINE_003=After=network-online.target
UNIT_LINE_004=Wants=network-online.target
UNIT_LINE_005=ConditionPathExists=<LONG_TOKEN_REDACTED>
UNIT_LINE_006=ConditionPathExists=<LONG_TOKEN_REDACTED>
UNIT_LINE_007=
UNIT_LINE_008=[Service]
UNIT_LINE_009=Type=oneshot
UNIT_LINE_010=ExecStart=<LONG_TOKEN_REDACTED> run
UNIT_LINE_011=User=root
UNIT_LINE_012=Group=root
UNIT_LINE_013=UMask=0077
UNIT_LINE_014=Nice=10
UNIT_LINE_015=IOSchedulingClass=best-effort
UNIT_LINE_016=IOSchedulingPriority=7
UNIT_SKELETON_END
UNIT_REDACTED_LINE_COUNT=0
FILES_WRITTEN_BY_PAYLOAD=0
SYSTEMD_MUTATIONS_BY_254=0
STATIC254_READY_FOR_MINIMAL_PATCH_DESIGN=YES
STATIC254_END
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-STATIC-254R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
SYSTEMD_MUTATIONS_BY_255=0
LOGIC255_READY_FOR_MINIMAL_PATCH=YES
LOGIC255_END
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260912-INFRA-DR-BACKUPV2-CONTROL-BACKUP-LOGIC-255R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
OUTPUT_END
CHAT_OUTPUT_END