From ff4df5f251d64dbaf13f4f0992c220378e08d352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Gro=C3=9Fmann?= Date: Sun, 26 Jul 2026 16:40:21 +0200 Subject: [PATCH] tests: report RAKF HTTPX/FACILITY signature as a shutdown diagnostic shutdown-acceptance.sh already drives P HTTPD, so the console window it captures covers the exact region where issue #27 reported a RAKF0005 / RAKF000A pair naming HTTPX in FACILITY -- after "HTTPD002I Server is SHUTDOWN". Report two counts over that window at no extra cost. Both are strictly diagnostic and never gate the verdict. RAKF0004 (failed logon) is routine in this window and unrelated, RAKF0005 can be raised by any resource on a shared system, and #27 was retired as stale because no current build reproduced it -- a blanket RAKF assertion would misfire and mask real results. Only the specific HTTPX/FACILITY signature raises a CAUTION, and only on an otherwise-passing run. Verified with synthetic fixtures: the signature present on a clean end still yields PASS (exit 0) plus the CAUTION; routine RAKF0004 lines alone produce zero counts and no CAUTION; and an SA03 run still FAILs (exit 1) with the counts reported alongside. Pre-existing RAKF lines ahead of the recorded offset stay outside the window. sh/dash/bash/zsh -n clean. Refs #27 --- tests/README.md | 20 ++++++++++++++++++++ tests/shutdown-acceptance.sh | 26 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/tests/README.md b/tests/README.md index 6ff6e33..482b792 100644 --- a/tests/README.md +++ b/tests/README.md @@ -107,6 +107,26 @@ already returned (no worker parked → INCONCLUSIVE, not a real reproduction). Exit codes: `0` pass, `1` fail, `2` config error, `3` inconclusive. +### RAKF counts (diagnostic only) + +Because the test already drives `P HTTPD`, it reports two RAKF counts over the +same window for free: + +| Reported | Meaning | +|----------|---------| +| `RAKF0005 in window` | any resource-access violation — context only, and often unrelated on a shared system | +| `RAKF HTTPX/FACILITY` | the specific signature from [#27](https://github.com/mvslovers/httpd/issues/27) — a `RAKF000A` line naming `HTTPX` in `FACILITY` | + +Neither **ever** affects the verdict. A nonzero HTTPX/FACILITY count on an +otherwise-passing run emits a CAUTION and nothing more. + +This is deliberate. `RAKF0004` (failed logon) is routine in this window and +unrelated; `RAKF0005` can be raised by any resource on a shared system; and #27 +was retired as stale because no current build reproduced it. Turning any of this +into a FAIL condition would misfire and mask real results. The CAUTION exists so +that if the #27 signature ever does reappear, it is captured on a current build +rather than re-argued from the 2026-03-18 log. + ### Windowed assertion (important) `CONSOLE_LOG` is usually an **append-only** Hercules hardcopy log that already diff --git a/tests/shutdown-acceptance.sh b/tests/shutdown-acceptance.sh index bc13b25..7335800 100755 --- a/tests/shutdown-acceptance.sh +++ b/tests/shutdown-acceptance.sh @@ -64,6 +64,15 @@ # and proves >=1 is still parked at stop. Proof-of-scenario is that in-flight # count, NOT a fault marker -- a clean parked poll faults nothing. A green # abend run does NOT establish the #179 fix; use longpoll for that. +# +# 6. RAKF COUNTS ARE DIAGNOSTIC, NEVER A GATE. #27 reported a RAKF0005 / +# RAKF000A pair naming HTTPX in FACILITY *after* "HTTPD002I Server is +# SHUTDOWN". Since this test already drives P HTTPD, it reports those counts +# for free. They must NOT become a FAIL condition: RAKF0004 (failed logon) +# is routine in this window and unrelated, RAKF0005 can be raised by any +# resource on a shared system, and #27 was never reproduced on a current +# build. A blanket RAKF assertion would misfire and mask real results. +# Only the specific HTTPX/FACILITY signature raises a CAUTION on a PASS. # --------------------------------------------------------------------------- # Configuration (override via environment or a sourced .env) # --------------------------------------------------------------------------- @@ -255,9 +264,15 @@ hasp395=$(grep -Ec "[$]HASP395[[:space:]]+${JOBNAME}[[:space:]].*ENDED" "$window ief404=$(grep -Ec "IEF404I[[:space:]]+${JOBNAME}[[:space:]].*ENDED" "$window" 2>/dev/null || true) # clean-shutdown WTOs (httpd.c:335 / :701) — DIAGNOSTIC ONLY, never a gate. Note 4. clean=$(grep -Ec "HTTPD002I Server is SHUTDOWN|HTTPD060I SHUTDOWN worker" "$window" 2>/dev/null || true) +# RAKF security violations (#27) — DIAGNOSTIC ONLY, never a gate. Note 6. +# rakf5 : any RAKF0005 in the window (context; may be unrelated on a shared system) +# rakfhttpx: the specific #27 signature — a RAKF000A detail line naming HTTPX in FACILITY +rakf5=$(grep -Ec "RAKF0005" "$window" 2>/dev/null || true) +rakfhttpx=$(grep -Ec "RAKF000A.*HTTPX.*FACILITY" "$window" 2>/dev/null || true) : "${faultmarks:=0}" "${s33e:=0}" "${crtget:=0}" "${svcdump:=0}" "${clean:=0}" : "${abend:=0}" "${hasp310:=0}" "${hasp395:=0}" "${ief404:=0}" +: "${rakf5:=0}" "${rakfhttpx:=0}" # end_seen = the address-space END was CAPTURED in the window (NOT that it ended # normally). "$HASP395 ... ENDED" and IEF404I both appear on clean AND abnormal ends, @@ -283,6 +298,8 @@ echo " IEF450I ... ABEND (abnormal AS end) : $abend" echo " \$HASP310 TERMINATED AT END OF MEMORY : $hasp310" echo " AS end captured (\$HASP395/IEF404I) : $end_seen" echo " clean-shutdown WTOs (diagnostic) : $clean" +echo " RAKF0005 in window (diagnostic) : $rakf5" +echo " RAKF HTTPX/FACILITY — #27 (diagnostic): $rakfhttpx" echo rm -f "$window" @@ -351,4 +368,13 @@ them alongside a normal end is unusual — confirm the workers drained rather than being terminated silently. EOF fi +if [ "$rakfhttpx" -ne 0 ]; then + cat <