AIssistLab

V1 Ship Checklist

Use this checklist to keep the final V1 release pass scoped to the Claude-first local app. It separates Codex-controlled gates from device/account checks that must stay manual.

Scope Boundary

V1 includes the current Skill Workshop RAG app: Settings, Skills, Editor, Guided Builder, Chat, Export, Setup Doctor, V1 Release Readiness, sanitized diagnostics, and Manual QA Evidence.

V1 does not include the V2 provider registry, new AI provider adapters, hosted local-CLI auth, automatic login, automatic generation, broad device scans, or automatic changes to Claude Code configuration.

Batch 1: Release State Sync

Evidence:

npm run audit:docs
git diff --check

Batch 2: Automated QA Coverage Sweep

Evidence:

npm run smoke:local
npm run smoke:production
npm test

Batch 3: Privacy And Local-Safety Hardening

Evidence:

npm run verify:release

Batch 4: V1 UX Release Polish

Run this batch only for issues found during Batch 2 or Batch 3. Keep changes V1-only and scoped to current screens.

Batch 5: Release Automation And Cleanup

Evidence:

npm run cleanup:project:dry-run
npm run cleanup:artifacts:dry-run
npm run verify:release
npm run release:evidence -- --gate-result passed
git status --short --branch

Before manual QA is complete, npm run release:draft -- --tag v1.0.0 --dry-run should fail and report that issue #3 is still open. Treat that as the expected guard behavior, not a release failure.

If manual QA is intentionally skipped, use only an automated-only draft prerelease tag:

npm run release:draft -- --tag v1.0.0-rc.1 --manual-qa-skipped

Do not describe that artifact as fully manually verified V1.

Batch 6: Final Automated Release Candidate

V1 can be called automated-ready after Batch 6. It can be called fully shipped only after the manual gates below are actually completed.

Manual Gates

These checks require the local user and must not be simulated as passed:

Record results in Settings Manual QA Evidence and keep any public notes sanitized.

After every manual gate is actually passed and issue #3 is closed, run the guarded release draft command from clean, synced main:

npm run release:draft -- --tag v1.0.0