Skip to content

build: publish the project as the lilrae distribution from 8.0.0 #1367

Closed

Description

@Brad-Edwards

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.

Activity

  1. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    🛠️ Picked up by /implement - driver claude-code, branch 1367-lilrae-distribution, 2026-10-13T05:24:17.556Z.

  2. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    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.

  3. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    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.
    • Keep the ADR-062 successor clause and the issue-1367 preflight note, and register the note in the Review APTL readiness for the LilRAE personal backend migration #962 ledger.
    • 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.

  4. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    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

    • Classification: one-off
    • Decision: fix
    • Location: .github/workflows/release-please.yml:130
    • 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.
  5. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    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.

  6. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    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.
  7. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    Pre-PR base synchronization

    • Source: refs/remotes/origin/dev at 3bdccc74e57e025a4dc08869b246700f731a1795
    • Outcome: already_current
    • Published feature head: 7eeac8a1a7fe58d7fa4f0a1a557c7a0948065d49
    • Synchronized tree: a593dd8b5e5e93bb8565c3f7ab930e940b442aa5
  8. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    Pre-PR base synchronization

    • Source: refs/remotes/origin/dev at 3bdccc74e57e025a4dc08869b246700f731a1795
    • Outcome: already_current
    • Published feature head: 6b7bb61205e69cd0202527260b1d64ecd387fe1d
    • Synchronized tree: 1ae3d055fb0adfe8e8e96deae75273ab793b3152
  9. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    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.md
    • tests/test_appliance_versioning.py

    Modified:

    • .github/workflows/release-please.yml
    • README.md
    • appliance/guest/provision-offline.sh
    • docs/adrs/adr-062-lilrae-name-and-naming-convention.md
    • docs/deployment.md
    • docs/getting-started/installation.md
    • docs/getting-started/installing-packs.md
    • docs/getting-started/prerequisites.md
    • docs/index.md
    • docs/raes/techvault-live-validation-gate.md
    • docs/reference/experiment-runs.md
    • docs/releasing.md
    • docs/requirements/DEP-008/requirement.md
    • docs/reviews/962-lilrae-readiness/tracked-file-inventory.tsv
    • docs/workshop/emergency-rollout.md
    • pyproject.toml
    • release-please-config.json
    • requirements/dev.txt
    • requirements/docs.txt
    • requirements/runtime.txt
    • requirements/web.txt
    • scripts/appliance/build-seat-image.sh
    • src/aptl/appliance/versioning.py
    • src/aptl/cli/lab_init.py
    • src/aptl/core/assets.py
    • src/aptl/core/snapshot.py
    • src/aptl_techvault/README.md
    • src/aptl_techvault/__init__.py
    • tests/test_appliance_release_workflow.py
    • tests/test_env_pack_realization.py
    • tests/test_scenario_verification_artifacts.py
    • tests/test_scenario_verification_seam.py
    • tests/test_seat_image_build.py
    • tests/test_snapshot.py
    • tests/test_supply_chain_pinning.py
    • uv.lock

    Reviews

    • 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.
  10. Brad-Edwards commented on Oct 13, 2026

    @Brad-Edwards
    CollaboratorAuthor

    Delivery readiness recorded — Phase E finalizes issue #1367 automatically when PR #1373 merges.

  11. github-actions commented on Oct 14, 2026

    @github-actions
    Contributor

    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.md
    • tests/test_appliance_versioning.py

    Modified:

    • .github/workflows/release-please.yml
    • README.md
    • appliance/guest/provision-offline.sh
    • docs/adrs/adr-062-lilrae-name-and-naming-convention.md
    • docs/deployment.md
    • docs/getting-started/installation.md
    • docs/getting-started/installing-packs.md
    • docs/getting-started/prerequisites.md
    • docs/index.md
    • docs/raes/techvault-live-validation-gate.md
    • docs/reference/experiment-runs.md
    • docs/releasing.md
    • docs/requirements/DEP-008/requirement.md
    • docs/reviews/962-lilrae-readiness/tracked-file-inventory.tsv
    • docs/workshop/emergency-rollout.md
    • pyproject.toml
    • release-please-config.json
    • requirements/dev.txt
    • requirements/docs.txt
    • requirements/runtime.txt
    • requirements/web.txt
    • scripts/appliance/build-seat-image.sh
    • src/aptl/appliance/versioning.py
    • src/aptl/cli/lab_init.py
    • src/aptl/core/assets.py
    • src/aptl/core/snapshot.py
    • src/aptl_techvault/README.md
    • src/aptl_techvault/__init__.py
    • tests/test_appliance_release_workflow.py
    • tests/test_env_pack_realization.py
    • tests/test_scenario_verification_artifacts.py
    • tests/test_scenario_verification_seam.py
    • tests/test_seat_image_build.py
    • tests/test_snapshot.py
    • tests/test_supply_chain_pinning.py
    • uv.lock

    Reviews

    • 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.

    Status

    • CI: ✅ green
    • SonarCloud: ✅ passed
    • PR ready for user review and merge.
  12. removed
    in-progressAn agent is actively working this issue via /implement
    on Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions