Release Checklist
Follow these steps in order before tagging any release.
Public beta legal, security, and privacy gate
Complete this gate before any public beta, hosted arena, cloud battle, BYOK streaming, public profile, leaderboard, comment, like, notification, or agent/tool-execution launch.
Licensed attorney review complete A licensed attorney for the relevant jurisdictions has reviewed hosted Terms, Privacy, Cookie, Acceptable Use, Disclaimer, indemnity, liability cap, governing law, international transfer, consumer, export, and professional-use language. Record the review date and reviewer in the release issue. Maintainers must not mark this gate complete based only on AI-generated text.
Agent/tool execution controls verified Confirm least-privilege tool registration, write-class approval gates, sandbox/egress limitations, kill switch behavior, workflow-loop limits, and spending limits for the release surface. Link the evidence to the release issue.
Privacy implementation matches policy Verify prompts, outputs, attachments, logs, telemetry, BYOK records, public profiles, comments, likes, votes, leaderboards, deletion requests, retention windows, and backup exceptions match the published Privacy Policy.
Misuse and abuse controls verified Verify rate limits, spam controls, scraping limits, moderation queues, abuse-report routing, credential-leak handling, and incident escalation for public/community surfaces.
OSS compliance review complete Confirm Apache-2.0 headers/metadata are consistent, third-party licenses are compatible, generated assets have provenance, and a root
NOTICEfile is added only if required by third-party attribution or project notices.Governance decision recorded Confirm contribution provenance expectations remain sufficient or adopt DCO/CLA before launch. Confirm Code of Conduct, moderation, support, takedown, and security-reporting paths are discoverable.
Unsupported-claim scan clean Search docs and app copy for unsupported claims such as
production-ready,secure by default,safe,guaranteed,anonymous,encrypted,compliant,enterprise-ready,no data stored,zero risk,fully isolated,no data leaves, andno network calls. Replace claims with precise, qualified language or document evidence.Risk register accepted Review Public Beta Release Risk Register. Every
BLOCKERandHIGHitem must have an owner, evidence link, and explicit accept/fix/defer decision before release.All tests pass Run
pnpm nx run-many -t testand confirm zero failures across affected projects.Supabase diff is clean Run
supabase db diffand verify no untracked migrations are present.Feature flags documented Preview surfaces and their rollback steps are listed in
docs/reference/known-preview-surfaces.mdwith their intended stable target.Docs RPCs verified Every public function name referenced in docs matches an existing migration. Diff against
supabase/migrations/to confirm.CHANGELOG.md updated The unreleased section has been promoted to the new version heading with date and summary.
TR_GATE Any page with a Turkish (
/tr/) equivalent is marked stable only if the English source is stable. Draft Turkish pages must carry thedraft: truefrontmatter flag.Core reviewer approval At least one core maintainer has approved the release PR.
Tag and push
bashgit tag vX.Y.Z git push origin vX.Y.ZDocker smoke test
bashdocker compose up lf --version # must exit 0Local install smoke
bashpnpm supabase start pnpm nx run web:serve # App resolves at localhost; login page loads without errorsScheduling smoke
bashlf schedule create --workflow <id> --cron "0 8 * * *" --timezone Europe/Istanbul lf schedule list # row present with is_active=true lf schedule health # 0 missed run windowsApproval-gated run
bashlf schedule create --workflow <id> --cron "* * * * *" --require-approval # Wait one pg_cron tick (up to 60 s) lf approval list # pending entry appears lf approval approve <request_id> lf execution inspect <run_id> # status = completedLocal battle smoke
bashlf battle local init --name battle-test --task "Summarize this document in one sentence." # Add contenders before running: lf battle local add-contender A --provider anthropic --model claude-haiku-4-5 lf battle local add-contender B --provider openai --model gpt-4o-mini lf battle local run --yes # --yes skips the BYOK cost confirmation lf battle local vote --slot A # All commands exit 0; vote result written to local stateKnown-limitations page present
bashpnpm nx run docs:build ls dist/apps/docs/reference/known-limitations.html # File must exist in the build outputTrust Gateway (run when the release includes LTG / gateway / attestation / related migrations)
- Migration floor includes
supabase/migrations/20270513000001_pre_oss_gateway_security_hardening.sqland any follow-up gateway migrations in the same tag. - SQL tests: after
pnpm supabase:db:reset(or equivalent), runsupabase db test --db-url $LOCAL_DB_URLand confirmsupabase/tests/07_gateway_security.sqland08_gateway_xp_audit.sqlpass. - TypeScript:
pnpm nx run-many -t test -p gateway,infra-gateway,util-signing,util-keychain(addrepositories,cliif you touched attestation or battle submit paths). - Binaries:
pnpm nx run gateway:build,pnpm nx run gateway:build-init,pnpm nx build cli. - Offline preflight:
lf gateway doctor --check daemon,transport --jsonexits 0 (see.github/workflows/cli-smoke.yml). - Staging: inspect Postgres logs for repeated
xp.apply failedorgateway hash chain append failedduring validation; treat as release blockers per Trust Gateway release readiness.
- Migration floor includes