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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions