Skip to content

0.2.0 post-release verification — 21 September 2026

This is evidence for a particular revision, not a claim about every later build. The original release preparation was completed in #62 and #64. The post-publication documentation follow-up is #77.

Revisions and publication status

Item Verified value
Requested historical baseline 272fff1a39af0ed3031eb8998c2fd17eccb91152, superseded before this audit
Audited current master df9b0085a251f57087299e9c22efb19f10ae77b3
Published source and v0.2.0 tag 31997407010d6e38f99970d0b3b319135a0d5d15
Package version 0.2.0, unchanged
Current PyPI version observed 0.2.0, published 21 September 2026
Publication during this audit None; no upload, tag or GitHub release created

PyPI already serves the Capability Compiler release, including Repository Readiness. Its public metadata identifies the original publishing commit and Trusted Publisher. Already-completed

55 stays closed; no feature is implemented or removed by this audit.

The old preparation request's assumptions that PyPI still served 0.1.3.1 and that repository readiness was future work no longer describe the repository. The maintainer confirmed that the audit should use current master instead.

Public positioning and documentation review

The former notebook-to-container identity was replaced in #64 by “Apizr is an open-source capability compiler for Python codebases.” The retained legacy pipeline is explicitly labeled and is not described as deprecated.

Surface Result at the audited revision
pyproject.toml Current compiler summary, project name/version, README, authors, GPL-3.0-or-later expression, Python bounds, truthful Python classifiers and repository/documentation/issues URLs
README / PyPI description Positioning; discover/understand/expose/govern; PyPI-first install; small example; conceptual flow; governed execution; legacy workflow; trust boundary; documentation/contributing/license
Homepage Factual compiler introduction, start/release links and discover/understand/expose/govern sections; no placeholder copy
Start here Python 3.11–3.14 installation and scan/graph/inspect/readiness/REST/MCP example without Docker; legacy path follows current workflows
Navigation All 52 Markdown pages occur in navigation; no missing targets. Primary workflows precede legacy reference; engineering records are in the archive
Release and migration notes Root changelog and docs/releases/0.2.0.md exist with the actual release date; compatibility guide explains supported Python, installed imports, output-directory/API changes and incremental adoption from 0.1.x
Site metadata Current compiler description, meaningful homepage/start-here titles and descriptions, 2023–2026 copyright, working site/repository URLs
Customization Obsolete Twitter announcement and generated overrides/main.html are absent. home.html serves the restored hero; branding CSS, bee logo, favicon and Product Hunt badge are used and retained
CLI / application metadata Top-level help leads with the compiler; inspect/scan/graph/generate/execute/readiness help succeeds. Legacy flags remain; installed CLI/application versions use package metadata
Repository hygiene No tracked wheel/sdist, cache, compiled Python or generated site/build directory. The existing editor settings and historical/golden fixtures are retained; no speculative deletions

All 30 distinct URL strings found in README, project metadata, MkDocs settings, homepage, introduction and overrides returned HTTP 200, including redirects. The required GitHub repository, documentation and PyPI entry points passed. Product Hunt redirects to the current product page; its image endpoint works. Every README Markdown link is HTTPS and absolute, including badges and images. twine check --strict passed for both published files and both audited CI files. The rendered PyPI description presents the current compiler workflows.

The wording audit classified older Python ranges in the original foundation and security records as historical evidence or explicit migration exclusions. The MCP specification's “development version” identifies a locked development dependency, not an unpublished Apizr release. No obsolete Twitter/X announcement, placeholder homepage or “source of truth until release” instruction was found in current-facing material. Historical records are unchanged.

“Experimental” remains appropriate for governed execution: tested contracts and refusal behavior do not establish a general untrusted-code service. Current README, guides and help describe trusted code, local-process limitations, OCI's non-VM boundary and the distinction between static READY and runtime safety. No maturity claim is promoted and no canonical contract or fixture is changed.

Analytics remains configured with unchecked optional consent and reject/settings controls. Its ownership/purpose decision remains in #73. This audit neither adds tracking nor repeats the earlier browser consent experiment as new evidence.

Correction resulting from this audit

The publication guide still instructed maintainers to keep 0.2.0, create v0.2.0 and publish/install that fixed version. The workflow already refuses a used PyPI version, but the text had become stale. The follow-up distinguishes the completed release from current verification builds and derives a future tag from the explicitly authorized project version. It changes no version or workflow.

The new report is linked from the engineering archive, whose purpose remains historical verification rather than primary user guidance. README, homepage, package metadata and runtime code need no additional rewrite for this finding.

Distributions and identity

The CI package job built wheel and sdist once from the audited commit, inspected them and installed the same wheel outside checkout on Python 3.11 and 3.14. Both archives were downloaded and independently inspected again in this audit: 193 wheel files and 194 sdist files. Runtime Python/templates, README metadata and license are present; repository-only tests, caches, build outputs, local absolute paths and private-key markers are excluded by the distribution check.

Metadata Wheel and sdist, published and audited CI
Name outerspace-apizr
Version 0.2.0
Summary Compile Python codebases into discoverable, typed and governable capabilities.
Requires-Python >=3.11,<3.15
License-Expression GPL-3.0-or-later
Project-URL Repository, Documentation, Issues; all verified
Requires-Dist 12 declarations; audited CI requirements match pyproject.toml semantically
Long description text/markdown; CI content matches the audited README

The runtime source and uv.lock are unchanged between the published tag and this master. Subsequent documentation/build-policy changes mean the distribution bytes differ despite sharing the same package version. Never substitute the later files or their attestations for the original published files.

File Original PyPI SHA-256 Audited CI SHA-256
outerspace_apizr-0.2.0-py3-none-any.whl ca9e2bd360dc0f0b2ffd855a0630e09da06ef51e7c4f82de7a677b0e56ac2230 213d03ad44c4101826477d22daeef00c74177d62a04ecde72914e255d1df68ad
outerspace_apizr-0.2.0.tar.gz 7359de134b7ab67b58888758b8b916283fdd2740b453be2c8af699a4cbf8c6fa 55d8ad42d331676c3cf7e949a26feacb9c0af2512364943e3fdc4a5686090781

The public files were downloaded and matched PyPI's SHA-256 values. A local uv build from a clean git archive export of the audited master produced the same two hashes as CI. This is one observed reproduction, not a general guarantee across arbitrary build-tool versions or environments. No rebuilt file was uploaded.

GitHub provenance verification passed for both CI distributions and their ci-evidence.tar.gz, enforcing the repository, CI workflow identity, exact source digest and refs/heads/master. The signed evidence contains the source/lock, universal runtime/validation SBOMs and structured validation reports. These are GitHub/Sigstore attestations, not the outstanding RFC 3161 Attest receipt.

Verification results

The full matrix ran on clean GitHub Actions checkouts of the exact audited master, rather than on the historical baseline or the original release tag:

These successful runs were reused and their artifacts inspected; this audit does not describe the entire Linux/OCI matrix as locally rerun. Local additional checks used a clean source export, archive inspection, rebuild, strict Twine validation, fresh installed-wheel smoke and public URL checks. The documentation follow-up has its own strict build and PR gates.

Release-readiness item Result and evidence
Version 0.2.0, unchanged
PyPI current 0.2.0, already published
Package metadata/content PASS — wheel and sdist independently inspected
README/PyPI rendering PASS — strict Twine on published and CI distributions; absolute README links
Docs build PASS — strict build on audited commit; links and anchors checked
Ruff / Pyright / pre-commit PASS — quality job; strict Pyright scopes retained for compiler/runtime packages, standard mode for the remaining legacy code
Python 3.11 PASS — 1,500 passed, 38 skipped; 90.87% branch-aware coverage
Python 3.12 PASS — 1,500 passed, 38 skipped; 90.99%
Python 3.13 PASS — 1,500 passed, 38 skipped; 90.99%
Python 3.14 PASS — 1,500 passed, 38 skipped; 90.65%
macOS 3.11 / 3.14 PASS — each 1,499 passed, 39 skipped; 90.93% / 90.74%
Wheel install PASS — CI Python 3.11/3.14 and an additional fresh local Python 3.14 install outside checkout
Legacy pipeline PASS — installed notebook smoke and Linux container matrix 3.11–3.14
REST/MCP PASS — installed direct/governed standalone generation and runtime, Python/notebook inputs
Scanner/Graph/Readiness PASS — installed repository-first/artifact-first parity and README example
OCI isolation PASS — 200 dedicated tests plus 7 repeated-sample cases; 99.64% combined coverage
Security mutations PASS — green baseline and all 17 targeted mutants killed
Dependency audit PASS — runtime 72, development 57, documentation 30, security tooling 29 resolved entries; zero known findings in each scope
CodeQL PASS — explicit Python and default Python/Actions analyses
Provenance PASS — isolated signing job and independent subject/source/identity verification
New publication of these 0.2.0 builds BLOCKED intentionally — version already exists; not authorized or attempted
Complete audit/policy parity NOT COMPLETE — outstanding #73 decisions and work remain

The 38 ordinary-suite skips cover dedicated OCI checks; macOS additionally skips the non-UTF-8 filesystem case. Repeated OCI samples do not add independent unique test coverage and the dedicated suite overlaps the ordinary suite. Counts must not be summed into a misleading number of distinct tests.

All existing floors passed. The following ranges span Linux Python 3.11–3.14; OCI rows use the dedicated job:

Package or scope Observed coverage Required floor
Global 90.65–90.99% 90%
Capability IR 99.40–99.43% 90%
Static readiness 98.88–98.92% 90%
REST generator 98.80–98.90% 90%
MCP generator 97.06–97.17% 90%
Interface contracts 96.86–97.03% 90%
Execution 96.12–96.21% 90%
Governed transports 98.68–98.71% 90%
Repository scanner 99.17–99.22% 90%
Capability graph 97.84–98.78% 90%
Repository readiness 99.14–99.20% 90%
Readiness/repository CLI and worker/supervisor/protocol subsets PASS in every matrix job 90% each
Legacy modules 59.56–59.91% 59.5%
OCI / governed OCI 99.27% / 100% 90% each; Docker/provider/supervisor subset also passed

No gate or coverage threshold was lowered. Dependency findings are a dated audit result, not a promise of future vulnerability absence or a reviewed license inventory.

Subsequent PR verification incident

The first CI attempt for the documentation follow-up #78, on commit 0a92ab60aa76a7a0e31e3e4fda043501a1e107de, failed one existing Python 3.14 test: test_ordinary_descendant_is_stopped_with_worker. The timeout and unchanged heartbeat assertions passed, but ps still reported D instead of an absent process or zombie. The result was 1 failed, 1,499 passed and 38 skipped; all other required jobs passed. See attempt 1.

Runtime code and tests were unchanged from the successful baseline above. A delayed process-state observation is a hypothesis, not a confirmed root cause; the log does not establish whether the descendant later terminated. The incident is tracked independently in #79. The unchanged Python 3.14 job passed its single targeted rerun, attempt 2. No test or threshold changed. That success alone does not resolve the finding or prove that a nonterminal state is acceptable. The dated baseline results must not conceal the subsequent failed observation.

Issue classification and remaining decisions

Issue Classification Disposition
#77 Release documentation correction Fixed by this follow-up; issue closes only when its PR merges
#79 Unresolved verification finding Ordinary-descendant termination observation failed in the documentation PR's first Python 3.14 run; diagnose before claiming reliable cleanup verification
#73 Evidence/maintenance gap Remains open; blocks claiming complete audit parity. RFC 3161 receipt, reviewed license inventory/automation, response/disclosure/DCO decisions and Analytics ownership/purpose remain unresolved
#49 Known execution limitation Absolute subprocess denial unsupported; policies requiring it must be refused
#28 Known legacy bug Duplicate definitions/overloads remain inconsistent; not claimed fixed by modern contracts
#5 Known scope limitation / future feature Class and method capabilities remain outside the supported contract
#63 Future dependency-layout work Full notebook/web dependencies remain installed for static workflows
#16 Legacy requirement gap Complex-notebook configuration needs a representative case and separate work
#15 Future extensibility work Plugin/extension architecture not introduced
#1 Legacy acceptance tracking Historical packaging/deployment acceptance criteria remain open
#55 Completed feature Already closed before this audit; implemented behavior is retained

The audited master passed every technical gate, but the subsequent PR exposed the unresolved verification finding in #79. This report is not an unconditional release-readiness declaration. The open issues are real limits: passing the documented path does not resolve them or authorize a new release. In particular, this audit cannot declare full #73 completion or license policy parity. No release issue or limitation is closed merely because it is old.

Trusted Publishing was used for the existing release, as recorded by PyPI. The future release procedure still requires checking the live publisher and protected environment configuration before dispatch; this audit does not claim a fresh inspection of the private PyPI account settings. Publication remains manual, tag-bound and OIDC-based, reusing exact reviewed distributions without a rebuild.

Reproduce the evidence review

The following read-only downloads and local checks identify the exact audited revision and artifacts. They do not dispatch publication:

AUDIT_DIR=$(mktemp -d)
mkdir -p "$AUDIT_DIR/source"
git archive df9b0085a251f57087299e9c22efb19f10ae77b3 |
  tar -x -C "$AUDIT_DIR/source"
gh run download 35608744308 --repo Alien6-Studio/outerspace-apizr \
  --dir "$AUDIT_DIR/evidence"
gh run download 35608744234 --repo Alien6-Studio/outerspace-apizr \
  --name dependency-audit --dir "$AUDIT_DIR/security"
cd "$AUDIT_DIR/source"
uv sync --locked --all-groups
uv run --locked python scripts/check_distribution.py \
  "$AUDIT_DIR/evidence/python-distributions" --manifest "$AUDIT_DIR/verified.json"
uvx twine check --strict "$AUDIT_DIR/evidence/python-distributions/"*
uv run --locked python scripts/smoke_wheel.py \
  "$AUDIT_DIR/evidence/python-distributions/outerspace_apizr-0.2.0-py3-none-any.whl"
uv build --out-dir "$AUDIT_DIR/rebuilt"
uv run --locked python scripts/check_distribution.py \
  "$AUDIT_DIR/rebuilt" --manifest "$AUDIT_DIR/rebuilt.json"
cmp "$AUDIT_DIR/verified.json" "$AUDIT_DIR/rebuilt.json"
for artifact in "$AUDIT_DIR/evidence/python-distributions/"* \
  "$AUDIT_DIR/evidence/build-attestations/ci-evidence.tar.gz"; do
  gh attestation verify "$artifact" \
    --bundle "$AUDIT_DIR/evidence/build-attestations/build-provenance.sigstore.json" \
    --repo Alien6-Studio/outerspace-apizr \
    --signer-workflow Alien6-Studio/outerspace-apizr/.github/workflows/ci.yml \
    --source-digest df9b0085a251f57087299e9c22efb19f10ae77b3 \
    --source-ref refs/heads/master || exit 1
done

Actions artifacts have finite retention. Download them before expiration; the original release's retrospective attachment is a separate record and is not a substitute for this commit's evidence.

The exact full-suite commands, per-package thresholds, Python/container matrices, OCI image setup and signing steps are in the audited CI workflow. The corresponding Security and Documentation workflows bind the other results to the same source. Locally rerun documentation with uv run --locked --group docs mkdocs build --strict and quality hooks with uv run --locked pre-commit run --all-files after editing this follow-up.