runtime: publish SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"channel": "homelab-runtime",
|
||||
"command_id": "SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1",
|
||||
"status": "OK",
|
||||
"rc": 0,
|
||||
"host": "pve01",
|
||||
"mode": "read-only",
|
||||
"component": "skladchik-initial-check-exact",
|
||||
"started_at_utc": "2026-09-23T11:44:08Z",
|
||||
"finished_at_utc": "2026-09-23T11:44:08Z",
|
||||
"reference_register_checked": true,
|
||||
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
||||
"error_register_checked": true,
|
||||
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
||||
"command_sha256": "f1424b1b27d05093234d6eaf8e39f0a668df672228a8274c26beb5cfcfc566ad",
|
||||
"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": "ef5ac06efdc32be639821d9ab748ee9c36ef6ceb7634456c3773cea788e8c13f",
|
||||
"sanitized_output_sha256": "fb6ad90461588b59a7587bc56c656335d449506c7bd36920b0c1376ac75052bb",
|
||||
"output_truncated_in_json": false,
|
||||
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
||||
"output": "SKLADCHIK938_BEGIN=true\nCOMMAND_ID=SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1\nMODE=read-only\nCOMPONENT=skladchik-initial-check-exact\nPREDECESSOR_937=PASS_SKLADCHIK_937_INITIAL_STATE_RCA\nMUTATION_BOUNDARY=NONE_READ_ONLY\nTOOL_SHA256=1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0\nTOOL_LINES=247\nEXACT_SOURCE_0001_0020_BEGIN\n0001:#!/usr/bin/env bash\n0002:set -Eeuo pipefail\n0003:umask 077\n0004:export SYSTEMD_PAGER=cat PAGER=cat SYSTEMD_LESS=FRXMK SYSTEMD_COLORS=0 GIT_PAGER=cat GIT_TERMINAL_PROMPT=0\n0005:\n0006:REPO=/srv/homelab-ops\n0007:TASK_ID=skladchik-reports-monitor-controlled-reauth-v1\n0008:TASK=\"$REPO/tasks/$TASK_ID\"\n0009:EDGE=debian@[PRIVATE_IP]\n0010:SSH=(-o BatchMode=yes -o ConnectTimeout=12 -o StrictHostKeyChecking=yes -o UserKnownHostsFile=[SENSITIVE_PATH]\n0011:LOCAL_STAGE=/mnt/staging/homelab-admin-rollback/$TASK_ID\n0012:EDGE_STAGE=/var/lib/homelab-admin/rollback/$TASK_ID\n0013:SEAL=/var/lib/homelab-admin/seals/$TASK_ID.json\n0014:RUN_ROOT=/var/lib/homelab-admin/runs/$TASK_ID\n0015:TMP=\"$(mktemp -d /tmp/skladchik-cookie-refresh.XXXXXX)\"\n0016:RECOVERY_TASK=\n0017:\n0018:STAGE=INITIALIZE\n0019:FAILED_STAGE=NONE\n0020:PRODUCTION_APPLY_STARTED=0\nEXACT_SOURCE_0001_0020_END\nEXACT_SOURCE_0150_0175_BEGIN\n0150: cleanup\n0151: exit \"$rc\"\n0152:}\n0153:trap 'on_error \"$?\"' ERR\n0154:trap cleanup EXIT\n0155:\n0156:STAGE=INITIAL_STATE_CHECK\n0157:test \"$(hostname -f)\" = pve01.gram1.ru\n0158:test \"$(git -C \"$REPO\" branch --show-current)\" = main\n0159:test \"$(git -C \"$REPO\" rev-parse HEAD)\" = \"$(git -C \"$REPO\" rev-parse origin/main)\"\n0160:test -z \"$(git -C \"$REPO\" status --porcelain)\"\n0161:test -z \"$(git -C /srv/homelab-desired-state status --porcelain)\"\n0162:test \"$(git -C \"$REPO\" remote get-url --push origin)\" = DISABLED\n0163:test -d \"$TASK\"\n0164:test -s \"$TASK/task.json\"\n0165:VM160_BEFORE=\"$(vm160_fingerprint)\"\n0166:KNOWN_HOSTS_BEFORE=\"$(sha256sum [SENSITIVE_PATH] | awk 'NR==1{print $1}')\"\n0167:\n0168:TARGET_EDGE_SHA=\"$(jq -r '.source_of_truth.edge_target_sha256' \"$TASK/task.json\")\"\n0169:test \"$TARGET_EDGE_SHA\" != null\n0170:test \"${#TARGET_EDGE_SHA}\" = 64\n0171:test \"$(sha256sum \"$TASK/assets/edge/skladchik-reports-monitor-cookie-update-edge\" | awk 'NR==1{print $1}')\" = \"$TARGET_EDGE_SHA\"\n0172:test \"$(ssh \"${SSH[@]}\" \"$EDGE\" sudo -n /usr/bin/sha256sum /usr/local/sbin/skladchik-reports-monitor-cookie-update-edge | awk 'NR==1{print $1}')\" = \"$TARGET_EDGE_SHA\"\n0173:\n0174:STAGE=VALIDATE\n0175:/opt/homelab-admin/bin/homelab-admin validate \"$TASK\"\nEXACT_SOURCE_0150_0175_END\nCURRENT_FACTS_BEGIN\nHOSTNAME_F=pve01.gram1.ru\nHOSTNAME_EXPECTED=pve01.gram1.ru\nHOSTNAME_MATCH=true\nREPO_RESOLVED_PRESENT=true\nREPO_EXISTS=true\nREPO_BRANCH=main\nREPO_BRANCH_MAIN=true\nREPO_HEAD=d5e2ef5639398a762283e47143c17b494f8ed579\nREPO_PORCELAIN_COUNT=0\nTASK_ID=skladchik-reports-monitor-controlled-reauth-v1\nTASK_RESOLVED_PRESENT=true\nTASK_EXISTS=true\nTASK_META=mode=755|size=4096|mtime=1784373912|dir=true\nSEAL_RESOLVED_PRESENT=true\nSEAL_EXISTS=true\nSEAL_META=mode=600|size=469|mtime=1784371982|dir=false\nLOCAL_STAGE_RESOLVED_PRESENT=true\nLOCAL_STAGE_EXISTS=false\nTARGET_EDGE_SHA_PRESENT=false\nKNOWN_HOSTS_PARSED=true\nKNOWN_HOSTS_EXISTS=true\nKNOWN_HOSTS_SHA256=ab01de61ca5030ad158f1aef377364100531473de1e10a529089174f6890d735\nEDGE_SHA_CHECK_RC=INPUT_UNRESOLVED\nINITIAL_TEST_LINES_BEGIN\nLINE_0157=test \"$(hostname -f)\" = pve01.gram1.ru\nLINE_0158=test \"$(git -C \"$REPO\" branch --show-current)\" = main\nLINE_0159=test \"$(git -C \"$REPO\" rev-parse HEAD)\" = \"$(git -C \"$REPO\" rev-parse origin/main)\"\nLINE_0160=test -z \"$(git -C \"$REPO\" status --porcelain)\"\nLINE_0161=test -z \"$(git -C /srv/homelab-desired-state status --porcelain)\"\nLINE_0162=test \"$(git -C \"$REPO\" remote get-url --push origin)\" = DISABLED\nLINE_0163=test -d \"$TASK\"\nLINE_0164=test -s \"$TASK/task.json\"\nLINE_0165=VM160_BEFORE=\"$(vm160_fingerprint)\"\nLINE_0166=KNOWN_HOSTS_BEFORE=\"$(sha256sum [SENSITIVE_PATH] | awk 'NR==1{print $1}')\"\nLINE_0168=TARGET_EDGE_SHA=\"$(jq -r '.source_of_truth.edge_target_sha256' \"$TASK/task.json\")\"\nLINE_0169=test \"$TARGET_EDGE_SHA\" != null\nLINE_0170=test \"${#TARGET_EDGE_SHA}\" = 64\nLINE_0171=test \"$(sha256sum \"$TASK/assets/edge/skladchik-reports-monitor-cookie-update-edge\" | awk 'NR==1{print $1}')\" = \"$TARGET_EDGE_SHA\"\nLINE_0172=test \"$(ssh \"${SSH[@]}\" \"$EDGE\" sudo -n /usr/bin/sha256sum /usr/local/sbin/skladchik-reports-monitor-cookie-update-edge | awk 'NR==1{print $1}')\" = \"$TARGET_EDGE_SHA\"\nINITIAL_TEST_LINES_END\nCHANGES_MADE_BY_938=false\nROLLBACK_STARTED=false\nROLLBACK_RESTORED=null\nHOMELAB_RESULT_CONTRACT={\"version\":1,\"command_id\":\"SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1\",\"status\":\"OK\",\"changes_made\":false,\"rollback_started\":false,\"rollback_restored\":null}\nSKLADCHIK938_END=true\n"
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
CHAT_OUTPUT_BEGIN
|
||||
COMMAND_ID=SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1
|
||||
STATUS=OK
|
||||
RC=0
|
||||
HOST=pve01
|
||||
MODE=read-only
|
||||
COMPONENT=skladchik-initial-check-exact
|
||||
REFERENCE_REGISTER_CHECK=OK
|
||||
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
|
||||
ERROR_REGISTER_CHECK=OK
|
||||
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
|
||||
COMMAND_SHA256=f1424b1b27d05093234d6eaf8e39f0a668df672228a8274c26beb5cfcfc566ad
|
||||
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=ef5ac06efdc32be639821d9ab748ee9c36ef6ceb7634456c3773cea788e8c13f
|
||||
SANITIZED_OUTPUT_SHA256=fb6ad90461588b59a7587bc56c656335d449506c7bd36920b0c1376ac75052bb
|
||||
OUTPUT_BEGIN
|
||||
SKLADCHIK938_BEGIN=true
|
||||
COMMAND_ID=SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1
|
||||
MODE=read-only
|
||||
COMPONENT=skladchik-initial-check-exact
|
||||
PREDECESSOR_937=PASS_SKLADCHIK_937_INITIAL_STATE_RCA
|
||||
MUTATION_BOUNDARY=NONE_READ_ONLY
|
||||
TOOL_SHA256=1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0
|
||||
TOOL_LINES=247
|
||||
EXACT_SOURCE_0001_0020_BEGIN
|
||||
0001:#!/usr/bin/env bash
|
||||
0002:set -Eeuo pipefail
|
||||
0003:umask 077
|
||||
0004:export SYSTEMD_PAGER=cat PAGER=cat SYSTEMD_LESS=FRXMK SYSTEMD_COLORS=0 GIT_PAGER=cat GIT_TERMINAL_PROMPT=0
|
||||
0005:
|
||||
0006:REPO=/srv/homelab-ops
|
||||
0007:TASK_ID=skladchik-reports-monitor-controlled-reauth-v1
|
||||
0008:TASK="$REPO/tasks/$TASK_ID"
|
||||
0009:EDGE=debian@[PRIVATE_IP]
|
||||
0010:SSH=(-o BatchMode=yes -o ConnectTimeout=12 -o StrictHostKeyChecking=yes -o UserKnownHostsFile=[SENSITIVE_PATH]
|
||||
0011:LOCAL_STAGE=/mnt/staging/homelab-admin-rollback/$TASK_ID
|
||||
0012:EDGE_STAGE=/var/lib/homelab-admin/rollback/$TASK_ID
|
||||
0013:SEAL=/var/lib/homelab-admin/seals/$TASK_ID.json
|
||||
0014:RUN_ROOT=/var/lib/homelab-admin/runs/$TASK_ID
|
||||
0015:TMP="$(mktemp -d /tmp/skladchik-cookie-refresh.XXXXXX)"
|
||||
0016:RECOVERY_TASK=
|
||||
0017:
|
||||
0018:STAGE=INITIALIZE
|
||||
0019:FAILED_STAGE=NONE
|
||||
0020:PRODUCTION_APPLY_STARTED=0
|
||||
EXACT_SOURCE_0001_0020_END
|
||||
EXACT_SOURCE_0150_0175_BEGIN
|
||||
0150: cleanup
|
||||
0151: exit "$rc"
|
||||
0152:}
|
||||
0153:trap 'on_error "$?"' ERR
|
||||
0154:trap cleanup EXIT
|
||||
0155:
|
||||
0156:STAGE=INITIAL_STATE_CHECK
|
||||
0157:test "$(hostname -f)" = pve01.gram1.ru
|
||||
0158:test "$(git -C "$REPO" branch --show-current)" = main
|
||||
0159:test "$(git -C "$REPO" rev-parse HEAD)" = "$(git -C "$REPO" rev-parse origin/main)"
|
||||
0160:test -z "$(git -C "$REPO" status --porcelain)"
|
||||
0161:test -z "$(git -C /srv/homelab-desired-state status --porcelain)"
|
||||
0162:test "$(git -C "$REPO" remote get-url --push origin)" = DISABLED
|
||||
0163:test -d "$TASK"
|
||||
0164:test -s "$TASK/task.json"
|
||||
0165:VM160_BEFORE="$(vm160_fingerprint)"
|
||||
0166:KNOWN_HOSTS_BEFORE="$(sha256sum [SENSITIVE_PATH] | awk 'NR==1{print $1}')"
|
||||
0167:
|
||||
0168:TARGET_EDGE_SHA="$(jq -r '.source_of_truth.edge_target_sha256' "$TASK/task.json")"
|
||||
0169:test "$TARGET_EDGE_SHA" != null
|
||||
0170:test "${#TARGET_EDGE_SHA}" = 64
|
||||
0171:test "$(sha256sum "$TASK/assets/edge/skladchik-reports-monitor-cookie-update-edge" | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
0172:test "$(ssh "${SSH[@]}" "$EDGE" sudo -n /usr/bin/sha256sum /usr/local/sbin/skladchik-reports-monitor-cookie-update-edge | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
0173:
|
||||
0174:STAGE=VALIDATE
|
||||
0175:/opt/homelab-admin/bin/homelab-admin validate "$TASK"
|
||||
EXACT_SOURCE_0150_0175_END
|
||||
CURRENT_FACTS_BEGIN
|
||||
HOSTNAME_F=pve01.gram1.ru
|
||||
HOSTNAME_EXPECTED=pve01.gram1.ru
|
||||
HOSTNAME_MATCH=true
|
||||
REPO_RESOLVED_PRESENT=true
|
||||
REPO_EXISTS=true
|
||||
REPO_BRANCH=main
|
||||
REPO_BRANCH_MAIN=true
|
||||
REPO_HEAD=d5e2ef5639398a762283e47143c17b494f8ed579
|
||||
REPO_PORCELAIN_COUNT=0
|
||||
TASK_ID=skladchik-reports-monitor-controlled-reauth-v1
|
||||
TASK_RESOLVED_PRESENT=true
|
||||
TASK_EXISTS=true
|
||||
TASK_META=mode=755|size=4096|mtime=1784373912|dir=true
|
||||
SEAL_RESOLVED_PRESENT=true
|
||||
SEAL_EXISTS=true
|
||||
SEAL_META=mode=600|size=469|mtime=1784371982|dir=false
|
||||
LOCAL_STAGE_RESOLVED_PRESENT=true
|
||||
LOCAL_STAGE_EXISTS=false
|
||||
TARGET_EDGE_SHA_PRESENT=false
|
||||
KNOWN_HOSTS_PARSED=true
|
||||
KNOWN_HOSTS_EXISTS=true
|
||||
KNOWN_HOSTS_SHA256=ab01de61ca5030ad158f1aef377364100531473de1e10a529089174f6890d735
|
||||
EDGE_SHA_CHECK_RC=INPUT_UNRESOLVED
|
||||
INITIAL_TEST_LINES_BEGIN
|
||||
LINE_0157=test "$(hostname -f)" = pve01.gram1.ru
|
||||
LINE_0158=test "$(git -C "$REPO" branch --show-current)" = main
|
||||
LINE_0159=test "$(git -C "$REPO" rev-parse HEAD)" = "$(git -C "$REPO" rev-parse origin/main)"
|
||||
LINE_0160=test -z "$(git -C "$REPO" status --porcelain)"
|
||||
LINE_0161=test -z "$(git -C /srv/homelab-desired-state status --porcelain)"
|
||||
LINE_0162=test "$(git -C "$REPO" remote get-url --push origin)" = DISABLED
|
||||
LINE_0163=test -d "$TASK"
|
||||
LINE_0164=test -s "$TASK/task.json"
|
||||
LINE_0165=VM160_BEFORE="$(vm160_fingerprint)"
|
||||
LINE_0166=KNOWN_HOSTS_BEFORE="$(sha256sum [SENSITIVE_PATH] | awk 'NR==1{print $1}')"
|
||||
LINE_0168=TARGET_EDGE_SHA="$(jq -r '.source_of_truth.edge_target_sha256' "$TASK/task.json")"
|
||||
LINE_0169=test "$TARGET_EDGE_SHA" != null
|
||||
LINE_0170=test "${#TARGET_EDGE_SHA}" = 64
|
||||
LINE_0171=test "$(sha256sum "$TASK/assets/edge/skladchik-reports-monitor-cookie-update-edge" | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
LINE_0172=test "$(ssh "${SSH[@]}" "$EDGE" sudo -n /usr/bin/sha256sum /usr/local/sbin/skladchik-reports-monitor-cookie-update-edge | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
INITIAL_TEST_LINES_END
|
||||
CHANGES_MADE_BY_938=false
|
||||
ROLLBACK_STARTED=false
|
||||
ROLLBACK_RESTORED=null
|
||||
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
|
||||
SKLADCHIK938_END=true
|
||||
|
||||
OUTPUT_END
|
||||
CHAT_OUTPUT_END
|
||||
+8
-8
File diff suppressed because one or more lines are too long
+84
-508
@@ -1,15 +1,15 @@
|
||||
CHAT_OUTPUT_BEGIN
|
||||
COMMAND_ID=SUPPORT-260923-SKLADCHIK-INITIAL-STATE-RCA-DIRECT-937R1
|
||||
COMMAND_ID=SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1
|
||||
STATUS=OK
|
||||
RC=0
|
||||
HOST=pve01
|
||||
MODE=read-only
|
||||
COMPONENT=skladchik-initial-state-rca-direct
|
||||
COMPONENT=skladchik-initial-check-exact
|
||||
REFERENCE_REGISTER_CHECK=OK
|
||||
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
|
||||
ERROR_REGISTER_CHECK=OK
|
||||
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
|
||||
COMMAND_SHA256=bf35331c2add5c5112a6995a42b388ec953917f5fa7335b04fc8a6158d3b2fe6
|
||||
COMMAND_SHA256=f1424b1b27d05093234d6eaf8e39f0a668df672228a8274c26beb5cfcfc566ad
|
||||
DUPLICATE_FAILED_COMMAND_BLOCKED=false
|
||||
EXECUTION_STARTED=true
|
||||
CHANGE_DECLARED=false
|
||||
@@ -24,20 +24,26 @@ MUTATION_OUTCOME=NO_MUTATION
|
||||
SANITIZED=yes
|
||||
SECRETS_INCLUDED=no
|
||||
PRIVATE_ADDRESSES_INCLUDED=no
|
||||
RAW_EVIDENCE_SHA256=59f8028a5d7b32d9e550476fa69d38389818df6fbeb863aa5807f5645a5e483f
|
||||
SANITIZED_OUTPUT_SHA256=0672428d56b5f840af985faa9595e0fe2ec75c6b9f8d3963ab2a67fcfb3df01b
|
||||
RAW_EVIDENCE_SHA256=ef5ac06efdc32be639821d9ab748ee9c36ef6ceb7634456c3773cea788e8c13f
|
||||
SANITIZED_OUTPUT_SHA256=fb6ad90461588b59a7587bc56c656335d449506c7bd36920b0c1376ac75052bb
|
||||
OUTPUT_BEGIN
|
||||
SKLADCHIK937_BEGIN=true
|
||||
COMMAND_ID=SUPPORT-260923-SKLADCHIK-INITIAL-STATE-RCA-DIRECT-937R1
|
||||
SKLADCHIK938_BEGIN=true
|
||||
COMMAND_ID=SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1
|
||||
MODE=read-only
|
||||
COMPONENT=skladchik-initial-state-rca-direct
|
||||
PREDECESSOR_935=FAILED_STAGE_INITIAL_STATE_CHECK
|
||||
PREDECESSOR_936=LOCAL_404_NO_RUNNER
|
||||
COMPONENT=skladchik-initial-check-exact
|
||||
PREDECESSOR_937=PASS_SKLADCHIK_937_INITIAL_STATE_RCA
|
||||
MUTATION_BOUNDARY=NONE_READ_ONLY
|
||||
TOOL_PRESENT=true
|
||||
TOOL_SHA256=1e2f5323abf880f3e8b17bf1f2d0a844c402a9bbf5f24159ed39aaf1d79caef0
|
||||
TOOL_LINES=247
|
||||
SOURCE_CONTEXT_BEGIN
|
||||
EXACT_SOURCE_0001_0020_BEGIN
|
||||
0001:#!/usr/bin/env bash
|
||||
0002:set -Eeuo pipefail
|
||||
0003:umask 077
|
||||
0004:export SYSTEMD_PAGER=cat PAGER=cat SYSTEMD_LESS=FRXMK SYSTEMD_COLORS=0 GIT_PAGER=cat GIT_TERMINAL_PROMPT=0
|
||||
0005:
|
||||
0006:REPO=/srv/homelab-ops
|
||||
0007:TASK_ID=skladchik-reports-monitor-controlled-reauth-v1
|
||||
0008:TASK="$REPO/tasks/$TASK_ID"
|
||||
0009:EDGE=debian@[PRIVATE_IP]
|
||||
0010:SSH=(-o BatchMode=yes -o ConnectTimeout=12 -o StrictHostKeyChecking=yes -o UserKnownHostsFile=[SENSITIVE_PATH]
|
||||
0011:LOCAL_STAGE=/mnt/staging/homelab-admin-rollback/$TASK_ID
|
||||
@@ -50,511 +56,81 @@ SOURCE_CONTEXT_BEGIN
|
||||
0018:STAGE=INITIALIZE
|
||||
0019:FAILED_STAGE=NONE
|
||||
0020:PRODUCTION_APPLY_STARTED=0
|
||||
0021:SEALED=0
|
||||
0022:ROLLBACK_ATTEMPTED=NO
|
||||
0023:ROLLBACK_RC=NOT_RUN
|
||||
0024:APPLY_RUN=unknown
|
||||
0025:BACKUP_WAIT_EVENTS=0
|
||||
0026:
|
||||
0027:printf 'SCOPE=SKLADCHIK_COOKIE_REFRESH_VALIDATE_PREFLIGHT_PREPARE_DRY_RUN_HIDDEN_COOKIE_APPLY_VERIFY_SEAL\n'
|
||||
0028:printf 'ROLLBACK=AUTOMATIC_VERSIONED_RECOVERY_WORKFLOW_RESTORES_PREVIOUS_SECRET_COOKIE_JAR_SCRIPTS_DESIRED_STATE_TIMER_AND_SUPERVISOR_STATE_ON_FAILURE_BEFORE_SEAL\n'
|
||||
0029:printf 'VERIFY=FRESH_COOKIE_FORCED_STALE_JAR_BYPASSED_SECOND_JAR_ONLY_PROBE_MONITOR_OK_NUMERIC_COUNTS_TARGET_EDGE_SHA_TIMERS_SUPERVISOR_SEAL_STAGE_REMOVAL_VM160_UNCHANGED_NO_CLOUD_COMMANDS\n'
|
||||
0030:
|
||||
0031:cleanup() {
|
||||
0036:}
|
||||
0037:
|
||||
0038:active_backup_restore_count() {
|
||||
0039: systemctl list-units --type=service --state=activating,active,running --no-legend --plain 2>/dev/null |
|
||||
0040: awk 'tolower($0)~/backup|restore/ && NF{c++}END{print c+0}'
|
||||
0041:}
|
||||
0042:
|
||||
0043:wait_backup_restore_clear() {
|
||||
0044: local deadline=$((SECONDS + 1800))
|
||||
0045: local stable=0
|
||||
0046: local count=0
|
||||
0047: while (( SECONDS < deadline )); do
|
||||
0048: count="$(active_backup_restore_count)"
|
||||
0049: if [[ "$count" -eq 0 ]]; then
|
||||
0050: stable=$((stable + 1))
|
||||
0054: sleep 1
|
||||
0055: else
|
||||
0056: BACKUP_WAIT_EVENTS=$((BACKUP_WAIT_EVENTS + 1))
|
||||
0057: stable=0
|
||||
0058: sleep 5
|
||||
0059: fi
|
||||
0060: done
|
||||
0061: printf 'BACKUP_RESTORE_GUARD_TIMEOUT count=%s\n' "$count" >&2
|
||||
0062: return 75
|
||||
0063:}
|
||||
0065:run_phase() {
|
||||
0066: local phase="$1"
|
||||
0067: wait_backup_restore_clear
|
||||
0068: /opt/homelab-admin/bin/homelab-admin run "$TASK" "$phase"
|
||||
0069:}
|
||||
0070:
|
||||
0071:run_apply() {
|
||||
0072: wait_backup_restore_clear
|
||||
0073: HOMELAB_CONTROLLED_APPLY_CONFIRM="$TASK_ID" /opt/homelab-admin/bin/homelab-admin run "$TASK" apply
|
||||
0074:}
|
||||
0102: print "git -C /srv/homelab-desired-state clean -fd -- sbin/skladchik-reports-monitor-cookie-update sbin/skladchik-reports-monitor-monthly-selftest-watch sbin/skladchik-reports-monitor-status sbin/skladchik-reports-monitor-supervisor"
|
||||
0103: }
|
||||
0104: ' "$RECOVERY_TASK/phases/rollback.sh" >"$RECOVERY_TASK/phases/rollback.sh.new"
|
||||
0105: mv "$RECOVERY_TASK/phases/rollback.sh.new" "$RECOVERY_TASK/phases/rollback.sh"
|
||||
0106: chmod 0755 "$RECOVERY_TASK/phases/rollback.sh"
|
||||
0107:
|
||||
0108: test "$(grep -Fxc 'git -C /srv/homelab-desired-state clean -fd -- sbin/skladchik-reports-monitor-cookie-update sbin/skladchik-reports-monitor-monthly-selftest-watch sbin/skladchik-reports-monitor-status sbin/skladchik-reports-monitor-supervisor' "$RECOVERY_TASK/phases/rollback.sh")" = 1
|
||||
0109: bash -n "$RECOVERY_TASK/phases/rollback.sh"
|
||||
0110: /opt/homelab-admin/bin/homelab-admin lint "$RECOVERY_TASK"
|
||||
0111: /opt/homelab-admin/bin/homelab-admin validate "$RECOVERY_TASK"
|
||||
0115: local rc="$1"
|
||||
0116: printf '\033[1;35m%s\n' '===== СКОПИРОВАТЬ МНЕ В ЧАТ ====='
|
||||
0117: printf 'COOKIE_REFRESH_RESULT=FAILED\nFAILED_STAGE=%s\nFAILED_RC=%s\n' "$FAILED_STAGE" "$rc"
|
||||
0118: printf 'ROLLBACK_ATTEMPTED=%s\nROLLBACK_RC=%s\nSEALED=%s\n' "$ROLLBACK_ATTEMPTED" "$ROLLBACK_RC" "$SEALED"
|
||||
0119: printf 'BACKUP_WAIT_EVENTS=%s\nACTIVE_BACKUP_RESTORE_NOW=%s\n' "$BACKUP_WAIT_EVENTS" "$(active_backup_restore_count)"
|
||||
0120: printf 'APPLY_RUN=%s\nCOOKIE_VALUES_PRINTED=NO\nVM160_CHANGED=NO\nCLOUD_COMMANDS_EXECUTED=NO\n' "$APPLY_RUN"
|
||||
0121: printf 'NEXT_PHASE=PASTE_THIS_FRAGMENT_ONLY\n'
|
||||
0127: trap - ERR
|
||||
0128: set +e
|
||||
0129: FAILED_STAGE="$STAGE"
|
||||
0130:
|
||||
0131: if [[ -s "$SEAL" && ! -e "$LOCAL_STAGE" ]]; then
|
||||
0132: if ssh "${SSH[@]}" "$EDGE" sudo -n /usr/bin/test ! -e "$EDGE_STAGE"; then
|
||||
0133: SEALED=1
|
||||
0134: fi
|
||||
0135: fi
|
||||
0136:
|
||||
0137: if [[ "$SEALED" -eq 0 && -d "$LOCAL_STAGE" ]]; then
|
||||
0138: STAGE=AUTOMATIC_RECOVERY
|
||||
0139: ROLLBACK_ATTEMPTED=YES
|
||||
0140: build_recovery_task
|
||||
0141: if wait_backup_restore_clear; then
|
||||
0142: HOMELAB_CONTROLLED_APPLY_CONFIRM="$TASK_ID" /opt/homelab-admin/bin/homelab-admin run "$RECOVERY_TASK" rollback
|
||||
0143: ROLLBACK_RC=$?
|
||||
0144: else
|
||||
0145: ROLLBACK_RC=75
|
||||
0146: fi
|
||||
0147: fi
|
||||
EXACT_SOURCE_0001_0020_END
|
||||
EXACT_SOURCE_0150_0175_BEGIN
|
||||
0150: cleanup
|
||||
0151: exit "$rc"
|
||||
0152:}
|
||||
0153:trap 'on_error "$?"' ERR
|
||||
0154:trap cleanup EXIT
|
||||
0155:
|
||||
0156:STAGE=INITIAL_STATE_CHECK
|
||||
0157:test "$(hostname -f)" = pve01.gram1.ru
|
||||
0158:test "$(git -C "$REPO" branch --show-current)" = main
|
||||
0159:test "$(git -C "$REPO" rev-parse HEAD)" = "$(git -C "$REPO" rev-parse origin/main)"
|
||||
0160:test -z "$(git -C "$REPO" status --porcelain)"
|
||||
0161:test -z "$(git -C /srv/homelab-desired-state status --porcelain)"
|
||||
0162:test "$(git -C "$REPO" remote get-url --push origin)" = DISABLED
|
||||
0163:test -d "$TASK"
|
||||
0164:test -s "$TASK/task.json"
|
||||
0165:VM160_BEFORE="$(vm160_fingerprint)"
|
||||
0166:KNOWN_HOSTS_BEFORE="$(sha256sum [SENSITIVE_PATH] | awk 'NR==1{print $1}')"
|
||||
0167:
|
||||
0168:TARGET_EDGE_SHA="$(jq -r '.source_of_truth.edge_target_sha256' "$TASK/task.json")"
|
||||
0169:test "$TARGET_EDGE_SHA" != null
|
||||
0170:test "${#TARGET_EDGE_SHA}" = 64
|
||||
0171:test "$(sha256sum "$TASK/assets/edge/skladchik-reports-monitor-cookie-update-edge" | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
0172:test "$(ssh "${SSH[@]}" "$EDGE" sudo -n /usr/bin/sha256sum /usr/local/sbin/skladchik-reports-monitor-cookie-update-edge | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
0173:
|
||||
0174:STAGE=VALIDATE
|
||||
0175:/opt/homelab-admin/bin/homelab-admin validate "$TASK"
|
||||
0176:
|
||||
0177:STAGE=PREFLIGHT
|
||||
0178:run_phase preflight
|
||||
0179:
|
||||
0180:STAGE=PREPARE
|
||||
0181:run_phase prepare
|
||||
0182:
|
||||
0183:STAGE=DRY_RUN
|
||||
0184:run_phase dry-run
|
||||
0185:
|
||||
0186:STAGE=INTERACTIVE_APPLY
|
||||
0187:printf '\n\033[1;33mВСТАВЬ ПОЛНЫЙ COOKIE ИЗ REQUEST HEADERS ЗАПРОСА К https://az52.skladchik.org/reports/ БЕЗ СЛОВА Cookie: И НАЖМИ ENTER. ВВОД СКРЫТ.\033[0m\n\n'
|
||||
0188:PRODUCTION_APPLY_STARTED=1
|
||||
0195:grep -Fq 'SECOND_JAR_ONLY_PERSISTENCE_RUN=OK' "$APPLY_RUN/stdout.log"
|
||||
0196:
|
||||
0197:STAGE=VERIFY
|
||||
0198:run_phase verify
|
||||
0199:
|
||||
0200:STAGE=SEAL
|
||||
0201:run_phase seal
|
||||
0202:SEALED=1
|
||||
0203:
|
||||
0204:STAGE=FINAL_INDEPENDENT_VERIFY
|
||||
0205:test -s "$SEAL"
|
||||
0206:test ! -e "$LOCAL_STAGE"
|
||||
0207:ssh "${SSH[@]}" "$EDGE" sudo -n /usr/bin/test ! -e "$EDGE_STAGE"
|
||||
0208:test "$(sha256sum [SENSITIVE_PATH] | awk 'NR==1{print $1}')" = "$KNOWN_HOSTS_BEFORE"
|
||||
0209:test "$(ssh "${SSH[@]}" "$EDGE" sudo -n /usr/bin/sha256sum /usr/local/sbin/skladchik-reports-monitor-cookie-update-edge | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
0235:test "$(vm160_fingerprint)" = "$VM160_BEFORE"
|
||||
0236:
|
||||
0237:STAGE=SUCCESS
|
||||
0238:printf '\033[1;35m%s\n' '===== СКОПИРОВАТЬ МНЕ В ЧАТ ====='
|
||||
0239:printf 'COOKIE_REFRESH_RESULT=SUCCESS\nTASK_ID=%s\n' "$TASK_ID"
|
||||
0242:printf 'SESSION_KEEPALIVE=%s\nCOOKIE_JAR=%s\nEDGE_SCRIPT_SHA256=%s\n' "$SESSION_KEEPALIVE" "$COOKIE_JAR" "$TARGET_EDGE_SHA"
|
||||
0243:printf 'EDGE_TIMER_ENABLED=YES\nEDGE_TIMER_ACTIVE=YES\nSUPERVISOR_TIMER_ENABLED=YES\nSUPERVISOR_TIMER_ACTIVE=YES\n'
|
||||
0244:printf 'SEAL_PRESENT=YES\nROLLBACK_STAGES_REMOVED=YES\nDESIRED_STATE_CLEAN=YES\nKNOWN_HOSTS_CHANGED=NO\n'
|
||||
0245:printf 'BACKUP_WAIT_EVENTS=%s\nCOOKIE_VALUES_PRINTED=NO\nVM160_CHANGED=NO\nCLOUD_COMMANDS_EXECUTED=NO\n'
|
||||
0246:printf 'NEXT_REFRESH_COMMAND=/srv/homelab-ops/tools/skladchik-cookie-refresh\n'
|
||||
0247:printf '%s\033[0m\n' '===== КОНЕЦ ФРАГМЕНТА ====='
|
||||
SOURCE_CONTEXT_END
|
||||
STATE_OBJECTS_BEGIN
|
||||
OBJ|file=true|size=64|mtime=1786578911|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235443Z-1365154-dry-run/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786578911|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235443Z-1365154-dry-run
|
||||
OBJ|file=true|size=610|mtime=1786578911|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235443Z-1365154-dry-run/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786578974|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235614Z-1377744-preflight/task.json
|
||||
OBJ|file=true|size=0|mtime=1786578974|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235614Z-1377744-preflight/stderr.log
|
||||
OBJ|file=true|size=195|mtime=1786578987|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235614Z-1377744-preflight/preflight.json
|
||||
OBJ|file=true|size=72|mtime=1786578987|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235614Z-1377744-preflight/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786578987|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235614Z-1377744-preflight
|
||||
OBJ|file=true|size=618|mtime=1786578987|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235614Z-1377744-preflight/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786578988|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235628Z-1378111-prepare/task.json
|
||||
OBJ|file=true|size=0|mtime=1786578988|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235628Z-1378111-prepare/stderr.log
|
||||
OBJ|file=true|size=103|mtime=1786579001|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235628Z-1378111-prepare/prepare.json
|
||||
OBJ|file=true|size=59|mtime=1786579001|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235628Z-1378111-prepare/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786579001|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235628Z-1378111-prepare
|
||||
OBJ|file=true|size=610|mtime=1786579001|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235628Z-1378111-prepare/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786579002|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235642Z-1378356-dry-run/task.json
|
||||
OBJ|file=true|size=0|mtime=1786579002|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235642Z-1378356-dry-run/stderr.log
|
||||
OBJ|file=true|size=192|mtime=1786579029|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235642Z-1378356-dry-run/dry-run.json
|
||||
OBJ|file=true|size=64|mtime=1786579029|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235642Z-1378356-dry-run/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786579029|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235642Z-1378356-dry-run
|
||||
OBJ|file=true|size=610|mtime=1786579029|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235642Z-1378356-dry-run/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786579099|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235819Z-1379947-preflight/task.json
|
||||
OBJ|file=true|size=0|mtime=1786579099|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235819Z-1379947-preflight/stderr.log
|
||||
OBJ|file=true|size=195|mtime=1786579113|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235819Z-1379947-preflight/preflight.json
|
||||
OBJ|file=true|size=72|mtime=1786579113|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235819Z-1379947-preflight/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786579113|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235819Z-1379947-preflight
|
||||
OBJ|file=true|size=618|mtime=1786579113|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235819Z-1379947-preflight/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786579113|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235833Z-1380290-prepare/task.json
|
||||
OBJ|file=true|size=0|mtime=1786579113|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235833Z-1380290-prepare/stderr.log
|
||||
OBJ|file=true|size=103|mtime=1786579127|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235833Z-1380290-prepare/prepare.json
|
||||
OBJ|file=true|size=59|mtime=1786579127|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235833Z-1380290-prepare/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786579127|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235833Z-1380290-prepare
|
||||
OBJ|file=true|size=610|mtime=1786579127|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235833Z-1380290-prepare/result.json
|
||||
OBJ|file=true|size=0|mtime=1786579127|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235847Z-1380510-dry-run/stderr.log
|
||||
OBJ|file=true|size=8118|mtime=1786579127|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235847Z-1380510-dry-run/task.json
|
||||
OBJ|file=true|size=192|mtime=1786579155|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235847Z-1380510-dry-run/dry-run.json
|
||||
OBJ|file=true|size=64|mtime=1786579155|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235847Z-1380510-dry-run/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786579155|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235847Z-1380510-dry-run
|
||||
OBJ|file=true|size=610|mtime=1786579155|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260812T235847Z-1380510-dry-run/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786579211|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000011Z-1381691-apply/task.json
|
||||
OBJ|file=true|size=91|mtime=1786579241|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000011Z-1381691-apply/stderr.log
|
||||
OBJ|file=true|size=622|mtime=1786579265|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000011Z-1381691-apply/apply.json
|
||||
OBJ|file=true|size=97|mtime=1786579265|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000011Z-1381691-apply/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786579265|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000011Z-1381691-apply
|
||||
OBJ|file=true|size=602|mtime=1786579265|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000011Z-1381691-apply/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786579770|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000930Z-1418323-verify/task.json
|
||||
OBJ|file=true|size=0|mtime=1786579770|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000930Z-1418323-verify/stderr.log
|
||||
OBJ|file=true|size=64|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000930Z-1418323-verify/stdout.log
|
||||
OBJ|file=true|size=670|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000930Z-1418323-verify/verify.json
|
||||
OBJ|file=false|size=4096|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000930Z-1418323-verify
|
||||
OBJ|file=true|size=606|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T000930Z-1418323-verify/result.json
|
||||
OBJ|file=true|size=0|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T001000Z-1418769-seal/stdout.log
|
||||
OBJ|file=true|size=8118|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T001000Z-1418769-seal/task.json
|
||||
OBJ|file=true|size=867|mtime=1786579800|path=/var/lib/homelab-admin/seals/skladchik-moderator-v2-ru-dark-competitor-retirement-v1.json
|
||||
OBJ|file=true|size=140|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T001000Z-1418769-seal/stderr.log
|
||||
OBJ|file=false|size=4096|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T001000Z-1418769-seal
|
||||
OBJ|file=true|size=602|mtime=1786579800|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T001000Z-1418769-seal/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786580402|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002002Z-1456883-verify/task.json
|
||||
OBJ|file=true|size=0|mtime=1786580402|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002002Z-1456883-verify/stderr.log
|
||||
OBJ|file=true|size=670|mtime=1786580432|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002002Z-1456883-verify/verify.json
|
||||
OBJ|file=true|size=64|mtime=1786580432|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002002Z-1456883-verify/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786580432|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002002Z-1456883-verify
|
||||
OBJ|file=true|size=606|mtime=1786580432|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002002Z-1456883-verify/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786580432|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002032Z-1457381-seal/task.json
|
||||
OBJ|file=true|size=0|mtime=1786580432|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002032Z-1457381-seal/stderr.log
|
||||
OBJ|file=true|size=166|mtime=1786580433|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002032Z-1457381-seal/seal.json
|
||||
OBJ|file=true|size=111|mtime=1786580433|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002032Z-1457381-seal/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786580433|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002032Z-1457381-seal
|
||||
OBJ|file=true|size=598|mtime=1786580433|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002032Z-1457381-seal/result.json
|
||||
OBJ|file=true|size=8118|mtime=1786580611|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002331Z-1471437-verify/task.json
|
||||
OBJ|file=true|size=0|mtime=1786580611|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002331Z-1471437-verify/stderr.log
|
||||
OBJ|file=true|size=64|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002331Z-1471437-verify/stdout.log
|
||||
OBJ|file=true|size=670|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002331Z-1471437-verify/verify.json
|
||||
OBJ|file=false|size=4096|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002331Z-1471437-verify
|
||||
OBJ|file=true|size=606|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002331Z-1471437-verify/result.json
|
||||
OBJ|file=false|size=4096|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1
|
||||
OBJ|file=true|size=8118|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/task.json
|
||||
OBJ|file=true|size=0|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/stderr.log
|
||||
OBJ|file=true|size=166|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/seal.json
|
||||
OBJ|file=true|size=111|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal
|
||||
OBJ|file=true|size=598|mtime=1786580641|path=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/result.json
|
||||
OBJ|file=true|size=8047|mtime=1786729312|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/task.json
|
||||
OBJ|file=true|size=0|mtime=1786729312|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/stderr.log
|
||||
OBJ|file=true|size=452|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/preflight.json
|
||||
OBJ|file=true|size=411|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight
|
||||
OBJ|file=true|size=615|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/result.json
|
||||
OBJ|file=true|size=8047|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/task.json
|
||||
OBJ|file=true|size=0|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/stderr.log
|
||||
OBJ|file=true|size=287|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/prepare.json
|
||||
OBJ|file=true|size=711|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare
|
||||
OBJ|file=true|size=607|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/result.json
|
||||
OBJ|file=true|size=8047|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/task.json
|
||||
OBJ|file=true|size=0|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/stderr.log
|
||||
OBJ|file=true|size=316|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/dry-run.json
|
||||
OBJ|file=true|size=466|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run
|
||||
OBJ|file=true|size=607|mtime=1786729313|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/result.json
|
||||
OBJ|file=true|size=0|mtime=1786729896|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/stderr.log
|
||||
OBJ|file=true|size=8047|mtime=1786729896|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/task.json
|
||||
OBJ|file=true|size=405|mtime=1786729898|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/apply.json
|
||||
OBJ|file=true|size=725|mtime=1786729898|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786729898|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply
|
||||
OBJ|file=true|size=599|mtime=1786729898|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/result.json
|
||||
OBJ|file=true|size=8047|mtime=1786729979|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/task.json
|
||||
OBJ|file=true|size=0|mtime=1786729979|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/stderr.log
|
||||
OBJ|file=true|size=522|mtime=1786729979|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/stdout.log
|
||||
OBJ|file=true|size=391|mtime=1786729979|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/verify.json
|
||||
OBJ|file=false|size=4096|mtime=1786729979|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify
|
||||
OBJ|file=true|size=603|mtime=1786729979|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/result.json
|
||||
OBJ|file=false|size=4096|mtime=1786729980|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1
|
||||
OBJ|file=true|size=8047|mtime=1786729980|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/task.json
|
||||
OBJ|file=true|size=0|mtime=1786729980|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/stderr.log
|
||||
OBJ|file=true|size=829|mtime=1786729980|path=/var/lib/homelab-admin/seals/skladchik-reports-monitor-cookie-persistence-hotfix-v1.json
|
||||
OBJ|file=true|size=386|mtime=1786729980|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/seal.json
|
||||
OBJ|file=true|size=663|mtime=1786729980|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/stdout.log
|
||||
OBJ|file=false|size=4096|mtime=1786729980|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal
|
||||
OBJ|file=true|size=595|mtime=1786729980|path=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/result.json
|
||||
STATE_OBJECTS_END
|
||||
SAFE_STATE_CONTENT_BEGIN
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/result.json
|
||||
"run_id": "20260813T002401Z-1471844-seal",
|
||||
"task_id": "skladchik-moderator-v2-ru-dark-competitor-retirement-v1",
|
||||
"status": "OK",
|
||||
"stdout": "/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/stdout.log",
|
||||
"stderr": "/var/lib/homelab-admin/runs/skladchik-moderator-v2-ru-dark-competitor-retirement-v1/20260813T002401Z-1471844-seal/stderr.log"
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/task.json
|
||||
"active_backup_restore_max": 0
|
||||
"$HOMELAB_RUN_DIR/preflight.json",
|
||||
"$HOMELAB_RUN_DIR/prepare.json",
|
||||
"$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"$HOMELAB_RUN_DIR/apply.json",
|
||||
"$HOMELAB_RUN_DIR/verify.json",
|
||||
"$HOMELAB_RUN_DIR/rollback.json",
|
||||
"$HOMELAB_RUN_DIR/seal.json"
|
||||
"path": "$HOMELAB_RUN_DIR/preflight.json",
|
||||
"verification": "CR0072 is sealed; exact live monitor, service, timer and residue drop-in preimages are pinned; monthly reauth asset is unchanged."
|
||||
"path": "$HOMELAB_RUN_DIR/prepare.json",
|
||||
"path": "$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"producer": "phases/dry-run.sh",
|
||||
"path": "$HOMELAB_RUN_DIR/apply.json",
|
||||
"path": "$HOMELAB_RUN_DIR/verify.json",
|
||||
"path": "$HOMELAB_RUN_DIR/rollback.json",
|
||||
"path": "$HOMELAB_RUN_DIR/seal.json",
|
||||
"verification": "canonical seal is atomically created or exact-existing seal is validated/reused; edge rollback snapshot cleanup is idempotent."
|
||||
"runtime_matrix": [
|
||||
"runtime": "bash,jq,git,systemd,ssh,scp,python3,gzip",
|
||||
"runtime": "bash,python3,systemd,sha256sum,awk",
|
||||
"rollback_refuses_sealed": true,
|
||||
"dry-run": "phases/dry-run.sh",
|
||||
"assets/edge-dry-run.sh",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/preflight.json
|
||||
"status": "OK",
|
||||
"cr0072_sealed": true,
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/stdout.log
|
||||
EDGE_PREFLIGHT_STATUS=OK
|
||||
PREFLIGHT_STATUS=OK
|
||||
CR0072_SEALED=YES
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174152Z-1957071-preflight/result.json
|
||||
"run_id": "20260814T174152Z-1957071-preflight",
|
||||
"status": "OK",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/task.json
|
||||
"active_backup_restore_max": 0
|
||||
"$HOMELAB_RUN_DIR/preflight.json",
|
||||
"$HOMELAB_RUN_DIR/prepare.json",
|
||||
"$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"$HOMELAB_RUN_DIR/apply.json",
|
||||
"$HOMELAB_RUN_DIR/verify.json",
|
||||
"$HOMELAB_RUN_DIR/rollback.json",
|
||||
"$HOMELAB_RUN_DIR/seal.json"
|
||||
"path": "$HOMELAB_RUN_DIR/preflight.json",
|
||||
"verification": "CR0072 is sealed; exact live monitor, service, timer and residue drop-in preimages are pinned; monthly reauth asset is unchanged."
|
||||
"path": "$HOMELAB_RUN_DIR/prepare.json",
|
||||
"path": "$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"producer": "phases/dry-run.sh",
|
||||
"path": "$HOMELAB_RUN_DIR/apply.json",
|
||||
"path": "$HOMELAB_RUN_DIR/verify.json",
|
||||
"path": "$HOMELAB_RUN_DIR/rollback.json",
|
||||
"path": "$HOMELAB_RUN_DIR/seal.json",
|
||||
"verification": "canonical seal is atomically created or exact-existing seal is validated/reused; edge rollback snapshot cleanup is idempotent."
|
||||
"runtime_matrix": [
|
||||
"runtime": "bash,jq,git,systemd,ssh,scp,python3,gzip",
|
||||
"runtime": "bash,python3,systemd,sha256sum,awk",
|
||||
"rollback_refuses_sealed": true,
|
||||
"dry-run": "phases/dry-run.sh",
|
||||
"assets/edge-dry-run.sh",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/prepare.json
|
||||
"status": "OK",
|
||||
"rollback_stage_reused": false,
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/stdout.log
|
||||
.task-id: OK
|
||||
.task-id: OK
|
||||
EDGE_PREPARE_STATUS=OK
|
||||
ROLLBACK_STAGE_REUSED=NO
|
||||
PREPARE_STATUS=OK
|
||||
ROLLBACK_STAGE_REUSED=NO
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957183-prepare/result.json
|
||||
"run_id": "20260814T174153Z-1957183-prepare",
|
||||
"status": "OK",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/task.json
|
||||
"active_backup_restore_max": 0
|
||||
"$HOMELAB_RUN_DIR/preflight.json",
|
||||
"$HOMELAB_RUN_DIR/prepare.json",
|
||||
"$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"$HOMELAB_RUN_DIR/apply.json",
|
||||
"$HOMELAB_RUN_DIR/verify.json",
|
||||
"$HOMELAB_RUN_DIR/rollback.json",
|
||||
"$HOMELAB_RUN_DIR/seal.json"
|
||||
"path": "$HOMELAB_RUN_DIR/preflight.json",
|
||||
"verification": "CR0072 is sealed; exact live monitor, service, timer and residue drop-in preimages are pinned; monthly reauth asset is unchanged."
|
||||
"path": "$HOMELAB_RUN_DIR/prepare.json",
|
||||
"path": "$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"producer": "phases/dry-run.sh",
|
||||
"path": "$HOMELAB_RUN_DIR/apply.json",
|
||||
"path": "$HOMELAB_RUN_DIR/verify.json",
|
||||
"path": "$HOMELAB_RUN_DIR/rollback.json",
|
||||
"path": "$HOMELAB_RUN_DIR/seal.json",
|
||||
"verification": "canonical seal is atomically created or exact-existing seal is validated/reused; edge rollback snapshot cleanup is idempotent."
|
||||
"runtime_matrix": [
|
||||
"runtime": "bash,jq,git,systemd,ssh,scp,python3,gzip",
|
||||
"runtime": "bash,python3,systemd,sha256sum,awk",
|
||||
"rollback_refuses_sealed": true,
|
||||
"dry-run": "phases/dry-run.sh",
|
||||
"assets/edge-dry-run.sh",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/dry-run.json
|
||||
"status": "OK",
|
||||
"dry_run_pyc_created": false,
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/stdout.log
|
||||
.task-id: OK
|
||||
EDGE_DRY_RUN_STATUS=OK
|
||||
DRY_RUN_STATUS=OK
|
||||
DRY_RUN_PYC_CREATED=NO
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T174153Z-1957291-dry-run/result.json
|
||||
"run_id": "20260814T174153Z-1957291-dry-run",
|
||||
"phase": "dry-run",
|
||||
"status": "OK",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/task.json
|
||||
"active_backup_restore_max": 0
|
||||
"$HOMELAB_RUN_DIR/preflight.json",
|
||||
"$HOMELAB_RUN_DIR/prepare.json",
|
||||
"$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"$HOMELAB_RUN_DIR/apply.json",
|
||||
"$HOMELAB_RUN_DIR/verify.json",
|
||||
"$HOMELAB_RUN_DIR/rollback.json",
|
||||
"$HOMELAB_RUN_DIR/seal.json"
|
||||
"path": "$HOMELAB_RUN_DIR/preflight.json",
|
||||
"verification": "CR0072 is sealed; exact live monitor, service, timer and residue drop-in preimages are pinned; monthly reauth asset is unchanged."
|
||||
"path": "$HOMELAB_RUN_DIR/prepare.json",
|
||||
"path": "$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"producer": "phases/dry-run.sh",
|
||||
"path": "$HOMELAB_RUN_DIR/apply.json",
|
||||
"path": "$HOMELAB_RUN_DIR/verify.json",
|
||||
"path": "$HOMELAB_RUN_DIR/rollback.json",
|
||||
"path": "$HOMELAB_RUN_DIR/seal.json",
|
||||
"verification": "canonical seal is atomically created or exact-existing seal is validated/reused; edge rollback snapshot cleanup is idempotent."
|
||||
"runtime_matrix": [
|
||||
"runtime": "bash,jq,git,systemd,ssh,scp,python3,gzip",
|
||||
"runtime": "bash,python3,systemd,sha256sum,awk",
|
||||
"rollback_refuses_sealed": true,
|
||||
"dry-run": "phases/dry-run.sh",
|
||||
"assets/edge-dry-run.sh",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/apply.json
|
||||
"status": "OK",
|
||||
"probe_status": "OK",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/stdout.log
|
||||
.task-id: OK
|
||||
EDGE_APPLY_STATUS=OK
|
||||
PROBE_STATUS=OK
|
||||
APPLY_STATUS=OK
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175136Z-1996598-apply/result.json
|
||||
"run_id": "20260814T175136Z-1996598-apply",
|
||||
"status": "OK",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/task.json
|
||||
"active_backup_restore_max": 0
|
||||
"$HOMELAB_RUN_DIR/preflight.json",
|
||||
"$HOMELAB_RUN_DIR/prepare.json",
|
||||
"$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"$HOMELAB_RUN_DIR/apply.json",
|
||||
"$HOMELAB_RUN_DIR/verify.json",
|
||||
"$HOMELAB_RUN_DIR/rollback.json",
|
||||
"$HOMELAB_RUN_DIR/seal.json"
|
||||
"path": "$HOMELAB_RUN_DIR/preflight.json",
|
||||
"verification": "CR0072 is sealed; exact live monitor, service, timer and residue drop-in preimages are pinned; monthly reauth asset is unchanged."
|
||||
"path": "$HOMELAB_RUN_DIR/prepare.json",
|
||||
"path": "$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"producer": "phases/dry-run.sh",
|
||||
"path": "$HOMELAB_RUN_DIR/apply.json",
|
||||
"path": "$HOMELAB_RUN_DIR/verify.json",
|
||||
"path": "$HOMELAB_RUN_DIR/rollback.json",
|
||||
"path": "$HOMELAB_RUN_DIR/seal.json",
|
||||
"verification": "canonical seal is atomically created or exact-existing seal is validated/reused; edge rollback snapshot cleanup is idempotent."
|
||||
"runtime_matrix": [
|
||||
"runtime": "bash,jq,git,systemd,ssh,scp,python3,gzip",
|
||||
"runtime": "bash,python3,systemd,sha256sum,awk",
|
||||
"rollback_refuses_sealed": true,
|
||||
"dry-run": "phases/dry-run.sh",
|
||||
"assets/edge-dry-run.sh",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/stdout.log
|
||||
EDGE_VERIFY_STATUS=OK
|
||||
HEALTH_STATUS=OK
|
||||
VERIFY_STATUS=OK
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/verify.json
|
||||
"status": "OK",
|
||||
"health_status": "OK",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175259Z-1998069-verify/result.json
|
||||
"run_id": "20260814T175259Z-1998069-verify",
|
||||
"status": "OK",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/task.json
|
||||
"active_backup_restore_max": 0
|
||||
"$HOMELAB_RUN_DIR/preflight.json",
|
||||
"$HOMELAB_RUN_DIR/prepare.json",
|
||||
"$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"$HOMELAB_RUN_DIR/apply.json",
|
||||
"$HOMELAB_RUN_DIR/verify.json",
|
||||
"$HOMELAB_RUN_DIR/rollback.json",
|
||||
"$HOMELAB_RUN_DIR/seal.json"
|
||||
"path": "$HOMELAB_RUN_DIR/preflight.json",
|
||||
"verification": "CR0072 is sealed; exact live monitor, service, timer and residue drop-in preimages are pinned; monthly reauth asset is unchanged."
|
||||
"path": "$HOMELAB_RUN_DIR/prepare.json",
|
||||
"path": "$HOMELAB_RUN_DIR/dry-run.json",
|
||||
"producer": "phases/dry-run.sh",
|
||||
"path": "$HOMELAB_RUN_DIR/apply.json",
|
||||
"path": "$HOMELAB_RUN_DIR/verify.json",
|
||||
"path": "$HOMELAB_RUN_DIR/rollback.json",
|
||||
"path": "$HOMELAB_RUN_DIR/seal.json",
|
||||
"verification": "canonical seal is atomically created or exact-existing seal is validated/reused; edge rollback snapshot cleanup is idempotent."
|
||||
"runtime_matrix": [
|
||||
"runtime": "bash,jq,git,systemd,ssh,scp,python3,gzip",
|
||||
"runtime": "bash,python3,systemd,sha256sum,awk",
|
||||
"rollback_refuses_sealed": true,
|
||||
"dry-run": "phases/dry-run.sh",
|
||||
"assets/edge-dry-run.sh",
|
||||
FILE=/var/lib/homelab-admin/seals/skladchik-reports-monitor-cookie-persistence-hotfix-v1.json
|
||||
"status": "SEALED",
|
||||
"sealed_at": "2026-08-14T17:53:00Z",
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/seal.json
|
||||
"status": "OK",
|
||||
"edge_rollback_stage_state": "YES"
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/stdout.log
|
||||
.task-id: OK
|
||||
EDGE_SEAL_CLEANUP_STATUS=OK
|
||||
ROLLBACK_STAGE_REMOVED=YES
|
||||
EDGE_SEAL_REUSED_ABSENT_STAGE=NO
|
||||
SEAL_STATUS=OK
|
||||
FILE=/var/lib/homelab-admin/runs/skladchik-reports-monitor-cookie-persistence-hotfix-v1/20260814T175300Z-1998179-seal/result.json
|
||||
"run_id": "20260814T175300Z-1998179-seal",
|
||||
"status": "OK",
|
||||
SAFE_STATE_CONTENT_END
|
||||
UNITS_BEGIN
|
||||
UNIT=skladchik-reports-monitor-backup.service|active=inactive|enabled=not-found
|
||||
UNIT=skladchik-reports-monitor-backup-restore-check.service|active=inactive|enabled=not-found
|
||||
UNIT=skladchik-reports-monitor.timer|active=inactive|enabled=not-found
|
||||
UNIT=skladchik-reports-monitor-supervisor.timer|active=active|enabled=enabled
|
||||
UNITS_END
|
||||
HEALTH_BEGIN
|
||||
STATUS=FAIL
|
||||
problems=monitor_status_not_ok,cookie_expiry_warn,netbird_route_not_wt0
|
||||
cookie_expiry_status=WARN
|
||||
cookie_jar=yes
|
||||
cookie_jar_bytes=364
|
||||
monitor_reports=
|
||||
monitor_status=ERROR
|
||||
netbird_route=1.1.1.1 via [PRIVATE_IP] dev eth0 src [PRIVATE_IP] uid 0
|
||||
session_keepalive=persistent_cookie_jar
|
||||
HEALTH_END
|
||||
RCA_CAPTURE_COMPLETE=true
|
||||
CHANGES_MADE_BY_937=false
|
||||
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260923-SKLADCHIK-INITIAL-STATE-RCA-DIRECT-937R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
|
||||
SKLADCHIK937_END=true
|
||||
EXACT_SOURCE_0150_0175_END
|
||||
CURRENT_FACTS_BEGIN
|
||||
HOSTNAME_F=pve01.gram1.ru
|
||||
HOSTNAME_EXPECTED=pve01.gram1.ru
|
||||
HOSTNAME_MATCH=true
|
||||
REPO_RESOLVED_PRESENT=true
|
||||
REPO_EXISTS=true
|
||||
REPO_BRANCH=main
|
||||
REPO_BRANCH_MAIN=true
|
||||
REPO_HEAD=d5e2ef5639398a762283e47143c17b494f8ed579
|
||||
REPO_PORCELAIN_COUNT=0
|
||||
TASK_ID=skladchik-reports-monitor-controlled-reauth-v1
|
||||
TASK_RESOLVED_PRESENT=true
|
||||
TASK_EXISTS=true
|
||||
TASK_META=mode=755|size=4096|mtime=1784373912|dir=true
|
||||
SEAL_RESOLVED_PRESENT=true
|
||||
SEAL_EXISTS=true
|
||||
SEAL_META=mode=600|size=469|mtime=1784371982|dir=false
|
||||
LOCAL_STAGE_RESOLVED_PRESENT=true
|
||||
LOCAL_STAGE_EXISTS=false
|
||||
TARGET_EDGE_SHA_PRESENT=false
|
||||
KNOWN_HOSTS_PARSED=true
|
||||
KNOWN_HOSTS_EXISTS=true
|
||||
KNOWN_HOSTS_SHA256=ab01de61ca5030ad158f1aef377364100531473de1e10a529089174f6890d735
|
||||
EDGE_SHA_CHECK_RC=INPUT_UNRESOLVED
|
||||
INITIAL_TEST_LINES_BEGIN
|
||||
LINE_0157=test "$(hostname -f)" = pve01.gram1.ru
|
||||
LINE_0158=test "$(git -C "$REPO" branch --show-current)" = main
|
||||
LINE_0159=test "$(git -C "$REPO" rev-parse HEAD)" = "$(git -C "$REPO" rev-parse origin/main)"
|
||||
LINE_0160=test -z "$(git -C "$REPO" status --porcelain)"
|
||||
LINE_0161=test -z "$(git -C /srv/homelab-desired-state status --porcelain)"
|
||||
LINE_0162=test "$(git -C "$REPO" remote get-url --push origin)" = DISABLED
|
||||
LINE_0163=test -d "$TASK"
|
||||
LINE_0164=test -s "$TASK/task.json"
|
||||
LINE_0165=VM160_BEFORE="$(vm160_fingerprint)"
|
||||
LINE_0166=KNOWN_HOSTS_BEFORE="$(sha256sum [SENSITIVE_PATH] | awk 'NR==1{print $1}')"
|
||||
LINE_0168=TARGET_EDGE_SHA="$(jq -r '.source_of_truth.edge_target_sha256' "$TASK/task.json")"
|
||||
LINE_0169=test "$TARGET_EDGE_SHA" != null
|
||||
LINE_0170=test "${#TARGET_EDGE_SHA}" = 64
|
||||
LINE_0171=test "$(sha256sum "$TASK/assets/edge/skladchik-reports-monitor-cookie-update-edge" | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
LINE_0172=test "$(ssh "${SSH[@]}" "$EDGE" sudo -n /usr/bin/sha256sum /usr/local/sbin/skladchik-reports-monitor-cookie-update-edge | awk 'NR==1{print $1}')" = "$TARGET_EDGE_SHA"
|
||||
INITIAL_TEST_LINES_END
|
||||
CHANGES_MADE_BY_938=false
|
||||
ROLLBACK_STARTED=false
|
||||
ROLLBACK_RESTORED=null
|
||||
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SUPPORT-260923-SKLADCHIK-INITIAL-CHECK-EXACT-938R1","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}
|
||||
SKLADCHIK938_END=true
|
||||
|
||||
OUTPUT_END
|
||||
CHAT_OUTPUT_END
|
||||
|
||||
Reference in New Issue
Block a user