Skip to content

epic: birth autogalaxy_assistant (hand-built mirror of autolens_assistant) #188

Description

@Jammy2211

Birth autogalaxy_assistant — the galaxy structure modeling assistant cell for PyAutoGalaxy — hand-built by direct comparison against the mature reference autolens_assistant (autofit_assistant precedent: clone partition used as a checklist only, clone tool not run).

Mind prompt: PyAutoMind/draft/feature/autogalaxy_assistant/autogalaxy_assistant_birth.md
Reference partition (live-verified @ b9c10a9): 56 generic / 89 mixed / 301 domain / 0 unclassified — no reference-side unblock needed.

Locked decisions (human, 2026-08-01)

  • PyAutoLabs/autogalaxy_assistant, PUBLIC at birth → every merged PR leaves the tree honest, zero lensing residue, green CI.
  • Real galaxy cutouts sourced now (see data-sourcing checkpoint below); second HST/PyAutoReduce dataset deferred.
  • Phased PRs under this epic; execution delegated to Opus subagents.

Phase checklist

  • Phase 0 — this issue; Mind prompt filed; repo created public+empty; local checkout; PyAutoMind/repos.yaml entry + category-label fix + repos_sync.py --write; data-sourcing checkpoint opened.
  • Phase 1 (PR Rename PyAutoAgent to PyAutoBrain #1) — frame + tooling + stack reference: 56-file generic tier with word-anchored substitutions; skills/_style.md re-authored FIRST (galaxy worked example); prose tier de-lensed (AGENTS.md 20 hits, skills/README 26, start-new-project 24, modes 13, wiki/README 4, llms.txt 11, _bootstrap_skill.md, scripts/AGENTS.md SLaM table rewritten — autocti went public carrying it, don't repeat); modes/maintainer.md template section re-partitioned for AG; sources.yaml (drop PyAutoLens/HowToLens/autolens_workspace; add autogalaxy_workspace + HowToGalaxy); config/ derived from autogalaxy_workspace/config (96 files — priors/ellipse/, different shapelets path), not the reference tree; autoassistant/ adapted — silent killers: BASELINE_MODULES/VERSIONED_MODULES tuple dupes ((autonerves,autoarray,autofit,autogalaxy,autogalaxy.plot)) and the leftover "al" alias key (drop; it would validate stale al.* prose); benchmark.py STACK_PACKAGES=(autogalaxy,autofit,autoarray,autonerves); literature.pyautogalaxy_literature.bib; mcp/lens_tools.pygalaxy_tools.py on ag.agg; workflows adapted (wiki-currency.yml pip install autogalaxy, clone list drops PyAutoLens, sparse-clone autogalaxy_workspace, rename drift artifact; clone-boundary.yml substitute BOTH checkout path: and checker arg → verified no-op); omit draft-pdf.yml + paper/; wiki/core/stack/ 5 pages + api_audit_baseline.json (wiki-currency runs --check-version per PR and exits 1 without it); ship LICENSE deliberately; honest PENDING.md.
  • Phase 2 (PR Relocate the Health Agent into PyAutoBrain (canonical home) #2 + 4 external PRs) — real dataset + front door: dataset/imaging/<galaxy>/wavebands/ in cosmos_web_ring layout; galaxy info.json schema (single redshift, r_eff/sersic/PA hints; NO lens fields, NO positions.json); per-dataset provenance README; docs/make_readme_figures.py + hero PNG; README v2 with three anchored prompts; benchmarks/prompts/easy_*. External signposts merged AFTER: autogalaxy_workspace (llms.txt INTERIM science block + capability-boundary link + README "does not exist yet"), PyAutoGalaxy/llms.txt assistant bullet, HowToGalaxy/llms.txt capability boundary, org .github/profile/README.md.
  • Phase 3 (PR Implement initial PyAutoBrain Build Agent #3)wiki/core (~38 pages: api/ ~8 incl. new ellipse.md, keep mass_profile_catalog.md reframed for dynamical/stellar-mass work; concepts/ ~12-15; operations/ 5; external/ 5) + ag_audit_skill_apis / ag_update_wiki / ag_refresh_api_docs; baseline re-pin. Every snippet grounded on a named workspace script at pinned SHAs — never memory.
  • Phase 4a (PR Implement initial PyAutoBrain Feature Agent #4) — 9 core-loop skills: ag_setup_environment, ag_prepare_imaging_data, ag_simulate_dataset, ag_build_imaging_model, ag_configure_search, ag_run_search, ag_plot_fit, ag_load_results, ag_debug_fit_failure.
  • Phase 4b (PR Modernise and re-home PyAuto workflow skills for PyAutoBrain #5) — 8 feature skills: ag_basis_profiles (linear+MGE+shapelets), ag_pixelization, ag_light_model_extras, ag_ellipse_fitting (routes to ellipse/modeling.py — no start_here.py exists), ag_multi_dataset, ag_build_interferometer_model, ag_multi_galaxy_and_cluster (BCG + member light — watch lensing creep), ag_chain_searches. Trim → PENDING if long: ag_custom_profile, ag_custom_analysis (no AG grounding script — never author from the AL skill). Execute ≥1 script per skill's primary path.
  • Phase 5 (PR Release Agent: release-validation rehearsal driver (M2 companion) #6)wiki/literature (~40-50 files): Sersic/bulge-disk, isophotes/multipoles, MGE, ETG structure, scaling relations, high-z morphology; entities = surveys (COSMOS-Web, CANDELS, MaNGA/SAMI, Euclid). autogalaxy_literature.bib; every citation WebSearch-verified; make validate-literature-citations clean + ~20% ADS spot-check. + ag_ingest_paper. Privacy seam: PyAutoMemory structure/pointers only.
  • Phase 6 (PR address Copilot review from #6 #7) — benchmarks (prompts easy/medium/hard/teacher; RESULTS.md only from actually-run cards), hpc/ galaxy-tuned + hand-executed (CI-ungated), ag_to_notebook + ag_inspect_results_mcp, retire PENDING.md → ROADMAP.md, full newborn gate (PyAutoHeart/docs/newborn_validation.md legs 1-4, leg 4 chat-surface smoke against the live URL).

Skill grounding tables (Phase 4)

Core loop: ag_setup_environment ← root start_here.py/welcome.py/config; ag_prepare_imaging_data ← imaging/data_preparation/*; ag_simulate_dataset ← imaging/simulator*.py, interferometer/simulator.py; ag_build_imaging_model ← imaging/{start_here,modeling}.py, guides/modeling/{cookbook,customize}.py; ag_configure_search ← guides/modeling/searches.py, config/non_linear/*; ag_run_search ← imaging/start_here.py, guides/using_jax.py, guides/hpc/*; ag_plot_fit ← imaging/plot.py, guides/plot/*; ag_load_results ← guides/results/* (aggregator, database, workflow); ag_debug_fit_failure ← guides/modeling/bug_fix.py, imaging/likelihood_function.py.

Features: ag_basis_profiles ← imaging/features/{linear_light_profiles,multi_gaussian_expansion,shapelets}/*; ag_pixelization ← imaging/features/pixelization/*; ag_light_model_extras ← imaging/features/{extra_galaxies,sky_background,operated_light_profile}/*; ag_ellipse_fitting ← ellipse/{modeling,fit,multipoles,plot,simulator,database}.py; ag_multi_dataset ← multi_dataset/start_here.py + features/*; ag_build_interferometer_model ← interferometer/*; ag_multi_galaxy_and_cluster ← multi_galaxy/* + cluster/*; ag_chain_searches ← guides/modeling/chaining.py.

Explicit deferrals

  • paper/ + .github/workflows/draft-pdf.yml (JOSS paper post-completion; workflow is permanently red without paper.md).
  • PyAutoBrain REFERENCE_PROFILES["autogalaxy_assistant"] — owner: whoever first clones FROM autogalaxy_assistant, paired via Brain-ref: (PyAutoBrain#186). Until then the inherited clone-boundary job is a verified no-op.
  • Second (HST / PyAutoReduce) real dataset.
  • Trimmed skills per Phase 4b.

Data-sourcing checkpoint (gates Phase 2 — HUMAN INPUT NEEDED)

No galaxy imaging FITS exists anywhere in the workspace (autogalaxy_workspace commits only sma.fits; all imaging is auto-simulated). Recommended: one multi-band JWST COSMOS-Web NIRCam cutout of a non-lens galaxy (same reduction chain as the reference's cosmos_web_ring — bright resolved early-type or clean bulge+disk, so it also serves ag_ellipse_fitting). Please name/approve the target galaxy + archive identifiers + reduction, or supply the cutout. Every info.json number will be measured by a committed script or cited — no invented provenance. Budget ≈ 13 MB (the reference's whole dataset/ footprint).

Version pin

PyAutoGalaxy latest release 2026.7.29.2 (wheel install in a clean venv for the baseline — --write-baseline refuses a dev-source stack without --allow-dev-stack).

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