You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
build: publish the project as the lilrae distribution from 8.0.0 #1367
Child of #1234. aptl-labs 7.0.0 is on PyPI and is the last aptl-labs release. This issue switches the release automation to the lilrae distribution. The next release is 8.0.0, because dev has the unreleased fix!:#1269.
Work
pyproject.toml: set the distribution name to lilrae. Regenerate uv.lock and the requirements/*.txt exports with the existing hooks.
release-please-config.json: point the lockfile jsonpath at lilrae.
.github/workflows/release-please.yml: name the attestation bundle for lilrae. Pass workflow values to shell through env:, including the back-merge title.
src/aptl/core/snapshot.py: read the installed version of lilrae. Do not fall back to dev on a lilrae install.
src/aptl/appliance/versioning.py, scripts/appliance/build-seat-image.sh, appliance/guest/provision-offline.sh: select the lilrae-* wheel and its hash requirement.
src/aptl/core/assets.py and other current user-facing messages: say lilrae.
Docs: change the current install and upgrade commands to lilrae. Keep the migration and rollback section. Add the successor clause for the distribution name to ADR-062.
Keep the closed legacy aptl-labs receipt classifier in core/startup_reset_state.py, the historical evidence, and the test fixtures unchanged.
Acceptance criteria
A built wheel and sdist have the metadata name lilrae, the same import packages, commands, entry points, extras, and bundled assets as 7.0.0.
aptl reports the installed lilrae version, and snapshot evidence records it.
The seat image build and offline provisioning select exactly one lilrae wheel by hash.
Current install docs say lilrae. Migration and rollback stay documented.
The tests that cover the changed lookups and globs pass, and CI is green.
Imports, CLI commands, configuration, and runtime identities do not change.
After 8.0.0 publishes, #1234 tracks the post-release checks (clean install, migration, rollback, CLI smoke) and the archival of aptl-labs.
gc workflow phase recorded: preflight (issue #1367). Posted by the MCP server to enforce ordering between workflow steps (issue #794 MVP-2). Do not edit or delete — used by downstream tools to gate phase prerequisites.
gc workflow phase recorded: plan (issue #1367). Posted by the MCP server to enforce ordering between workflow steps (issue #794 MVP-2). Do not edit or delete — used by downstream tools to gate phase prerequisites.
Plan
The next release is 8.0.0, because fix!:#1269 is unreleased on dev. No footer and no version edit are needed. The PR title is build: …, so the PR does not compute a release by itself.
Packaging and release wiring (Path A)
pyproject.toml: name = "lilrae". Update the current install comment. Regenerate uv.lock and every requirements/*.txt export with the .pre-commit-ci.yaml lock and export hooks.
release-please-config.json: the lock jsonpath selects lilrae. package-name: aptl is the release component, not the wheel name, so it stays.
.github/workflows/release-please.yml:
name the attestation bundle lilrae-${TAG}.intoto.jsonl;
bind the tag through env: in the back-merge step;
replace gh pr create … || echo with an explicit compare, so that "dev already contains main" is the only success case without a PR. Any other failure fails the job.
Installed version and artifact selection (Path A, with tests)
core/snapshot.py: version("lilrae"). Keep the dev fallback only for PackageNotFoundError. Test: snapshot reports the installed lilrae version.
appliance/versioning.py: the default prefix is lilrae-. Add direct parser tests for a valid wheel, a legacy aptl_labs- name, a missing tag, and a bad version.
scripts/appliance/build-seat-image.sh: derive the wheel prefix and the requirement name from [project].name, with the wheel name normalized. Keep the exactly-one rule and the hash requirement.
appliance/guest/provision-offline.sh: select lilrae-*.whl. Update the seat build test that asserts the glob.
core/assets.py and the lab_init.py docstring: the recovery text names lilrae.
Provider provenance (Path A)
The bundled TechVault adapters now report distribution lilrae. Update the current-behavior assertions in test_env_pack_realization, test_scenario_verification_seam, and test_scenario_verification_artifacts.
The legacy receipt classifier, the lifecycle-cleanup fixtures, and the pip-query fixtures stay unchanged. TechVault starts record only the APTL-owned baseline clear, which does not depend on provenance, so a receipt still pending at migration finishes under lilrae.
Documentation (Path D)
Install and upgrade commands say lilrae in README, docs/index.md, installation, prerequisites, deployment, the workshop rollout, installing packs, experiment runs, the TechVault gate, the aptl_techvault README, and releasing.
The migration and rollback section stays and moves to present tense.
Historical text stays: troubleshooting history, the workshop backup-seat note, hatch_build.py history, reviews, and evidence.
Verification
Targeted pytest for snapshot, versioning, seat image build, version consistency, hashed requirements, hatch build, env-pack realization, scenario verification (with real wheel builds), docs journey, and the rename boundary. Run Vale on the changed docs. CI owns the full suite and the clean-wheel lifecycle job.
There are no requirements in scope. There is no Ground Control traceability change.
gc_codex_review — sanitized deferred publication for issue #1367, cycle 1 of 1 Reviewed revision:cf5e9ac8c6c44dd71af87e2def1bff59a9010b812eb748ba5370907ea6532b6a
Architectural read
Core: the cutover changes distribution metadata and keeps the import, command, entry-point, and runtime identities, as ADR-062's successor decision requires. The appliance writer derives the distribution name from project metadata and reuses the existing install boundary. The back-merge failure contract is incomplete, and its structural test does not run the failing path. Security: the workflow now binds the tag through the environment, and the offline install stays hash-enforced. No exploitable regression was found.
Verdict:ship-with-fixes
Findings
core-F1 — PR-list failures still silently skip the back-merge
Rationale: The gh pr list substitution runs inside an if test, where set -e does not apply. Capture it in a standalone assignment so a gh failure fails the step. Add a test that runs the step script against a stub gh and covers a list failure, an up-to-date dev, and the PR creation path.
gc_codex_review pre-push cycle 1 of 1 complete for issue #1367 on branch '1367-lilrae-distribution'. Posted by the MCP server to enforce the pre-push hard-cap-1 contract (issues #796, #804, #906). Do not edit or delete — used by the next gc_codex_review (uncommitted) invocation to count cycles.
Review decision record — codex cycle 1 (issue #1367)
Reviewer: codex Cycle: 1 Verdict:ship-with-fixes
Architectural read:
Core: the cutover changes distribution metadata and keeps the import, command, entry-point, and runtime identities, as ADR-062's successor decision requires. The appliance writer derives the distribution name from project metadata and reuses the existing install boundary. The back-merge failure contract is incomplete, and its structural test does not run the failing path. Security: the workflow now binds the tag through the environment, and the offline install stays hash-enforced. No exploitable regression was found.
Blocking findings: 1
Finding 1 — one-off
ID:core-F1
Title: PR-list failures still silently skip the back-merge
Location:.github/workflows/release-please.yml:130
Decision: fix
Rationale: The gh pr list substitution runs inside an if test, where set -e does not apply. Capture it in a standalone assignment so a gh failure fails the step. Add a test that runs the step script against a stub gh and covers a list failure, an up-to-date dev, and the PR creation path.
The next release publishes to PyPI as lilrae 8.0.0 instead of aptl-labs. Users install it with pipx install lilrae and keep the same aptl command, configuration, and lab projects. The release workflow's back-merge step now fails loudly instead of hiding an auth or network failure.
Switch the Python distribution from aptl-labs to lilrae, with matching release, seat-image, snapshot, and documentation wiring.
codex: Cycle 1: ship-with-fixes, one finding. A gh pr list failure in the back-merge if-test bypassed set -e. Fixed with a standalone assignment and a stub-gh test. Accepted at cap.
Traceability reconciliation
Proposed in this PR — verified against the merged tree in Phase E.
IMPLEMENTS / TESTS / DOCUMENTS added: 0
Links updated: 0
Stale links removed: 0
Status
CI: ✅ green
SonarCloud: ✅ passed
PR ready for user review and merge. Phase E validates the merged requirement state, posts the final report, and closes the issue automatically once this PR merges.
The next release publishes to PyPI as lilrae 8.0.0 instead of aptl-labs. Users install it with pipx install lilrae and keep the same aptl command, configuration, and lab projects. The release workflow's back-merge step now fails loudly instead of hiding an auth or network failure.
Switch the Python distribution from aptl-labs to lilrae, with matching release, seat-image, snapshot, and documentation wiring.
codex: Cycle 1: ship-with-fixes, one finding. A gh pr list failure in the back-merge if-test bypassed set -e. Fixed with a standalone assignment and a stub-gh test. Accepted at cap.
Traceability reconciliation
IMPLEMENTS / TESTS / DOCUMENTS added: 0
Links updated: 0
Stale links removed: 0
No requirements in scope. DEP-008's statement now names the lilrae wheel; its traceability links are unchanged.
Activity
Brad-Edwards commentedon Oct 13, 2026
🛠️ Picked up by /implement - driver claude-code, branch
1367-lilrae-distribution, 2026-10-13T05:24:17.556Z.Brad-Edwards commentedon Oct 13, 2026
gc workflow phase recorded:
preflight(issue #1367). Posted by the MCP server to enforce ordering between workflow steps (issue #794 MVP-2). Do not edit or delete — used by downstream tools to gate phase prerequisites.Brad-Edwards commentedon Oct 13, 2026
gc workflow phase recorded:
plan(issue #1367). Posted by the MCP server to enforce ordering between workflow steps (issue #794 MVP-2). Do not edit or delete — used by downstream tools to gate phase prerequisites.Plan
The next release is 8.0.0, because
fix!:#1269 is unreleased ondev. No footer and no version edit are needed. The PR title isbuild: …, so the PR does not compute a release by itself.Packaging and release wiring (Path A)
pyproject.toml:name = "lilrae". Update the current install comment. Regenerateuv.lockand everyrequirements/*.txtexport with the.pre-commit-ci.yamllock and export hooks.release-please-config.json: the lock jsonpath selectslilrae.package-name: aptlis the release component, not the wheel name, so it stays..github/workflows/release-please.yml:lilrae-${TAG}.intoto.jsonl;env:in the back-merge step;gh pr create … || echowith an explicit compare, so that "dev already contains main" is the only success case without a PR. Any other failure fails the job.Installed version and artifact selection (Path A, with tests)
core/snapshot.py:version("lilrae"). Keep thedevfallback only forPackageNotFoundError. Test: snapshot reports the installedlilraeversion.appliance/versioning.py: the default prefix islilrae-. Add direct parser tests for a valid wheel, a legacyaptl_labs-name, a missing tag, and a bad version.scripts/appliance/build-seat-image.sh: derive the wheel prefix and the requirement name from[project].name, with the wheel name normalized. Keep the exactly-one rule and the hash requirement.appliance/guest/provision-offline.sh: selectlilrae-*.whl. Update the seat build test that asserts the glob.core/assets.pyand thelab_init.pydocstring: the recovery text nameslilrae.Provider provenance (Path A)
The bundled TechVault adapters now report distribution
lilrae. Update the current-behavior assertions intest_env_pack_realization,test_scenario_verification_seam, andtest_scenario_verification_artifacts.The legacy receipt classifier, the lifecycle-cleanup fixtures, and the pip-query fixtures stay unchanged. TechVault starts record only the APTL-owned baseline clear, which does not depend on provenance, so a receipt still pending at migration finishes under
lilrae.Documentation (Path D)
lilraein README,docs/index.md, installation, prerequisites, deployment, the workshop rollout, installing packs, experiment runs, the TechVault gate, theaptl_techvaultREADME, and releasing.issue-1367preflight note, and register the note in the Review APTL readiness for the LilRAE personal backend migration #962 ledger.hatch_build.pyhistory, reviews, and evidence.Verification
Targeted pytest for snapshot, versioning, seat image build, version consistency, hashed requirements, hatch build, env-pack realization, scenario verification (with real wheel builds), docs journey, and the rename boundary. Run Vale on the changed docs. CI owns the full suite and the clean-wheel lifecycle job.
There are no requirements in scope. There is no Ground Control traceability change.
Brad-Edwards commentedon Oct 13, 2026
gc_codex_review — sanitized deferred publication for issue #1367, cycle 1 of 1
Reviewed revision:
cf5e9ac8c6c44dd71af87e2def1bff59a9010b812eb748ba5370907ea6532b6aArchitectural read
Core: the cutover changes distribution metadata and keeps the import, command, entry-point, and runtime identities, as ADR-062's successor decision requires. The appliance writer derives the distribution name from project metadata and reuses the existing install boundary. The back-merge failure contract is incomplete, and its structural test does not run the failing path. Security: the workflow now binds the tag through the environment, and the offline install stays hash-enforced. No exploitable regression was found.
Verdict:
ship-with-fixesFindings
core-F1 — PR-list failures still silently skip the back-merge
one-offfix.github/workflows/release-please.yml:130Brad-Edwards commentedon Oct 13, 2026
gc_codex_review pre-push cycle 1 of 1 complete for issue #1367 on branch '1367-lilrae-distribution'. Posted by the MCP server to enforce the pre-push hard-cap-1 contract (issues #796, #804, #906). Do not edit or delete — used by the next
gc_codex_review(uncommitted) invocation to count cycles.Brad-Edwards commentedon Oct 13, 2026
Review decision record — codex cycle 1 (issue #1367)
Reviewer: codex
Cycle: 1
Verdict:
ship-with-fixesArchitectural read:
Blocking findings: 1
Finding 1 —
one-offcore-F1.github/workflows/release-please.yml:130Brad-Edwards commentedon Oct 13, 2026
Pre-PR base synchronization
refs/remotes/origin/devat3bdccc74e57e025a4dc08869b246700f731a1795already_current7eeac8a1a7fe58d7fa4f0a1a557c7a0948065d49a593dd8b5e5e93bb8565c3f7ab930e940b442aa5Brad-Edwards commentedon Oct 13, 2026
Pre-PR base synchronization
refs/remotes/origin/devat3bdccc74e57e025a4dc08869b246700f731a1795already_current6b7bb61205e69cd0202527260b1d64ecd387fe1d1ae3d055fb0adfe8e8e96deae75273ab793b3152Brad-Edwards commentedon Oct 13, 2026
Ready for review — issue #1367
PR: #1373
Plan: #1367 (comment)
Outcome
The next release publishes to PyPI as lilrae 8.0.0 instead of aptl-labs. Users install it with pipx install lilrae and keep the same aptl command, configuration, and lab projects. The release workflow's back-merge step now fails loudly instead of hiding an auth or network failure.
Switch the Python distribution from aptl-labs to lilrae, with matching release, seat-image, snapshot, and documentation wiring.
Files changed
Added:
docs/architecture/issue-1367-distribution-cutover-preflight.mdtests/test_appliance_versioning.pyModified:
.github/workflows/release-please.ymlREADME.mdappliance/guest/provision-offline.shdocs/adrs/adr-062-lilrae-name-and-naming-convention.mddocs/deployment.mddocs/getting-started/installation.mddocs/getting-started/installing-packs.mddocs/getting-started/prerequisites.mddocs/index.mddocs/raes/techvault-live-validation-gate.mddocs/reference/experiment-runs.mddocs/releasing.mddocs/requirements/DEP-008/requirement.mddocs/reviews/962-lilrae-readiness/tracked-file-inventory.tsvdocs/workshop/emergency-rollout.mdpyproject.tomlrelease-please-config.jsonrequirements/dev.txtrequirements/docs.txtrequirements/runtime.txtrequirements/web.txtscripts/appliance/build-seat-image.shsrc/aptl/appliance/versioning.pysrc/aptl/cli/lab_init.pysrc/aptl/core/assets.pysrc/aptl/core/snapshot.pysrc/aptl_techvault/README.mdsrc/aptl_techvault/__init__.pytests/test_appliance_release_workflow.pytests/test_env_pack_realization.pytests/test_scenario_verification_artifacts.pytests/test_scenario_verification_seam.pytests/test_seat_image_build.pytests/test_snapshot.pytests/test_supply_chain_pinning.pyuv.lockReviews
Traceability reconciliation
Proposed in this PR — verified against the merged tree in Phase E.
Status
Brad-Edwards commentedon Oct 13, 2026
Delivery readiness recorded — Phase E finalizes issue #1367 automatically when PR #1373 merges.
github-actions commentedon Oct 14, 2026
Final report — issue #1367 complete
PR: #1373
Plan: #1367 (comment)
Outcome
The next release publishes to PyPI as lilrae 8.0.0 instead of aptl-labs. Users install it with pipx install lilrae and keep the same aptl command, configuration, and lab projects. The release workflow's back-merge step now fails loudly instead of hiding an auth or network failure.
Switch the Python distribution from aptl-labs to lilrae, with matching release, seat-image, snapshot, and documentation wiring.
Files changed
Added:
docs/architecture/issue-1367-distribution-cutover-preflight.mdtests/test_appliance_versioning.pyModified:
.github/workflows/release-please.ymlREADME.mdappliance/guest/provision-offline.shdocs/adrs/adr-062-lilrae-name-and-naming-convention.mddocs/deployment.mddocs/getting-started/installation.mddocs/getting-started/installing-packs.mddocs/getting-started/prerequisites.mddocs/index.mddocs/raes/techvault-live-validation-gate.mddocs/reference/experiment-runs.mddocs/releasing.mddocs/requirements/DEP-008/requirement.mddocs/reviews/962-lilrae-readiness/tracked-file-inventory.tsvdocs/workshop/emergency-rollout.mdpyproject.tomlrelease-please-config.jsonrequirements/dev.txtrequirements/docs.txtrequirements/runtime.txtrequirements/web.txtscripts/appliance/build-seat-image.shsrc/aptl/appliance/versioning.pysrc/aptl/cli/lab_init.pysrc/aptl/core/assets.pysrc/aptl/core/snapshot.pysrc/aptl_techvault/README.mdsrc/aptl_techvault/__init__.pytests/test_appliance_release_workflow.pytests/test_env_pack_realization.pytests/test_scenario_verification_artifacts.pytests/test_scenario_verification_seam.pytests/test_seat_image_build.pytests/test_snapshot.pytests/test_supply_chain_pinning.pyuv.lockReviews
Traceability reconciliation
No requirements in scope. DEP-008's statement now names the lilrae wheel; its traceability links are unchanged.
Status