Skip to main content

scripts/

Helper scripts for local development, CI, and maintainer release automation.

Normative release policy: ADR-0009, ADR-0010. Runbook: release-pipeline.md.

Quick start

GoalCommand
Publish a full releasepython scripts/publish_release.py --align-develop
Dry-run the release flowpython scripts/publish_release.py --dry-run --bump patch
Bump only (manual path)python scripts/bump_release.py --yes
Check branch CI before tagpython scripts/verify_release_ready.py --ref release/X.Y.Z --wait
Check tag CI before promotepython scripts/verify_release_ready.py --ref vX.Y.Z --profile tag --wait
Tag after branch CI is greenpython scripts/tag_release.py --ref release/X.Y.Z --wait
Check [web:NNN] tags vs mappingpython scripts/check_web_source_tags.py or a2c web-sources check
Fetch mapped web sources (ADR-0012)python scripts/fetch_web_sources.py or a2c web-sources fetch
Recover mapping gaps (report only)python scripts/recover_web_sources.py or a2c web-sources recover
Fetch to separate sources repopython scripts/fetch_web_sources.py --archive-backend git --sources-repo PATH
Fetch to S3/MinIOpython scripts/fetch_web_sources.py --archive-backend s3 --s3-uri s3://bucket/prefix

Set GITLAB_TOKEN (or GITLAB_SYNC_TOKEN) for GitLab API polling. In GitLab CI jobs, CI_JOB_TOKEN is used automatically.

Web source policy: ADR-0011, rules/15-web-source-tags.md.

Runnable scripts

Entrypoints you invoke from the shell (or from CI). Maintainer = human operator; AI = agent-driven release or maintenance; CI = run from .gitlab-ci.yml (optional = allow_failure job).

ScriptPurposeMaintainerAICI
publish_release.pyEnd-to-end ADR-0009/0010 release orchestration
bump_release.pyPropose/apply version bump and changelog finalization
verify_release_ready.pyPoll GitLab until branch or tag CI gates pass
tag_release.pyVerify branch CI, create and push annotated tag
verify_release_version.pyAssert tag matches VERSION and package versions
registry_publish.pySelect TestPyPI rcU / assert PyPI slot available
build_packages.pyBuild lockstep wheels/sdists (--publish-version for TestPyPI rc)
build_a2c_cli_binary.pyPyInstaller a2c binary
build_a2c_tui_binary.pyPyInstaller a2c-tui binary
smoke_install_packages.pyInstall/smoke wheels or index versions
smoke-ollama-decompose.shLive Ollama integration smoke (Linux)opt
smoke-ollama-decompose.ps1Live Ollama integration smoke (Windows)
setup-dev.shInstall dev deps and git hooks (Unix/Git Bash)
setup-dev.ps1Install dev deps and git hooks (Windows)
fix-git-ssl.ps1Local Git SSL workaround (called from setup)
generate_tui_screenshots.pyRegenerate TUI SVG screenshots for docs
sync_task_fixture_json.pySync task workflow fixture JSON from markdown
check_web_source_tags.pyLint [web:NNN] tags against docs/web-source-mapping.md
fetch_web_sources.pyFocused fetch of mapped URLs into sources/web/ + index
recover_web_sources.pyReport mapping gaps; point to recovery prompt

Import modules

Not run directly — imported by runnable scripts, build tooling, or tests.

ModulePurposeUsed by
release_version.pyRead/write VERSION, __version__, package pinsbump_release.py, build_packages.py, verify_release_version.py
release_refs.pyrelease/X.Y.Z and tag naming helpersbump_release.py, publish_release.py, verify_release_ready.py, tag_release.py
release_ci_gates.pyRequired GitLab job lists (branch vs tag)verify_release_ready.py
gitlab_api.pyMinimal GitLab REST API clientrelease_ci_gates.py
web_source_mapping_lib.pyParse docs/web-source-mapping.mdcheck_web_source_tags.py, fetch_web_sources.py
web_robots_lib.pyrobots.txt allow/deny checks for fetcherfetch_web_sources.py
web_archive_backends.pyLocal, git-sources, and S3 archive backendsfetch_web_sources.py
a2c_cli_entry.pyPyInstaller entrypoint for CLIbuild_a2c_cli_binary.py
a2c_tui_entry.pyPyInstaller entrypoint for TUIbuild_a2c_tui_binary.py

Planned layout

Future subfolders are described in release-orchestration.md. Until migration, all entrypoints remain at scripts/ root for stable paths in ADRs and CI.