Published MCK release acceptance
The manually dispatched Published MCK release acceptance workflow qualifies an existing CLI release on all six supported native targets. Run it after the release assets are published, with a tag containing the acceptance harness. It does not publish a release or change consumer version pins.
The workflow checks out that tag as its source and loads preparation tooling from
the workflow's own commit in a separate directory. This lets qualification fixes
test an existing release without moving its tag or rebuilding its binaries.
The preparation verifies the native archive against its
published SHA-256 file. It compiles the existing mck_run integration harness,
which also provides a native adapter replaying fixed protocol answers. The installed
CLI acquires a kit from the tag's exact full source commit. A fresh consumer Git
repository records kit/, its manifest, and an attribute rule preserving every byte.
The acquisition home, temporary files, and downloaded archive are removed before
runtime acceptance.
Before isolation, every matrix target runs transport and the kit test available
in that source tag: historical tags use runner_parity; Gherkin-only tags use
kit_steps. Tags with package support, starting at beta.3, also
run package_corpus, package_protocol and package_runner. Preparation selects
these targets from the checked-out tag's Cargo metadata and rejects a partial
package test inventory. Older tags retain their original IR-only qualification.
These source tests exercise kit steps and hostile adapter behavior on each
platform; historical tags also replay transcripts in runner_parity. Their
log is retained separately from the
published executable's runtime evidence.
The runtime copies the installed CLI, replay adapter, transcript and acquired kit into another temporary directory. It uses an empty tool path and a fresh home. The selected snapshot is mandatory: missing or malformed inputs never fall back to the embedded kit. No package manager, Cargo, Bun or external schema validator runs in this phase.
Operating-system network denial applies to the test process and its children:
- Linux runs the native test in an isolated network namespace.
- macOS runs it with a sandbox profile denying network operations.
- Windows adds an outbound block rule only on a disposable GitHub-hosted runner,
executes the native test with a ten-minute limit, and removes the rule in a
finallyblock. Never apply that workflow step to a workstation or persistent runner.
Preparation first proves that a direct TCP connection to the configured external probe works. The native test requires that same connection to fail under isolation. An unavailable isolation facility, an unexpectedly successful probe, or exceeding the runtime limit fails acceptance. There is no unrestricted fallback.
The installed CLI runs kit status, check, coverage, schema check, an adapter
run, independent report check, and HTML rendering. The harness compares the full
snapshot digest and every ordered record with a run against the checked-out source
kit, excluding only the already documented volatile duration fields. It also checks
that modifying a schema after acquisition fails manifest verification.
Starting at beta.3, the same runtime also runs all 80 package integrity and 78
resolution cases. It copies spec/package from the checked-out tag into its
temporary directory and supplies that explicit path to morphir mck package run.
This is a copied package corpus, separate from the managed IR kit; it does not
qualify package kit vendor or acquisition support. Missing or malformed package
inputs fail acceptance. Fixed recordings of the independent TypeScript adapter
provide the responses. Both runs must preserve their fixed corpus hashes, pass
every case and reproduce the complete ordered frozen reports, excluding only
driverVersion and startedAt. The baseline provenance
records the source revisions and capture procedure.
Starting at beta.4, preparation also compiles the pinned Rust package MVP adapter
from the tagged source. The isolated runtime copies it beside the downloaded
CLI and runs all 70 required local Library cases with mck package mvp-run.
mvp-report check independently verifies the full inventory and all passing
results; mvp-report render produces standalone HTML. The runtime removes one
record from a copy of the report and requires the checker to reject it. It
also runs the downloaded CLI's itest command on the signed local Library
restore and scoped-update examples. Those examples exercise explicit trust,
fresh metadata, resolution, restore, and generated provider consumption. All
inputs are copied from the checked-out tag before execution. These checks do
not replace the 80/78 historical gates.
Each matrix job uploads acquisition metadata, the network-denial result, kit status,
source and acquired-kit reports, HTML, and runtime logs. Package-capable tags also
upload package-integrity.json, package-resolution.json and package-runtime.json.
The latter records contract versions, hashes, passing counts and the network probe.
Checksums establish archive
integrity relative to the published checksum; they do not authenticate an independent
publisher. The replay proves runner behavior against fixed answers, not an independent
binding's implementation. Separate binding adoption gates remain necessary.
Beta.4 jobs additionally retain package-mvp.json, package-mvp.html,
package-mvp-negative.log, package-mvp-runtime.json and
package-examples.log. The harness copies these as it runs, so a later failure
still leaves the earlier report and command output in the uploaded artifact.
For normal development, the existing installed-CLI smoke still vendors the embedded
kit. MORPHIR_MCK_PREACQUIRED_KIT selects a previously acquired snapshot directory;
MORPHIR_MCK_INSTALLED_CLI selects the executable to test. The workflow compiles the
harness before isolation and runs its executable directly. Do not infer published or
cross-platform acceptance from a local source build passing the smoke test.
For package acceptance regressions, MORPHIR_MCK_PACKAGE_CORPUS overrides the
spec/package directory to copy and MORPHIR_MCK_PACKAGE_BASELINE overrides the
recordings/reports directory. These are test-harness inputs, not CLI configuration.
Release workflows use the checked-out tag's defaults.