Automated Public Release

July 24, 2026 ยท View on GitHub

MindLab-Research/longstraw-alpha is the private collaboration repository. The matching public snapshot is MindLab-Research/longstraw. Publication is performed by the organization mindlab-bot; project members do not push the public repository directly.

Release workflow

The checked-in workflow is the canonical Release to Public workflow. It runs on the organization self-hosted runner, derives the project name by removing -alpha, clones mindlab-bot, and invokes its release skill. It supports both pushed v* tags and manual dispatch with a tag name and optional force flag.

The repository mapping is registered centrally as:

private: MindLab-Research/longstraw-alpha
public:  MindLab-Research/longstraw

The runner owns the bot token and SSH key. Credentials are never checked into this repository or passed from a developer workstation.

Normal release

Prepare and bind the source tree first. The binding commit must change only evidence/manifest.json:

git checkout main
git pull --ff-only
python3 scripts/check_release_tree.py
python3 scripts/check_release_tree.py --update-manifest
git add evidence/manifest.json
git commit -m "chore: bind release evidence manifest"
git push origin main

Then create the next version tag and push it:

git tag -a v0.2.1 -m "LongStraw v0.2.1"
git push origin v0.2.1

The tag push starts Release to Public. No direct push to the public repository is needed.

Verify publication

Check the private workflow first:

gh run list --repo MindLab-Research/longstraw-alpha \
  --workflow "Release to Public" --limit 5
gh run view RUN_ID --repo MindLab-Research/longstraw-alpha --log-failed

Then verify the public branch and tag:

git ls-remote https://github.com/MindLab-Research/longstraw.git \
  main refs/tags/v0.2.1
gh api repos/MindLab-Research/longstraw/commits/main \
  --jq '.commit.author.name'

The public commit author should be mindlab-bot. The public snapshot must not contain .github/; the private workflow is an internal publication mechanism.

Re-publication

Use a force release only when correcting an already-published snapshot or replacing an erroneous public history. Move the private tag explicitly and push the tag with force:

git tag -f v0.2.1 BOUND_COMMIT
git push -f origin refs/tags/v0.2.1

The workflow detects the tag update and passes --force to the release skill. Do not force-move a tag for an ordinary content update; publish a new version.

Signed artifacts

docs/release-signing.md and the offline bundle tooling describe a separate NVIDIA trust workflow for environments that require signed artifacts. They do not replace the organization-level Release to Public path for the public repository.