Quarantine admission qualification

The release agent must not spend another candidate merely because a retained candidate-affecting cause has occurred fewer times than a retry threshold. The release diagnosis describes the shared CLI and Desktop refusal and the explicit clearance operation.

tests/release/quarantine/admission.mjs runs the real Stado CLI against an isolated local registry and a state document retained from a real failed release. It does not construct a quarantine record or simulate a provider. The fixture must have a single quarantined predecessor, no active, previous or candidate process, and a different desired artifact in its registry. The target's home, state, runtime, logs and install root must all be inside the fixture home beneath the checkout's .build directory. The declared paths must already exist; this check never redirects an operator's rollout.

Run on the isolated release host when build and test execution is permitted:

node tests/release/quarantine/admission.mjs

Required environment:

  • STADO_BIN: executable being qualified.
  • STADO_TEST_SOURCE_REVISION: exact revision of that executable.
  • STADO_TEST_QUARANTINE_HOME: isolated fixture home beneath .build.
  • STADO_TEST_QUARANTINE_CONFIG: fixture configuration inside that home.
  • STADO_TEST_QUARANTINE_STORE: real local registry/object store in that home.
  • STADO_TEST_QUARANTINE_TMP: existing temporary directory in that home.
  • STADO_TEST_QUARANTINE_STATE: real predecessor's state file in that home.
  • STADO_TEST_QUARANTINE_TARGET and STADO_TEST_QUARANTINE_PRODUCT: the isolated registry coordinates.
  • STADO_TEST_QUARANTINE_CAUSE: the cause that actual failed rollout recorded.
  • PATH: the host's tool search path.

Qualify both a candidate cause without a live predicate and a scoped cause whose real predicate cannot answer. The journey reads the policy through the CLI, executes a release-agent pass, and compares its answer with the persisted state: the quarantine is preserved, no candidate started, and the diagnosis names the cause and lack of established recovery. It retains policy, before and after state, command streams, statuses, source revision, binary and journey digests in .build/release-quarantine/run-*/report.json.

Missing fixtures are not a pass. The journey does not clear the fixture or start a service to manufacture an easier result.

Source: this website