This checklist is for maintainers preparing a source, GitHub tag, PyPI, or npm release. It is intentionally manual: R1 prepares release metadata and verification commands, but it does not publish packages automatically.
Before tagging or publishing, decide which release type this is:
- Source-only / GitHub tag release: publish the repository state and generated release notes, but do not upload packages.
- PyPI release: publish
memtraceand/ormemtrace-sdkonly after the Python build checks below pass. - npm release: publish
@memtrace/sdkand/or@memtrace/mcp-serveronly after an explicit maintainer decision to removeprivate: trueand after adding a separate package-publication plan. - Dry run: run all checks and builds without creating a tag or uploading artifacts.
R1 keeps both JavaScript packages private by default. Do not change packages/ts-sdk/package.json or packages/mcp-server/package.json from private: true, and do not add dist/, bundler, declaration emit, or automatic publish workflows unless that is explicitly approved as a separate task.
Run these from the repository root:
uv run --extra dev python -m compileall -q apps/api/app packages/python-sdk/src examples
uv run --extra dev pytest -q
npm exec --yes --package bun -- bun run typecheck
npm exec --yes --package bun -- bun test
bash scripts/check-release-hygiene.sh
uv run python -m app.benchmark.runner --output-dir reports
bash scripts/reproduce.shExpected high-level results:
- Python compileall exits 0.
- Full pytest exits 0.
- TypeScript typecheck exits 0.
- Bun tests exit 0.
- Release hygiene prints
release hygiene checks passed. - Benchmark and reproduce keep the current global deterministic acceptance at
13/13unless the benchmark suite intentionally changes in the same release.
Python package build checks:
uv build --out-dir /tmp/memtrace-build-root --package memtrace
uv build --out-dir /tmp/memtrace-build-sdk --package memtrace-sdkJavaScript package-shape checks:
npm exec --yes --package bun -- bun test packages/ts-sdk/test/package-shape.test.ts packages/mcp-server/test/package-shape.test.tsReview the package metadata before publishing:
- Root
pyproject.tomldescribes the current MemTrace runtime, not only the original P0 demo. packages/python-sdk/pyproject.tomluses build-safe metadata and preserves thememtraceconsole script.packages/ts-sdk/package.jsonandpackages/mcp-server/package.jsoninclude explicitexportsandfilesand remainprivate: trueunless npm publishing is approved.- No package points at generated reports, local service state, or test-only artifacts as public package contents.
Run the tracked-file and public-doc guard before tagging:
bash scripts/check-release-hygiene.shDo not commit:
node_modules/*.tsbuildinfo- npm/pnpm/yarn lockfiles
- package tarballs such as
*.tgz - generated
reports/outputs - local database/service data
- tracked
.envfiles - real API keys, bearer tokens,
sk-tokens, passwords, raw destructive production commands, or unredactedraw_payload_refvalues in public docs/examples
Synthetic redaction fixtures belong in tests or internal design documents, not in public onboarding docs.
For a source or package release:
- Confirm
git status --shortcontains only intentional tracked changes. - Confirm the release commit includes the updated roadmap and
.aiproject memory. - Draft release notes from the public-facing changes: README, user docs, package metadata, CI, release hygiene, and deterministic reproducibility status.
- Create the tag only after required verification passes.
- If a GitHub tag is wrong and has not been published broadly, delete the local tag with
git tag -d <tag>and the remote tag withgit push origin :refs/tags/<tag>. - If package metadata or build checks fail before publication, fix metadata, rerun the dry-run/build checks, and create a new release candidate commit.
- If a package is already published, prefer publishing a corrected patch version rather than rewriting public release history.
- If CI fails after tagging, do not publish package artifacts until CI is green or the failure is explicitly classified as unrelated infrastructure noise.