GitHub

Experimental migration-decision bundle

Who this is for: maintainers running an nWave release. It records how to package and attach the experimental migration-decision bundle to a transport release. Normal users can skip this page entirely.

Before dispatching the experimental publisher, create a directory containing decision.json and every file named by its relative {file, sha256} references: the candidate wheel, evidence, upgrade-proof record, checkpoint documents, and their retained command or result bytes. Package that directory without a parent directory as experimental-migration-decision.zip.

Create a transport release targeted at the exact candidate commit, then upload the bundle. The migration-evidence- prefix is deliberately not a v* product release tag, and that prefix is what keeps this record out of the product release sequence.

TAG=migration-evidence-<candidateSHA>
gh release create "$TAG" --target <candidateSHA> --title "$TAG"
gh release upload "$TAG" experimental-migration-decision.zip
gh workflow run publish-experimental.yml --ref atdd_pure_staging \
  -f migration_decision_release_tag="$TAG"

The workflow downloads, safely extracts, and validates this exact bundle before smoking the wheel and invoking the writer.

Do not make it a draft. This instruction said --draft until 2026-09-11 and described the draft as private transport. That was unworkable: a draft carries no git tag and is invisible to a read-scoped token, so the publisher answered release not found for a release that was present, tagged and correct. The publisher reads the bundle with its own token, and contents: read suffices for a published release.

The candidate wheel ships only the AST and TextSearch code-fact providers. The source checkout's optional indexed provider and its generated index are not public wheel assets. Check the built wheel, not only the source tree, before attaching it to the decision bundle.