Files
cc-ci/tests/custom-html-tiny/recipe_meta.py
autonomic-bot 3b0a3d14ea
Some checks failed
continuous-integration/drone/push Build is failing
feat(harness): declare intentional N/A tiers + custom-html-tiny functional test
Two changes the operator asked for after noticing custom-html-tiny PR #6 has no
backup/restore or functional coverage:

1) Intentional-vs-accidental N/A. A recipe can now declare
   recipe_meta.EXPECTED_NA = {rung: reason} to mark a tier as deliberately not
   applicable (e.g. a stateless static server has no backup surface). N/A still
   caps the level — the harness never claims a rung it did not verify — but the
   run is now annotated 'intentional · <reason>' instead of being indistinguishable
   from a forgotten test. An *undeclared* N/A on a gap-sensitive rung
   (backup_restore, functional) is surfaced as a 'possible coverage gap', and a
   stale EXPECTED_NA (declared N/A but actually exercised) is surfaced too. All
   non-blocking (R7): results.json gains level_cap_intent + an  block, the
   summary card shows the clause, and the CI log prints the gap/stale warnings.
   (results.classify_na/cap_intent are pure + unit-tested; level.py untouched.)

   custom-html-tiny declares backup_restore intentionally N/A.

2) custom-html-tiny functional test: writes a random file into the served content
   volume (via the volume mountpoint, like install_steps.sh, since the SWS image
   is shell-less), asserts exact-byte round-trip + a real 404 on a missing path —
   proving the static-web-server actually serves the volume, not a 200-everything
   fallback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 01:59:28 +00:00

18 lines
1.2 KiB
Python

# Per-recipe config for custom-html-tiny (a fast static-web-server). Shorter timeouts than the
# defaults: it converges + serves in seconds, so the generic install's fail-without-hook case
# (DG5) is detected quickly instead of waiting the default 300s HTTP timeout.
DEPLOY_TIMEOUT = 120
HTTP_TIMEOUT = 90
# Intentionally-N/A tiers (reviewed opt-out, NOT a coverage gap). custom-html-tiny is a stateless
# static-web-server: it serves an ephemeral `content` volume that the harness seeds at deploy time
# (install_steps.sh) and holds no persistent or user data, so there is nothing to back up or restore.
# The recipe therefore declares no `backupbot.backup` label and the L3 backup/restore rung is N/A.
# Declaring it here marks that N/A as deliberate, so the run is annotated "intentional" instead of
# being flagged as a possible missing-coverage gap. (N/A still caps the level — the harness never
# claims a rung it did not verify; this only explains *why* the cap is expected.)
EXPECTED_NA = {
"backup_restore": "stateless static file server: serves an ephemeral content volume seeded at "
"deploy, with no persistent/user data to back up or restore (no backupbot.backup label)",
}