Release readiness means the current head is proven, not assumed.

Local checks

uv run pytest -q
uv run ruff check src tests
uv lock --check
bash -n setup.sh install.sh
bash -n scripts/build_menu_bar_app.sh
uv build --sdist --wheel

Runtime checks

Run a mock smoke when backend availability is not part of the change:
USE_MOCK_CLIENT=true LIVE_LISTENING_ENABLED=false LIVE_SPEECH_ENABLED=false uv run python src/main.py
Run a real Ollama smoke when backend/model behavior is part of the claim.

Certification

uv run python scripts/certify_voice_to_computer.py
Add physical checks before claiming physical microphone certification:
uv run python scripts/certify_voice_to_computer.py --include-physical --human-phrase "human microphone release test"

Docs

cd doc
MINTLIFY_TELEMETRY_DISABLED=1 npx -y mint@4.2.565 validate --disable-openapi
MINTLIFY_TELEMETRY_DISABLED=1 npx -y mint@4.2.565 broken-links
MINTLIFY_TELEMETRY_DISABLED=1 npx -y mint@4.2.565 export --disable-openapi --output ../docs-export.zip
cd ..
rm -rf _site
mkdir -p _site
unzip -q docs-export.zip -d _site
cp install.sh _site/install.sh
node doc/scripts/prepare-github-pages.mjs _site /eyra
Mintlify 4.2.565 rejects Node 25+. Use Node 24 LTS or another supported LTS runtime for release docs checks. Review docs for:
  • Current default model and settings.
  • GitHub Pages deploys are explicitly guarded with EYRA_DEPLOY_PAGES=true; private forks should leave the variable unset unless Pages is configured.
  • Installed config precedence: ~/.config/eyra/.env first, repo .env only for Eyra source checkouts, process env last.
  • Local-first privacy contract.
  • Optional capability gates.
  • Installer safety checks and allowed install directories.
  • Homebrew formula status: public tap formula with a tagged release asset and pinned sha256.
  • eyra setup, eyra doctor, eyra paths, eyra update, and eyra uninstall behavior.
  • Menu bar install reality: eyra menu --json --check reports app-bundle, source-swiftpm, package-resource, or unavailable mode. Normal install docs lead with eyra menu only when the app bundle is installed.
  • Commands and Web endpoints.
  • Certification limits.
  • No private prompt/spec/control-plane files.
  • No .env, prompt/spec/control-plane files, SQLite databases, diagnostic audio, screenshots, release artifacts, secrets, or local identity fixtures beyond approved public project metadata.

Public surface

Before push or release:
  • Check git diff.
  • Check git status --short --branch.
  • Run a secret scan when public release scope requires it.
  • Confirm branch target is main for this repo unless changed upstream.
  • Keep physical or environment-specific gates clearly labelled.