Files
felhom.eu/documentation/audits/evidence-chaos-night-2026-09-17/box-hloop.sh
T
admin 9b44c44f23
gates / gates (push) Successful in 21s
chaos night: teardown baseline, and the box's own logs copied off before anything stops
The before-picture that cannot be retaken once the machine is gone: pvesm
status, the guest list, VM 336's full config and the contents of /mnt/hdd_1.

Two things it records that correct my own assumptions:
  * the machine has THREE disks, not the two the brief specified. The third is
    the 64G disk I added during Phase 0 to extend the thin pool after filling
    it with twelve simultaneous deploys. My damage, my remedy, and a deviation
    from the fixture the brief described - declared rather than quietly torn
    down.
  * the /mnt/hdd_1 claim is now earned: nvme-scratch is defined with
    path /mnt/hdd_1, is_mountpoint yes, and the three raw files sit in
    /mnt/hdd_1/images/336.

The harness is stopped and disabled, its logs copied off first (R-320):
household 204 lines, diskguard 0 bytes - the guard never fired all night.

And a correction one minute old: I announced that the earlier log copy was
twelve lines short and that re-copying rescued them. It was not short - both
copies are byte-identical. I compared a line count read at 00:19 against a copy
taken at 00:31. Nothing was lost; only the accuracy of the record was at risk.

unproven.py: 35 of 55 not walked - NO NUMBER MOVED, which is correct for a
validation night that shipped no product code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-17 02:33:19 +02:00

18 lines
1.1 KiB
Bash

#!/bin/bash
# The light background household. Runs ON THE VM (the nested PVE), hitting the customer guest's
# traefik, because the guest is not reachable from DooPlex at all. Every 2 minutes: one read of a
# random app's front door and one read of the dashboard's health endpoint. Failures are DATA.
G="${1:?guest ip}"
LOG=/root/household.log
APPS="wiki paste share recipes inventory status travel paperless cloud photos media vault"
while true; do
A=$(echo $APPS | tr ' ' '\n' | shuf -n1)
C=$(curl -s -o /dev/null -w '%{http_code}' --max-time 15 -H "Host: ${A}.enkicsifelhom.hu" "http://${G}/" 2>/dev/null)
case "$C" in 2*|3*) R="ok http=$C";; 000) R="UNREACHABLE";; *) R="FAILED http=$C";; esac
printf '%s %-10s read %s\n' "$(date -u +%FT%TZ)" "$A" "$R" >> $LOG
H=$(curl -s -o /dev/null -w '%{http_code}' --max-time 15 -H "Host: felhom.enkicsifelhom.hu" "http://${G}/api/health" 2>/dev/null)
case "$H" in 2*|3*) R="ok http=$H";; 000) R="UNREACHABLE";; *) R="FAILED http=$H";; esac
printf '%s %-10s dash %s\n' "$(date -u +%FT%TZ)" "$A" "$R" >> $LOG
sleep 120
done