fix(conformance): chainsaw checks use contains(), not unsupported =~

Every chainsaw `check` used the regex operator `=~` (`($stdout =~ 'X'): true`),
which chainsaw's expression engine rejects ('SyntaxError: Unknown char: ~') — so
EVERY such test failed on the assertion even when the behavior passed. Proven with
data-survival (R-STATE-01): the Longhorn canary genuinely SURVIVED pod destruction
(DATA_SURVIVED_OK) but the test FAILED on the `=~` syntax. Converted all 10 tests to
JMESPath `contains($stdout, 'X')` (data-survival's alternation → contains||contains).
data-survival now PASSES; the other 9 (later-phase components) are syntactically fixed
for when their phases deploy.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
jakman85andClaude Opus 4.8 committed 2026-08-17 16:58:38 -05:00
1 parent 54fd963cc4
commit e0c5c58710
10 files changed
+17 -17

No files matched your search

@@ -38,7 +38,7 @@ spec:
curl -fsS https://api.ipify.org) curl -fsS https://api.ipify.org)
echo "internet_ip=$ip" echo "internet_ip=$ip"
# TODO: assert ip is in home/WAN set, not the PIA range. # TODO: assert ip is in home/WAN set, not the PIA range.
check: { ($stdout =~ 'internet_ip='): true } check: { (contains($stdout, 'internet_ip=')): true }
- name: then-vpn-shows-vpn-ip - name: then-vpn-shows-vpn-ip
try: try:
- script: - script:
@@ -48,7 +48,7 @@ spec:
curl -fsS https://api.ipify.org) curl -fsS https://api.ipify.org)
echo "vpn_ip=$ip" echo "vpn_ip=$ip"
# TODO: assert ip is a PIA egress address (distinct from WAN IP). # TODO: assert ip is a PIA egress address (distinct from WAN IP).
check: { ($stdout =~ 'vpn_ip='): true } check: { (contains($stdout, 'vpn_ip=')): true }
- name: when-flip-egress-class-in-git - name: when-flip-egress-class-in-git
try: try:
- script: - script:
@@ -37,7 +37,7 @@ spec:
curl -s -o /dev/null -w '%{http_code}' https://<service>.home.keithjackson.dev) curl -s -o /dev/null -w '%{http_code}' https://<service>.home.keithjackson.dev)
echo "unauth_code=$code" echo "unauth_code=$code"
case "$code" in 302|303|401|403) echo CHALLENGED_OK ;; *) exit 1 ;; esac case "$code" in 302|303|401|403) echo CHALLENGED_OK ;; *) exit 1 ;; esac
check: { ($stdout =~ 'CHALLENGED_OK'): true } check: { (contains($stdout, 'CHALLENGED_OK')): true }
- name: then-authenticated-is-granted - name: then-authenticated-is-granted
try: try:
- script: - script:
@@ -48,7 +48,7 @@ spec:
set -euo pipefail set -euo pipefail
echo "TODO: query smtp-sink for an email whose subject matches the alert" echo "TODO: query smtp-sink for an email whose subject matches the alert"
echo "EMAIL_DELIVERED_OK" echo "EMAIL_DELIVERED_OK"
check: { ($stdout =~ 'EMAIL_DELIVERED_OK'): true } check: { (contains($stdout, 'EMAIL_DELIVERED_OK')): true }
finally: finally:
- script: - script:
content: 'echo "TODO: clear the injected fault + drain the sink (self-cleaning)"' content: 'echo "TODO: clear the injected fault + drain the sink (self-cleaning)"'
@@ -103,7 +103,7 @@ spec:
[ "$GOT" = "$CANARY" ] && echo DATA_SURVIVED_OK [ "$GOT" = "$CANARY" ] && echo DATA_SURVIVED_OK
check: check:
# green on either a clean skip (no longhorn) or a proven survival. # green on either a clean skip (no longhorn) or a proven survival.
($stdout =~ '(DATA_SURVIVED_OK|DATA_SURVIVAL_SKIPPED_OK)'): true (contains($stdout, 'DATA_SURVIVED_OK') || contains($stdout, 'DATA_SURVIVAL_SKIPPED_OK')): true
finally: finally:
- script: - script:
content: | content: |
@@ -40,7 +40,7 @@ spec:
content: | content: |
set -euo pipefail set -euo pipefail
kubectl -n "$NAMESPACE" exec source -- nc -z -w 3 dest 80 && echo ALLOWED_OK kubectl -n "$NAMESPACE" exec source -- nc -z -w 3 dest 80 && echo ALLOWED_OK
check: { ($stdout =~ 'ALLOWED_OK'): true } check: { (contains($stdout, 'ALLOWED_OK')): true }
- name: when-revoke-allow-then-fail-closed - name: when-revoke-allow-then-fail-closed
try: try:
# FAULT INJECTION: delete the allow policy; baseline default-deny remains. # FAULT INJECTION: delete the allow policy; baseline default-deny remains.
@@ -56,13 +56,13 @@ spec:
echo "LEAK: still reachable after allow revoked" >&2; exit 1 echo "LEAK: still reachable after allow revoked" >&2; exit 1
fi fi
echo FAIL_CLOSED_OK echo FAIL_CLOSED_OK
check: { ($stdout =~ 'FAIL_CLOSED_OK'): true } check: { (contains($stdout, 'FAIL_CLOSED_OK')): true }
- script: - script:
# DNS must still work (default-deny permits DNS egress). # DNS must still work (default-deny permits DNS egress).
content: | content: |
set -euo pipefail set -euo pipefail
kubectl -n "$NAMESPACE" exec source -- nslookup kubernetes.default && echo DNS_OK kubectl -n "$NAMESPACE" exec source -- nslookup kubernetes.default && echo DNS_OK
check: { ($stdout =~ 'DNS_OK'): true } check: { (contains($stdout, 'DNS_OK')): true }
finally: finally:
- script: - script:
content: 'echo "cleanup via chainsaw namespace teardown"' content: 'echo "cleanup via chainsaw namespace teardown"'
@@ -46,7 +46,7 @@ spec:
set -euo pipefail set -euo pipefail
echo "TODO: assert app Ready in restored ns AND canary data present" echo "TODO: assert app Ready in restored ns AND canary data present"
echo "DR_RESTORE_OK" echo "DR_RESTORE_OK"
check: { ($stdout =~ 'DR_RESTORE_OK'): true } check: { (contains($stdout, 'DR_RESTORE_OK')): true }
finally: finally:
- script: - script:
content: 'echo "TODO: delete the restore target namespace (self-cleaning)"' content: 'echo "TODO: delete the restore target namespace (self-cleaning)"'
@@ -45,7 +45,7 @@ spec:
set -euo pipefail set -euo pipefail
echo "TODO: within Flux interval, assert live value == git-declared value" echo "TODO: within Flux interval, assert live value == git-declared value"
echo "DRIFT_REVERTED_OK" echo "DRIFT_REVERTED_OK"
check: { ($stdout =~ 'DRIFT_REVERTED_OK'): true } check: { (contains($stdout, 'DRIFT_REVERTED_OK')): true }
finally: finally:
- script: - script:
content: 'echo "TODO: ensure resource left in git-declared state"' content: 'echo "TODO: ensure resource left in git-declared state"'
@@ -56,7 +56,7 @@ spec:
echo "TODO: assert rolled back to last-good revision" echo "TODO: assert rolled back to last-good revision"
echo "TODO: assert Alertmanager delivered an email alert (see alerting test)" echo "TODO: assert Alertmanager delivered an email alert (see alerting test)"
echo "ROLLBACK_OK" echo "ROLLBACK_OK"
check: { ($stdout =~ 'ROLLBACK_OK'): true } check: { (contains($stdout, 'ROLLBACK_OK')): true }
finally: finally:
- script: - script:
content: 'echo "TODO: reset automation to a good tag (self-cleaning)"' content: 'echo "TODO: reset automation to a good tag (self-cleaning)"'
@@ -51,14 +51,14 @@ spec:
echo "LEAK: vpn workload reached internet with tunnel down" >&2; exit 1 echo "LEAK: vpn workload reached internet with tunnel down" >&2; exit 1
fi fi
echo NO_LEAK_OK echo NO_LEAK_OK
check: { ($stdout =~ 'NO_LEAK_OK'): true } check: { (contains($stdout, 'NO_LEAK_OK')): true }
- script: - script:
# AND: internet-class workload is unaffected. # AND: internet-class workload is unaffected.
content: | content: |
set -euo pipefail set -euo pipefail
kubectl -n "$NAMESPACE" exec egress-internet -- \ kubectl -n "$NAMESPACE" exec egress-internet -- \
curl -fsS --max-time 5 https://api.ipify.org && echo INTERNET_UNAFFECTED_OK curl -fsS --max-time 5 https://api.ipify.org && echo INTERNET_UNAFFECTED_OK
check: { ($stdout =~ 'INTERNET_UNAFFECTED_OK'): true } check: { (contains($stdout, 'INTERNET_UNAFFECTED_OK')): true }
- name: when-tunnel-recovers-connectivity-returns - name: when-tunnel-recovers-connectivity-returns
try: try:
- script: - script:
@@ -50,7 +50,7 @@ spec:
test -f _artifacts/coverage/coverage.md test -f _artifacts/coverage/coverage.md
test -f _artifacts/coverage/coverage.json test -f _artifacts/coverage/coverage.json
echo COVERAGE_EMITTED_OK echo COVERAGE_EMITTED_OK
check: { ($stdout =~ 'COVERAGE_EMITTED_OK'): true } check: { (contains($stdout, 'COVERAGE_EMITTED_OK')): true }
- name: r-test-02-reproducible - name: r-test-02-reproducible
try: try:
- script: - script:
@@ -63,7 +63,7 @@ spec:
./run.sh --coverage-only >/dev/null ./run.sh --coverage-only >/dev/null
b=$(sha256sum _artifacts/coverage/coverage.json | awk '{print $1}') b=$(sha256sum _artifacts/coverage/coverage.json | awk '{print $1}')
[ "$a" = "$b" ] && echo REPRODUCIBLE_OK [ "$a" = "$b" ] && echo REPRODUCIBLE_OK
check: { ($stdout =~ 'REPRODUCIBLE_OK'): true } check: { (contains($stdout, 'REPRODUCIBLE_OK')): true }
- name: r-test-01-04-every-test-is-tagged - name: r-test-01-04-every-test-is-tagged
try: try:
- script: - script:
@@ -79,7 +79,7 @@ spec:
assert rep["summary"]["annotation_label_mismatches"]==0, "label/annotation drift" assert rep["summary"]["annotation_label_mismatches"]==0, "label/annotation drift"
print("ALL_TAGGED_OK") print("ALL_TAGGED_OK")
PY PY
check: { ($stdout =~ 'ALL_TAGGED_OK'): true } check: { (contains($stdout, 'ALL_TAGGED_OK')): true }
- name: r-test-05-no-safety-critical-gaps - name: r-test-05-no-safety-critical-gaps
try: try:
- script: - script:
@@ -96,4 +96,4 @@ spec:
assert not gaps, f"safety-critical gaps without L3 test: {gaps}" assert not gaps, f"safety-critical gaps without L3 test: {gaps}"
print("NO_SAFETY_GAPS_OK") print("NO_SAFETY_GAPS_OK")
PY PY
check: { ($stdout =~ 'NO_SAFETY_GAPS_OK'): true } check: { (contains($stdout, 'NO_SAFETY_GAPS_OK')): true }