Skip to content

fix: verify_install Check F loads stale dataset + resolves mixed dev/released stack #70

Description

@Jammy2211

Overview

PyAutoHeart's verify_install Check F (Colab-simulation) driver FAILs even though the real new-user install path (Checks A/C/D) is green, so the whole verify_install_release job reports FAIL. Surfaced by the 2026-07-13 release-validation Stage-3 run (workspace-validation run_id=29266305445, TestPyPI 2026.7.13.1.dev65501). This is a harness gap, not a library defect — the core install path is healthy.

Two distinct problems, both isolated to heart/checks/verify_install.sh's check_f():

  1. Stale dataset load (primary). The generated F_driver.py loads dataset/imaging/simple/{data,noise_map,psf}.fits — a path the current imaging/start_here.py no longer uses (and which isn't bundled) → FileNotFoundError. The driver comment says it runs "one real cell from the imaging start_here", but start_here.py now loads the bundled cosmos_web_ring JWST dataset (pixel_scales=0.06) — which is exactly why Check A (which runs start_here.py) passes. cosmos_web_ring is one of the few example datasets that ship committed with the workspace, so it's present after the setup_colab clone.

  2. Mixed dev/released stack (secondary). Check F's pip install "$PIP_INSTALL_TARGET" jax installs autolens at the pinned dev version but lets autoarray/autoconf/autofit/autogalaxy resolve to the latest final on PyPI (2026.7.9.1) — because dev versions are pre-releases pip won't pick for a floor-only dependency. So Check F isn't exercising a coherent dev stack like A/C/D do.

Plan

  • F_driver dataset: change the from_fits cell to load cosmos_web_ring (data.fits/noise_map.fits/psf.fits, pixel_scales=0.06), mirroring the current start_here.py cell. No simulator needed — the dataset is bundled. Keep the dataset/ existence assertion.
  • Coherent stack: in check_f(), when $TARGET_VERSION is set, pin all five PyAuto packages (autolens autoarray autoconf autofit autogalaxy) to it in the emulated-Colab pip install, so the deps come from the same dev wheels as A/C/D. (The later verbatim pip install autoconf --no-deps inside the driver then finds the pinned dev autoconf already satisfied → no-op, so it can't silently pull a released autoconf.) When unpinned (released mode), behaviour is unchanged.
  • Leave Checks A/C/D untouched (green). Final PASS confirmation requires a TestPyPI rehearsal re-run (network + a fresh five-package dev upload) — out of band for the code change.
Detailed implementation plan

Work Classification

Library (harness only — PyAutoHeart). No workspace/library-source change.

Affected Repositories

  • PyAutoLabs/PyAutoHeart (heart/checks/verify_install.sh, check_f() only)

Branch Survey

Repository Current Branch Dirty?
./PyAutoHeart main clean

Suggested branch: feature/verify-install-check-f-fix
Worktree root: ~/Code/PyAutoLabs-wt/verify-install-check-f-fix/

Implementation Steps

  1. heart/checks/verify_install.sh check_f() — build an F-specific install list that pins all five PyAuto packages to $TARGET_VERSION when set (else keep $PIP_INSTALL_TARGET), then pip install "${PIP_INDEX_ARGS[@]}" "${f_targets[@]}" jax.
  2. Same function's F_driver.py heredoc — swap the simple paths for cosmos_web_ring at pixel_scales=0.06; update the print/assertion text.
  3. Verify: bash -n the script + python -m py_compile the extracted driver; confirm the cosmos_web_ring fits are bundled in autolens_workspace.

Verification limits

Check F needs live network + a fresh TestPyPI dev upload of all five packages to run end-to-end; that confirmation belongs to the next release-validation rehearsal. The code change is verified by shell/Python syntax + path/logic review here.

Autonomy

--auto, effective level supervised (bug work-type cap). Plan written here; run parks at ship sign-off. Merge/close remain human.

Original Prompt

Click to expand starting prompt

verify_install Check F: assumes a bundled dataset (no auto-simulate) and resolves a mixed dev/released stack

Type: bug
Target: health_fixes
Repos:

  • PyAutoHeart
    Difficulty: small
    Autonomy: supervised
    Priority: normal
    Status: formalised

PyAutoHeart's verify_install Check F driver fails on a missing dataset, so the whole
verify_install_release job reports FAIL even though the real new-user install path is
healthy. Surfaced by the 2026-07-13 release-validation Stage-3 run (workspace-validation
run_id=29266305445, TestPyPI 2026.7.13.1.dev65501). Check status was:

A  PASS  pip install + start_here.py + welcome.py
C  PASS  conda(python=3.12) + start_here + welcome
D  PASS  autolens[optional]==2026.7.13.1.dev65501 resolved + imports
F  FAIL  driver rc=1

Two distinct problems in Check F only:

  1. Missing auto-simulate (primary). F_driver.py:36 calls
    Imaging.from_fits('dataset/imaging/simple/data.fits') from its CWD, but never simulates
    that dataset first, so it crashes FileNotFoundError: dataset/imaging/simple/data.fits.
    Datasets are meant to be auto-simulated at run time, never bundled/committed (only a few
    select example .fits ship with a workspace) — this gap was exposed by the 2026-07-13
    release dataset -f leak fix (PyAutoBuild#150) that stopped force-adding dataset/.
    Check A's start_here.py passes because it simulates its own dataset; Check F must do the
    same (run the matching simulator, or simulate to the exact folder it then loads) instead
    of assuming a bundled file. This is a HARNESS gap, not a library defect.

  2. Mixed dev/released stack (secondary). Check F's env resolved
    autolens 2026.7.13.1.dev65501 (the rehearsal dev wheel) but its dependencies came from
    released PyPI — autoarray/autoconf/autofit/autogalaxy 2026.7.9.1 — so Check F is not
    even exercising a coherent dev stack. Pin all five PyAuto packages to the TestPyPI dev
    version (or install with the TestPyPI index for the whole family) so Check F tests the
    same wheels as Checks A/C/D.

Fix both in the Check-F driver, then re-run verify_install against a TestPyPI rehearsal
version to confirm F PASS. Keep the core new-user path (A/C/D) untouched — it is green.

Diagnosis note

The prompt's primary framing was "auto-simulate the simple dataset". Investigation shows the current start_here.py loads the bundled cosmos_web_ring (not a simulated simple), which is why Check A passes — so the faithful fix is to load cosmos_web_ring, no simulator required.

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