Compare commits

..

4 Commits

Author SHA1 Message Date
kami ec0502f829 Restore the byte-pinned USAGE test_healthcheck.sh from master
7d04aef replaced the byte-exact USAGE pin with a shape check that requires
every long flag grepped from the healthcheck source to appear in --help.
--json was already undocumented before this task, so that check was red on
arrival and it also dropped the 'unknown flag ignored' assertion on --bogus,
the only pin on the no---strict silent-ignore path.

The accepted plan's phase 3 is 'no edit': --help is untouched by --strict, so
master's version passes as-is.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 15:54:11 +04:00
kami 7d04aef94d Drop the byte-exact USAGE pin from test_healthcheck.sh 2026-08-28 15:52:53 +04:00
kami 172c100dec orchestra: pre-release WIP snapshot (orchestra-06g4gbsq2wrgd5hgypyzz4tyh0-ec8111ad) 2026-08-28 15:50:32 +04:00
kami 94bd45c3b5 orchestra: TASK.md 2026-08-28 15:44:12 +04:00
4 changed files with 52 additions and 54 deletions
+22 -18
View File
@@ -1,39 +1,43 @@
# Task 06G4SWEVP71FYYKAV5FV0ZK5ZG
# Task 06G4GBSQ2WRGD5HGYPYZZ4TYH0
Give the healthcheck a --summary flag
Add a --strict mode to the healthcheck
- Project: test-e2e
- Source: burnin/run16-rotation
- Source: gitea:test-e2e/13
- Priority: 0
## Instructions
Give scripts/orchestra_e2e_healthcheck.sh a --summary flag that prints one line per check with its result, then the usual success line.
Three phases, in this order.
Plan this as three phases, because each piece is independently verifiable:
## Phase 1 — `--strict` on the healthcheck
1. Introduce a results list. Record each check's name and outcome as it runs, with no change to any existing output or exit status.
2. Add the --summary flag. It prints one line per recorded result, then the existing success line.
3. Update the usage text and scripts/test_healthcheck.sh so the expected --help output matches.
`scripts/orchestra_e2e_healthcheck.sh --strict` must reject an unrecognised flag: print `unknown flag: <flag>` on stderr and exit 2. Without `--strict` the current silent-ignore behaviour is unchanged, and `--help` still wins from any position.
## Verification policy for this project
## Phase 2 — cover `--strict` in the existing self-test
Only two commands may appear on a run: line, exactly:
Extend `scripts/orchestra_e2e_selftest.sh`, which already asserts the plain and `--json` runs. Add assertions that `--strict --nonsense` exits 2 and that `--strict` alone exits 0. Keep its existing `fail()` helper and its existing assertions.
- ["bash", "-n", "<path>"]
- ["bash", "scripts/orchestra_e2e_healthcheck.sh"]
## Phase 3 — keep the pinned usage text honest
Anything else is refused when you seal the plan. Give every phase at least one automated check from that list, and add a manual check where a human should confirm the printed text.
`scripts/test_healthcheck.sh` pins the healthcheck's exact `--help` output in a hardcoded `USAGE` variable. Phase 1 changes nothing about `--help`, so this phase only confirms the pin still holds.
Verify this phase by running the pinned test itself:
- run: ["bash", "scripts/test_healthcheck.sh"]
## Constraints
The project's verification policy allows exactly two command shapes:
["bash", "-n", "<one file>"]
["bash", "scripts/orchestra_e2e_healthcheck.sh"]
## Research first
Establish at least three findings with distinct confidence: at least one fact, one inference, one assumption.
Establish at least three findings with distinct confidence: at least one `fact`, one `inference`, one `assumption`. Cite at least two in References.
## Quality gate
bash -n scripts/*.sh && bash scripts/orchestra_e2e_healthcheck.sh
## Completion
Run the configured quality gate. When the task is ready for the worker to verify and deliver, create `.orchestra/done`. Do not write a prose completion report.
+17 -35
View File
@@ -1,57 +1,39 @@
#!/usr/bin/env bash
readonly VERSION=1.0.0
# emit <format> <template> [args...]: the single output path.
# format: text or json print; none suppresses (--quiet). Explicit argument,
# never read from an enclosing variable.
emit() {
local format=$1
shift
[ "$format" = none ] || printf "$@"
}
main() {
local quiet=
local json=
local summary=
local -a results=()
local strict=
local unknown=
for arg in "$@"; do
if [ "$arg" = --help ]; then
emit text 'Usage: %s [--quiet] [--summary]\n\n' "${0##*/}"
emit text 'Healthcheck script for Orchestra E2E tests.\n'
emit text 'Exits 0 with a success message if all checks pass.\n'
emit text ' --quiet Suppress the success message; still exits 0.\n'
emit text ' --summary Print one line per check before the success message.\n'
emit text 'Version: %s\n' "$VERSION"
printf 'Usage: %s [--quiet]\n\n' "${0##*/}"
printf 'Healthcheck script for Orchestra E2E tests.\n'
printf 'Exits 0 with a success message if all checks pass.\n'
printf ' --quiet Suppress the success message; still exits 0.\n'
exit 0
elif [ "$arg" = --quiet ]; then
quiet=1
elif [ "$arg" = --json ]; then
json=1
elif [ "$arg" = --summary ]; then
summary=1
elif [ "$arg" = --strict ]; then
strict=1
else
[ -n "$unknown" ] || unknown=$arg
fi
done
results+=("healthcheck ok")
if [ -n "$strict" ] && [ -n "$unknown" ]; then
printf 'unknown flag: %s\n' "$unknown" >&2
exit 2
fi
local format=text
[ -n "$quiet" ] && format=none
[ -n "$json" ] && format=json
if [ "$format" = json ]; then
emit "$format" '{"status":"ok","checks":1}\n'
if [ -n "$json" ]; then
printf '{"status":"ok","checks":1}\n'
exit 0
fi
if [ -n "$summary" ]; then
for r in "${results[@]}"; do
emit "$format" '%s: %s\n' "${r%% *}" "${r#* }"
done
fi
emit "$format" 'OK - all healthchecks passed\n'
[ -n "$quiet" ] || printf 'OK - all healthchecks passed\n'
exit 0
}
+12
View File
@@ -34,4 +34,16 @@ case "$jout" in
*) fail '--json run stdout prefix: want {"status":' "$jout" ;;
esac
# --strict rejects an unknown flag
sout=$(bash "$healthcheck" --strict --nonsense 2>&1)
sstatus=$?
[ "$sstatus" -eq 2 ] || fail "--strict --nonsense exit status: want 2, got $sstatus" "$sout"
# --strict alone is accepted
gout=$(bash "$healthcheck" --strict)
gstatus=$?
[ "$gstatus" -eq 0 ] || fail "--strict run exit status: want 0, got $gstatus" "$gout"
printf 'selftest: ok\n'
+1 -1
View File
@@ -3,7 +3,7 @@
HC="$(dirname "$0")/orchestra_e2e_healthcheck.sh"
OK='OK - all healthchecks passed'
USAGE="$(printf 'Usage: orchestra_e2e_healthcheck.sh [--quiet] [--summary]\n\nHealthcheck script for Orchestra E2E tests.\nExits 0 with a success message if all checks pass.\n --quiet Suppress the success message; still exits 0.\n --summary Print one line per check before the success message.\nVersion: 1.0.0')"
USAGE="$(printf 'Usage: orchestra_e2e_healthcheck.sh [--quiet]\n\nHealthcheck script for Orchestra E2E tests.\nExits 0 with a success message if all checks pass.\n --quiet Suppress the success message; still exits 0.')"
fails=0
check() { # check <expected-stdout> <label> [args...]