Skip to content

v0.4.23 release requirements

Status: implementation in progress; no complete runtime approval exists.

scripts/release-requirements.json is the versioned inventory of required proofs. The released v0.4.22 baseline remains required. v0.4.23 adds public contracts, configuration policy, browser/terminal, remote Docker, remote Podman live Console integration, and Core-only bootstrap on rootless Docker and Podman. Counts are derived from the release's selected inventory; a successful baseline alone cannot approve the new release.

Each requirement names its evidence schema, executing jobs and consumer roles. The inventory is read from the exact candidate, not from a mutable default branch. Missing or duplicated definitions fail closed. Coverage and approval receipts bind the requirement digest as well as the candidate and demo pin.

Evidence reuse

Reuse hashes product code, tests, schemas, authentication/policy, build inputs, the requirement inventory and evidence tooling. Workflow job execution inputs include static/reusable call arguments, runner declarations, timeouts, environments, build steps and evidence-generation steps. Only scheduling edges and matrix fan-out are omitted from this comparison. A runner or verifier change therefore requires new evidence even when a job keeps its display name.

Original successful child-job manifests remain immutable and retain their source SHA, demo pin, run, attempt and archive digest. A newer compatible failed, cancelled or artifact-less attempt blocks fallback to older success. Missing proofs remain pending. Source-only checks never substitute for runtime proof.

Publication handoff

For v0.4.23, scripts/release-handoff.py permits only the final changelog, roadmap, release index, release notes and release audit prose to change after validation. Workflow, runtime-image, verifier, build, policy/auth, contract, consumer pin and test changes are execution changes and require revalidation. The release publisher derives its required count from the tag's inventory and re-authenticates the approved evidence origins.

Integration completion boundary

The three Core-only static integration jobs are wired to the candidate-owned pending requirement list. They check public schema/type drift, shared organization configuration/policy resolution, and HTTP/browser-origin/terminal contracts with race detection. Their original JSON test logs and requirement-bound manifests are retained for 90 days. Empty or skipped test selections cannot produce a successful manifest. Their qualification scope is Core source contracts; they do not establish an actual browser/issuer/PTY or remote lifecycle journey.

The remote Docker/Podman and live Console jobs are scheduled; their complete production qualification remains pending. Planning refuses to omit required integration origins. Consumer verification authenticates exact-source push runs, their latest attempts, qualification jobs, artifact archives and production-scope receipts. Partial/test-authority receipts and newer failed attempts prevent approval. Console/Connector source and build pins bind each integration proof to the exact Core and Demo candidate. No v0.4.23 tag is authorized by this document.

Both companion repositories are public. The active pin configuration is docs/releases/v0.4.23.consumer-pins.json, selected by BASEHARBOR_PUBLIC_EVIDENCE_FILE, using baseharbor.consumer-evidence-pins/v1. GitHub Actions supplies its ordinary github.token as GH_TOKEN. The verifier independently requires public repository visibility before reading source, Actions metadata and digest-bound archives. No custom private-evidence secrets are required for this topology. The public access preflight has passed; that access result does not qualify incomplete product journeys.

The gates map binds each required consumer role to its trusted repository, exact commit and .github/workflows/release-integration.yml. Public integration manifests contain consumer_commitments: SHA-256 commitments of those canonical JSON bindings. Credentials and protected runtime payloads are excluded.

Each qualification job is named Integration ยท <full gate id> and retains a root manifest.json in private-integration-<gate with slashes replaced by hyphens>-<run>-<attempt>. The existing baseharbor.private-integration-evidence/v1 schema and artifact names remain compatible despite public repository visibility. The receipt binds repository, consumer/Core/demo commits, role, gate, workflow run/attempt, job and build digest. It requires successful execution and owned cleanup, explicit production authority, release eligibility and every gate-specific qualification. The trusted producer and complete native Application journeys still need qualification; primitive/read/terminal/provider receipts cannot satisfy this release boundary.

Core installation qualification

The #810 addition requires two explicit runtime proofs: integration/docker/core-bootstrap and integration/podman/core-bootstrap. They verify Core-only setup without a repository, both machine-role defaults, mandatory SQL/Secrets/Identity readiness, stable installation identity on retry, protected credential output and owned cleanup. Their runtime host must actually report rootless mode; source-only tests or skipped acceptance tests cannot approve these requirements. Original JSON test logs are retained for 90 days. The runtime tests retain actual per-service and simultaneous Core memory samples, native image IDs/limits, host memory/swap/PSI, a sampled startup/convergence peak and an idle window stable within 10% for at least 30 seconds. Native runtime memory/cache accounting and observation timestamps are explicit; these are topology-specific observations, not a universal minimum.

This addition does not qualify resource calibration, private consumers or remote application lifecycle. Those proofs remain independently required before release.

Authenticated consumer gate scheduling

The public pre-release workflow schedules all three consumer-dependent gates: integration/docker/remote-target, integration/podman/remote-target and integration/static/live-console. These verification jobs do not start additional runtime runners. They authenticate the trusted producer's exact source, newest push run and attempt, qualification job, archive digest, complete production journey and successful owned cleanup. A source-only or partially qualified receipt fails the gate. Final approval independently authenticates the same origins.

The public pin file and normal workflow token are the active access path. The optional private-repository compatibility path accepts either owner-only BASEHARBOR_PRIVATE_EVIDENCE_FILE or BASEHARBOR_PRIVATE_EVIDENCE_JSON, using baseharbor.private-evidence-pins/v1 and BASEHARBOR_PRIVATE_EVIDENCE_TOKEN. Exactly one configuration source is allowed. Private identifiers and archives remain excluded from public evidence. A failed rerun removes stale successful receipts and retains a safe failure code.

A dedicated Source Preflight checks source and Actions access without granting release approval. The current public configuration also downloads a digest-bound archive to verify actual evidence access. Ordinary source branches do not require private credentials. Complete trusted producer journeys and final source pins remain prerequisites for release.