Skip to content

ARB-AUD-10b: python3 out of the release path — 12 scripts / 43 sites + release_wall_time.py, jq with a parity table per script #4352

Closed as not planned

Description

@noahgift

Cop ruling (aprender-77, 2026-09-25): python3 is out of the release path. ARB-AUD-10 (#4350) removed it from fleet_cells_gate.sh only (bash+awk, 84/84 byte-identical parity; branch wip/4328-aud10-no-python, awaiting fold). The rest of the release path still shells out to python3.

Measured on batch/0.70.0 @ 56e82a84c. Line numbers are non-comment python3 sites.

script python3 lines use
scripts/release/rc_cut.sh 151,184,239 JSON (REST)
scripts/release/promote_rc.sh 185,202,236 JSON (REST)
scripts/release/stamp_rc_version.sh 32,122,152 cargo metadata / TOML
scripts/release/rc_publish_gate.sh 107 JSON
scripts/release/publish_strict.sh 42,48,57,71 cargo metadata
scripts/release/prepare_bump.sh 38,55 cargo metadata
scripts/release/models_t1.sh 60,130 JSON
scripts/release/autopilot.sh 26,86,373,394,430,471 JSON + ledger.py
scripts/release/host_receipt.sh 66,92,127,214,222,231,249,305 JSON
scripts/release/tag_coverage_gate.sh 47,64 JSON
scripts/check_release_assets.sh 88,100,106 JSON (REST)
scripts/check_publish_preflight.sh 72,105,176,226,299,325 cargo metadata
scripts/release/release_wall_time.py (+ _cases.py, run by scripts/check_release_wall_time.sh) whole file a full program, not a one-liner: port or rule out of scope separately

Approach (per the ruling): jq for JSON, bash+awk otherwise. One commit per script, each with a parity case table: the old and new implementations run on the same inputs and the output must be byte-identical, plus a mutant proving the table can fail (the fleet_cells_gate pattern). Branch from batch/0.70.0, fold via aprender-59.

Precondition to verify first: jq is present on the clean-room cut runner and on every fleet host host_receipt.sh runs on. If it isn't, replacing python3 with jq just moves the missing interpreter.

Done when: git grep -n python3 -- scripts/release scripts/check_release_assets.sh scripts/check_publish_preflight.sh returns only comments, every script's parity table passes, and the rc cut path runs on a runner with no python3.

Refs #4350 (ARB-AUD-10), #4328. Note: there is no ARB-AUD epic in paiml/aprender to parent this under; #4350 has no parent either.
Owner: aprender-df.

Activity

  1. added this to the 0.70.1 milestone on Sep 25, 2026
  2. noahgift commented on Sep 25, 2026

    @noahgift
    ContributorAuthor

    Precondition verified 2026-09-25T08:14Z: jq present on every clean-room runner (intel host /usr/local/bin/jq; gx10 runner container sovereign-gpu-runner:2.337.0 /usr/bin/jq) and on fleet hosts yoga, mini (/opt/homebrew/bin/jq), lambda (jq-1.8.2).

  3. noahgift commented on Sep 25, 2026

    @noahgift
    ContributorAuthor

    6/13 stamp_rc_version.sh ported (d20f3a3 on wip/4352-release-no-python). Parity: 121 cases byte-identical (stdout, rc, tree).

    Live defect found and fixed (rc-cut blocker for 0.70.0): the python cut members = [...] at the first ], even inside a comment. #4219's # ... every [[bin]] ... (batch/0.70.0 only) ended the list after 3 entries, so member path pins such as apr-cli's aprender = { path, version = "0.69.0" } were never stamped. On a batch tree the python stamp gives cargo metadata rc 101 ("failed to select aprender-core ^0.69.0"); the unstamped control gives rc 0. The port strips comments first, and cargo metadata --locked then gives rc 0 with all 80 crates at the rc. The self-test fixture now carries that shape, and a mutant covers it.

    Known, kept for parity: single-quoted TOML strings (exclude = ['crates/aprender-train-canary']) are not read, same as the python. It is harmless today because the canary isn't a member.

    Follow-up (needs a 3/3 workflow quorum, not done here): wire the #4352 self-tests into ci.yml.

  4. 21 remaining items

  5. added this to the 0.71.0 milestone on Oct 8, 2026
  6. removed
    parkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.
    on Oct 8, 2026
  7. noahgift commented on Oct 8, 2026

    @noahgift
    ContributorAuthor

    Reopened by APR-EPIC-001, C334 quorum r2: its sub #4350 is a P0 on 0.71 and rule-6 protected, and a parent cannot close while a sub is open (ISSUE-TREE-001). Milestone 0.71.0; epic E1 #3998. Reopen = pull (rule 5). Receipt: docs/audits/apr-epic-001/plan-C334-E1.json (revision r2; quorum record quorum-c334-e1-r2).

  8. added a commit that references this issue on Oct 10, 2026
  9. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    Folded into #4741 as a checklist row (TRIAGE-100, 2026-10-14): the open-ticket cap is 100, so this ticket is now tracked on that master and closed as not planned. Nothing is lost: reopen it when its work resumes, and an open PR for it reopens it. Pushed branch: wip/4352-release-no-python.

    Agent: aprender-clerk

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

    P1High priorityowner:aprender-dfOwned by session aprender-dfsize:MK̂ 3-4 h

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions