@@ -16,20 +16,19 @@ use the narrower validator documented in AGENTS.md.
1616Record the candidate SHA, interpreter, command, exit status and evidence. CI's
1717extra mxbai-rerank install and its Python matrix are documented in test.yml.
1818
19- ## Package gate — missing canonical command
19+ ## Package gate
2020
21- TODO: define and validate a canonical build-and-clean-room-install command in
22- AGENTS.md or Makefile, then replace artifacts.pypi.gate with its reference.
23- The owner deferred implementation to [ issue #279 ] ( https://github.com/lfnovo/esperanto/issues/279 ) .
24- The existing uv build step in publish.yml is build-only; it cannot satisfy this gate.
21+ Run ` make package-check ` . The command builds fresh wheel and sdist artifacts in
22+ a temporary directory, checks their metadata and packaged runtime files, and
23+ records SHA-256 identities. It installs the wheel outside the checkout with
24+ isolated Python, verifies a bare import and credential-free factory discovery,
25+ then builds a second wheel from the sdist and repeats the clean-room smoke. It
26+ also resolves the ` transformers ` and ` validation ` extras independently. The
27+ existing uv build step in publish.yml is build-only and cannot satisfy this gate.
2528
26- The gate must build wheel and sdist into a clean output location, check metadata
27- against the candidate version, inspect packaged assets, install the wheel outside
28- the checkout with isolated Python imports, import Esperanto and exercise a
29- credential-free public API call. Confirm optional dependencies stay optional and
30- that both transformers and validation extras resolve. Verify the sdist can build
31- an installable wheel. Record SHA-256 identities and actual module origins.
32- No package-gate pass or release GO is possible until this evidence exists.
29+ Capture the command output as release evidence. It includes the interpreter,
30+ artifact identities and actual module origins. A package-gate pass applies only
31+ to those exact locally built artifacts and candidate revision.
3332
3433## Bucket C — maintainer-run integrations
3534
@@ -68,8 +67,19 @@ Publish rebuilds the artifacts: distinguish tested local builds from index build
6867If creating GitHub release notes, attach approved notes to the existing tag and
6968verify the release page; publish.yml does not create a GitHub Release itself.
7069
71- TODO: document canonical index-install verification commands alongside the package
72- gate. This verification completes publication; it cannot run before publication.
70+ Install the exact published version outside the checkout with:
71+
72+ ``` bash
73+ check_dir=" $( mktemp -d) "
74+ cd " $check_dir "
75+ uv run --isolated --no-project --with " esperanto==<version>" \
76+ python -I -c ' import esperanto; print(esperanto.__file__)'
77+ ```
78+
79+ Repeat with ` esperanto[transformers]==<version> ` and
80+ ` esperanto[validation]==<version> ` , download the wheel and sdist from PyPI, and
81+ record their SHA-256 identities. This verification completes publication; it
82+ cannot run before publication.
7383
7484## Cleanup
7585
0 commit comments