Skip to content

Commit 0a53b3e

Browse files
committed
Document package release readiness
1 parent e8b54ed commit 0a53b3e

3 files changed

Lines changed: 86 additions & 1 deletion

File tree

docs/NPM_RELEASE.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,25 @@ npx intentprobe --help
4141
Only after the package is live should the root README advertise `npx
4242
intentprobe ...` as the primary install path.
4343

44+
## Local gate status seen on 2026-06-08
45+
46+
Passed:
47+
48+
- `INTENTPROBE_PYTHON=.venv/bin/python node npm/bin/intentprobe.mjs --help`
49+
- `npm --prefix npm run check`
50+
- `npm --prefix npm run pack:dry`
51+
- `npm publish ./npm --dry-run`
52+
53+
Observed but time-bound:
54+
55+
- `npm view intentprobe name version dist-tags --json` returned `E404` on
56+
2026-06-08. Treat this as a local check, not a durable public claim about name
57+
availability.
58+
4459
## Auth blocker seen locally
4560

4661
`npm whoami` returned `ENEEDAUTH`, so publishing needs an npm login or npm
4762
automation token before this can go live.
63+
64+
The dry-run publish can still show the package tarball and publish target, but
65+
the real publish requires npm auth.

docs/PYPI_RELEASE.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# PyPI Release Notes
2+
3+
IntentProbe's Python package is the primary scanner package. The npm package is
4+
a thin launcher that depends on this package being available first.
5+
6+
## Package
7+
8+
- PyPI package name: `intentprobe`
9+
- current version: `0.1.0`
10+
- Python: `>=3.10,<3.14`
11+
- entry points: `intentprobe`, `intentprobe-hook`
12+
13+
## Local build gate
14+
15+
The release wheel should be built from a freshly extracted sdist, not directly
16+
from the live repo checkout. The repo may have an ignored `build/` directory,
17+
and a direct wheel build can accidentally reuse stale files.
18+
19+
The local release gate was run on 2026-06-08:
20+
21+
- `python -m build --sdist` from the repo: passed.
22+
- extract `intentprobe-0.1.0.tar.gz`, then `python -m build --wheel`: passed.
23+
- `twine check` on sdist and wheel: passed.
24+
- `check-wheel-contents`: passed.
25+
- wheel contains `metadata.json`, `probe_weights.npz`, `targets.py`, and entry
26+
points.
27+
- sdist contains release docs, runtime docs, operator decision docs, evidence
28+
packet, examples, research fixtures, and scanner artifact.
29+
- no-deps wheel smoke import passed: package version `0.1.0`, metadata file
30+
present, probe weights present.
31+
32+
## Registry status seen locally
33+
34+
On 2026-06-08, `python3 -m pip index versions intentprobe` returned no matching
35+
distribution. Treat that as a time-bound check, not a durable public claim. The
36+
name can change before publish.
37+
38+
## Publish command
39+
40+
After PyPI auth is configured:
41+
42+
```bash
43+
. /tmp/intentprobe-release-paths.env
44+
/tmp/intentprobe-release-tools/bin/python -m twine upload \
45+
"$sdist_dist"/intentprobe-0.1.0.tar.gz \
46+
"$wheel_dist"/intentprobe-0.1.0-py3-none-any.whl
47+
```
48+
49+
Do not upload from old `dist/` files unless they were rebuilt during the same
50+
release gate.
51+
52+
## Post-publish verification
53+
54+
```bash
55+
python3 -m pip index versions intentprobe
56+
python3 -m venv /tmp/intentprobe-pypi-smoke
57+
/tmp/intentprobe-pypi-smoke/bin/python -m pip install --upgrade pip
58+
/tmp/intentprobe-pypi-smoke/bin/python -m pip install intentprobe
59+
/tmp/intentprobe-pypi-smoke/bin/intentprobe --help
60+
/tmp/intentprobe-pypi-smoke/bin/intentprobe doctor --pretty
61+
```
62+
63+
After PyPI is live, publish npm and then update the root README to advertise
64+
the simpler `pipx install intentprobe` and `npx intentprobe ...` paths.

docs/RELEASE_CHECKLIST.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,16 @@ cd "$sdist_src"/intentprobe-0.1.0
8585
python3 -m zipfile -l "$wheel_dist"/intentprobe-0.1.0-py3-none-any.whl | \
8686
rg 'probe_weights|metadata.json|targets.py|entry_points'
8787
python3 -m tarfile -l "$sdist_dist"/intentprobe-0.1.0.tar.gz | \
88-
rg 'probe_weights|metadata.json|targets.py|SECURITY.md|SAMPLE_REPORTING|RELEASE_CHECKLIST|RUNTIME_HOOKS|OPERATOR_DECISIONS|EVIDENCE_PACKET|runtime_toy_agent'
88+
rg 'probe_weights|metadata.json|targets.py|SECURITY.md|SAMPLE_REPORTING|RELEASE_CHECKLIST|RUNTIME_HOOKS|OPERATOR_DECISIONS|EVIDENCE_PACKET|PYPI_RELEASE|runtime_toy_agent'
8989
```
9090

9191
Build the release wheel from the freshly extracted sdist. The repo can have an
9292
ignored `build/` directory from setuptools, and direct local wheel builds may
9393
reuse stale `build/lib` contents.
9494

95+
PyPI notes: [docs/PYPI_RELEASE.md](PYPI_RELEASE.md)
96+
npm notes: [docs/NPM_RELEASE.md](NPM_RELEASE.md)
97+
9598
## Hygiene
9699

97100
```bash

0 commit comments

Comments
 (0)