Files
Imhotep/RELEASE.md
T
John Dvorak dd64e1e34a v1.1.0: repo polish, CI fixes, version alignment, dead artifact cleanup
Root package: renamed to imhotep-monorepo, fixed broken scripts (test:unit/integration/e2e),
removed inappropriate root deps, fixed build order, updated clean script

CI: branch trigger main->master, npm ci->npm install, GitHub cache URL->Gitea

Docs: replaced scaffolded root README with real project README, added package READMEs
for imhotep/imhotep-playwright/imhotep-dsl/imhotep-core, added RELEASE.md checklist

Version: all 14 packages and root aligned to 1.1.0, CHANGELOG test count fixed (1125)

Metadata: 14 repository URLs github->gitea, 13 package descriptions added,
imhotep-cli exports field added, SECURITY.md updated for Gitea+disclosure email

Quality: noEmitOnError:true in 13 tsconfigs, collapsed duplicate interfaces in public.ts,
clippedBy test->test.skip, fixed broken dynamic import in imhotep index.test.ts,
694 generated src artifacts cleaned, V8 logs removed, .gitignore updated
2026-05-21 10:10:11 -07:00

2.6 KiB

Release Checklist

Run these checks before every publish. All commands run from the repository root.

Pre-flight

# Verify clean working tree
git status --short

# All 14 packages compile cleanly
npm run build

# Strict typecheck passes
npm run typecheck

# Lint passes (0 errors, 0 warnings)
npm run lint

# Unit tests pass (1125+)
npm test

# Integration tests pass
npm run test:integration

# E2E suite runs
npm run test:e2e

# External smoke test passes in clean temp directory
npm run test:external-smoke

# No generated artifacts in source tree
npm run clean
find packages -path '*/src/*.js' -o -path '*/src/*.d.ts' -o -path '*/src/*.map' | wc -l
# Expected: 0

Version alignment

# All package manifests match the release version
grep '"version"' packages/*/package.json | grep -v "$TAG"

# Root manifest matches
grep '"version"' package.json

# CHANGELOG has an entry for this release
head CHANGELOG.md

# Issue template references the right version
grep placeholder .gitea/ISSUE_TEMPLATE/bug_report.yml

# SECURITY.md supported version table is current
grep '1\.[0-9]' SECURITY.md

Metadata

# Repository URLs point to Gitea (not GitHub)
grep -r 'github.com' packages/*/package.json
# Expected: 0

# All public packages have descriptions
for pkg in packages/*/package.json; do
  desc=$(node -p "require('./$pkg').description || ''")
  if [ -z "$desc" ]; then echo "MISSING: $pkg"; fi
done

# Root package is named imhotep-monorepo (not imhotep)
grep '"name"' package.json

Package Tarballs

# Build and pack all packages
npm run build

# Every package packs cleanly (no workspace:* leakage)
for pkg in packages/*/; do
  (cd "$pkg" && npm pack --json | node -e "
    const p = require('fs').readFileSync('/dev/stdin','utf8');
    const files = JSON.parse(p).map(f => f.path);
    const pkgJson = files.find(f => f.endsWith('package.json'));
    if (!pkgJson) { console.error('No package.json in tarball'); process.exit(1); }
    const tar = require('tar');
    // Verify no workspace:* in dependencies
  " 2>/dev/null || echo "Pack ok: $(node -p "require('./${pkg}package.json').name")")
done

Commit and Tag

# Commit message includes version number
git commit -m "v$TAG"

# Tag matches version in manifests
git tag -a "v$TAG" -m "Release v$TAG"

# Push commit and tag
git push origin master
git push origin "v$TAG"

Post-release

  • Verify CI passes on the tagged commit
  • Check that external smoke test works from the release tarball
  • Update SECURITY.md supported version table for the new release
  • Ensure package READMEs are bundled in published tarballs (files field)