Long-running multi-phase programmes — work that is bigger than any one task and outlives any single issue. Each entry names the epic's canonical ledger: the file that holds its phase/gate state, wherever it lives. The dashboard renders these under In flight with a one-tap resume prompt that works out where the epic stands from its ledger and continues it from the next logical point — nobody should have to hunt for the issue that pairs with an epic's current phase.
Schema per entry: ## <slug> then - title: / - ledger: / - notes:
(and optionally - status: for a coarse, durable state — never per-phase
detail, which belongs in the ledger).
An entry whose status: begins SHIPPED or COMPLETE is retired by
lifecycle.py epics --retire (run by dashboard_refresh.yml on main): its
ledger moves to complete/archive/epics/ if it was under draft/ or
active/, the entry's text is appended there, and the entry is deleted from
this file.
A member prompt declares its membership in its own header: Epic: <slug>
(this file's slug) plus an optional Phase: <n>. The dashboard then keeps
members out of the pick lists and work-type sections and shows them only
grouped, phase-ordered, under their epic — worked in order through the
epic, never picked standalone.
- title: Likelihood lifecycle — optimal setups baked into PyAutoLens (
setup="auto"), Pulse/Insight day zero, mirrored autolens_profiling / autolens_inference trees, and one repeatable profiling → validation → gradient → sampler sequence per likelihood - ledger: draft/research/autolens_profiling/likelihood_lifecycle_epic.md
- status: phase 0 IN PROGRESS — 0A (PyAutoPulse contract) MERGED 2026-10-21 (PyAutoPulse#70, record complete/2026/10/likelihood-lifecycle-p0-pulse.md); v3 shape = per-record setup + planned_cells + values (0B must emit); 0B QUEUED in planned.md behind cluster-pointsolver (autolens_profiling claim); 0C MERGED 2026-10-21 (autolens_inference#42–#44, Pulse#71, Cortex#74); next 0D PyAutoInsight, then 0E; 0B queued
- notes: nine phases, one at a time, library first, one issue per repo per phase. 0 spine (vocabulary;
profiling-summary@3with producer-declaredclassoptimal/secondary/experimental andstatuscurrent/superseded/archived;walltime-validation@1Pulse axis; Pulse first selector = Class, current-only default;results/andwiki/campaigns/mirrorscripts/witharchive/YYYY/MM/in both project repos; Insightsetup_mode: auto; lifecycle template) → 1 figures (Eyes already covers all ten dataset types since autolens_visualization#5; human sign-off + fit.png kept per profiling cell) → 2 profiling campaigns per dataset type under Optimal/Secondary setups (human "complete" gate) → 3 day zero freeze on a released tag + designation decisions + close Pulsesetup-baseline→ 4 inference wall-time validation on RAL → Pulse → 5setup="auto"in Nerves/Array/Galaxy/Lens/Fit with banner,setup.json, run-time estimate, workspace/assistant/science-project updates → 6value_and_gradbreakdowns (adopts Pulsegradient_cost_probe) → 7 Insight sampler campaign under auto (adoptshst-imaging-mass-samplers) → 8pyauto-brain profiling lifecycleverb (dogfood: matrix_free_interferometer_phase5). Boundaries: optimal is always a Pulse decision record, never inferred; onecurrentper key by the day-zero rule, never by date; auto never touches model, sampler or HPC request. Upstream of hpc-campaign phase 4; results-library untouched. Evidence: draft/research/autolens_profiling/likelihood_lifecycle_epic_report.md.
- title: Results library — PyAutoFit infrastructure to index, complete, export, package and reconcile thousands of finished results (follow-up to hpc-campaign; Euclid DR1 is the pilot)
- ledger: draft/feature/autofit/results_library_epic.md
- status: filed 2026-10-07 from the DR1 catalogue post-mortem; NOT STARTED — no phase issued yet
- notes: six phases, library first, one at a time. 0 integrity and honesty primitives (atomic STORED-media zips, in-zip
.completedcheck, checkpoint probe + quarantine,from_directory(on_error=)withagg.errors, strict AggregateCSV by default with union header); 1 results index + status classes +dataset_identity.json+agg.latest_per+ lazy zip-member reads +python -m autofit.results {index,status,count}; 2 completeness over a declared grid (per-product,.missing.csv) +Aggregator.enrich; 3 incremental honest exports (cached rows, row-or-reason,columns.json, plain-JSON view) + scheduler-agnostic chunk/merge; 4af.export.package(size-capped parts, manifest, SHA256SUMS, verify, provenance README) + library diff/parity + run-to-run scatter helper; 5 assistant skill, pipeline scripts shrink, hpc/sync index pull, Cortex index hash, DR1 v1.1 as witness. Boundary: hpc-campaign (draft/research/autofit/hpc_campaign_epic.md) owns run time (status.json, failure records, resources, Slurm, carbon); this epic owns post-run. Phase 0 is identical to hpc-campaign phase 0 #A — issue it once, under whichever epic goes first, and record it done in the other. Does not block draft/feature/euclid/upstream_dr1_final_catalogue_tooling.md. First step: phase 0 viastart_devas a single PyAutoFit issue. Evidence and lessons: draft/feature/autofit/results_library_epic_report.md.
- title: Search extensibility — a PyAutoFit search framework for many samplers, a unified JAX contract, generated search docs, and the autofit_inference / autofit_profiling benchmark repos
- ledger: draft/research/autofit/search_extensibility_epic.md
- status: filed 2026-10-07; scoped (4 Opus surveys) and independently reviewed (Codex gpt-6-astra, Claude Fable high) the same day; all §5 questions ruled and decisions D1–D22 recorded in
search_extensibility_epic_report.md§8; repos PyAutoLabs/autofit_inference and PyAutoLabs/autofit_profiling created empty 2026-10-07 (B1 gate passed); IN PROGRESS — A0a(i) issued 2026-10-07 as PyAutoFit #1666, MERGED the same day (PR #1667, pending-release); B1 registration (PyAutoMind#492) DONE 2026-10-08, all 7 PRs merged, recordcomplete/2026/10/search-ext-b1-registration.md; A0c part 1 (PyAutoFit#1668) DONE 2026-10-08, 9 PRs merged, recordcomplete/2026/10/search-ext-a0c-fit-repair.md; A0c part 2 (PyAutoLens#776) DONE 2026-10-08 under --auto (9 PRs, glance auto-merge); A0b (PyAutoFit#1672) and A0a(ii) (PyAutoFit#1673) MERGED 2026-10-08 — A0 complete; A1 (PyAutoFit#1675 + 3 docs PRs) and B2 (autofit_inference#3) MERGED 2026-10-08 after Codex adversary reviews; A2 (PyAutoFit#1676, PR #1679) and A3 (PyAutoFit#1677, PR #1680) MERGED 2026-10-08 (pending-release; recordscomplete/2026/10/search-ext-a2-objective-bridge.md,complete/2026/10/search-ext-a3-samples-checkpointer.md); B3 wave-1 pilot (autofit_inference#4) DONE 2026-10-08 — autofit_inference#5, PyAutoInsight#23, PyAutoCortex#61 merged, 223/520 pilot rows, rest deferred to wave 2 on RAL,gaussian_x3@2freeze deferred, recordcomplete/2026/10/search-ext-b3-pilot.md; A3b (PyAutoFit#1678, PR #1681) DONE 2026-10-08 (pending-release; recordcomplete/2026/10/search-ext-a3b-nss-preflight.md; witness follow-upsdraft/bug/autonerves/jax_enable_x64_env_ignored_and_fp32_leg_runs_fp64.md, and for B5 wave 2draft/feature/autofit_inference/nss_settings_for_wave2.md: NSS needs ≥50 MCMC steps); 2026-10-14: human ruled the 2026.10.11.1/2026.10.12.1 releases that carried #1679/#1680/#1681 deliberate (review-05 findings are live bugs, not release gates); review-05 fixes ISSUED as PyAutoFit#1682 (tasksearch-ext-a3-postmerge-fixes) and review-06 fixes as autofit_inference#6 (tasksearch-ext-b3-postmerge-fixes), in parallel; B3 pilot output moved into canonicalfit/autofit_inference/output/and the pilot worktree removed; review-05 fixes DONE 2026-10-14 (PyAutoFit#1683 merged, pending-release; recordcomplete/2026/10/search-ext-a3-postmerge-fixes.md); review-06 fixes DONE 2026-10-14 (autofit_inference#7 + PyAutoInsight#28; recordcomplete/2026/10/search-ext-b3-postmerge-fixes.md); B4a DONE 2026-10-14 (autofit_profiling#3 + PyAutoPulse#60 + autofit_workspace_developer#30; recordcomplete/2026/10/search-ext-b4a-breakdown-exporter.md; Pulsefitrow live; headline: Nautilus checkpoint writes = 24.5 % of a gaussian_x1 search.fit; epic 2 not opened); A4 DONE 2026-10-14 (PyAutoFit#1685 → #1686 → #1687 merged in order, pending-release; pre-merge astra review 07 (4 findings) enacted; recordcomplete/2026/10/search-ext-a4-decompose.md; companions DONE 2026-10-14 (complete/2026/10/search-ext-a4-companions.md, glance auto-merge)); 2026-10-14 human launched A5 + B4b + B5 under --auto: ISSUED search-ext-a4-companions (PyAutoBrain#520, glance), search-ext-a5-library (PyAutoFit#1688, 4 stacked PRs), search-ext-b4b-ep-baseline (autofit_profiling#4), search-ext-b5a-wave2 (autofit_inference#8, @2 freeze + RAL scored wave 2); drafteddraft/refactor/autofit/search_ext_a5_consumers.md(blocked on A5 library); A5 library DONE 2026-10-15 (PyAutoFit#1689 → #1690 → #1691 → #1692 merged in order, pending-release; all 15 searches onrun(ctx), framework closed; recordcomplete/2026/10/search-ext-a5-library.md; follow-upsdraft/bug/autofit/bfgs_resume_reads_x0_from_scipy_result.md,draft/test/autofit/workspace_searches_scripts_preexisting_failures.md); B4b DONE 2026-10-15 (autofit_profiling#5 + PyAutoPulse#61; recordcomplete/2026/10/search-ext-b4b-ep-baseline.md; EP/graphical baselines ported, witness "within 2x" not met — all cells 0.14–0.48x faster, correctness exact; developer ep/ + graphical/ retired via Gut 2026-10-15 (autofit_workspace_developer#35, glance, recordcomplete/2026/10/search-ext-b4b-dev-retire.md)); B5a PRs merged 2026-10-15 (autofit_inference#9, PyAutoCortex#63, PyAutoInsight#29), wave 2 compute complete on RAL and unpulled, B5a DONE 2026-10-15 (recordcomplete/2026/10/search-ext-b5a-wave2.md); A5 consumers DONE 2026-10-15 (9 PRs merged in order PyAutoHands#311 → PyAutoBrain#523 → autofit_workspace#169 → autofit_assistant#56 → autolens_assistant#159 → autogalaxy_assistant#35 → autolens_workspace#590 → autogalaxy_workspace#258 → PyAutoMemory#132; recordcomplete/2026/10/search-ext-a5-consumers.md; follow-updraft/docs/autofit/capability_matrix_links_b3_catalogue_cards.md); B5b DONE 2026-10-15 (autofit_inference#11 → PyAutoCortex#65 → PyAutoInsight#30; wave 2 judged undergaussian_x3@2— 10,580 ok / 1,170 failed of 11,750 scored; wave-2 summary records WITHHELD on size (84 MB), schema decision open; RAL 409930 remainder (980 runs) running; recordcomplete/2026/10/search-ext-b5b-score.md); B5b-2 DONE 2026-10-15 (autofit_inference#13 → PyAutoInsight#31 → PyAutoCortex#68; 409930 fully pulled, wave 2 CLOSED at 12,750 rows; records asinference-summary@3shards; reliability floor as §8 post-hoc note; recordcomplete/2026/10/search-ext-b5b2-remainder.md; human post-merge: Insightfit@3 capture +pyauto-insight checkonline + dropmigrating_from); kwarg-typos DONE 2026-10-15 (PyAutoFit#1695 pending-release → autofit_workspace#170 → autofit_workspace_test#112; recordcomplete/2026/10/search-ext-kwarg-typos.md); capability-matrix catalogue cards DONE 2026-10-15 (PyAutoFit#1696 pending-release, glance shadow row 16/20; recordcomplete/2026/10/search-ext-a5-capmatrix-cards.md); SCOPED WORK COMPLETE 2026-10-15 — every Track A phase (A0–A5 + consumers) and Track B phase (B1–B5, scored wave 2 closed) merged; post-merge fix profile-database-identifier-fix DONE 2026-10-15 (autofit_workspace_test#114 — Release Integrate profile_database.py failure from PyAutoFit#1686 .identifier precedence); remaining: (i) B5c second-model-family EXTENSION — stage 1 DONE 2026-10-16 (autofit_inference#16 + PyAutoCortex#70 + PyAutoInsight#33 merged;correlated_nd@1pre-registered, 8 exact references, 930-run pilot RAL 410866 finished 926 ok / 4 OOM at 8 G on corr_gaussian_d50, results unpulled in the private copy; recordcomplete/2026/10/search-ext-b5c-family.md), B5c-2a DONE 2026-10-16 (autofit_inference#18 + PyAutoCortex#71 + PyAutoInsight#34 merged; pilot judged under @1: 749 rows/177 failed/4 oom/110 deferred, 307 accepted;correlated_nd@2FROZEN at 44c5e77f1fb0; A2 + human rulings; recordcomplete/2026/10/search-ext-b5c2a-freeze.md); sibling bug nautilus-d100-checkpoint-guard DONE 2026-10-16 (PyAutoFit#1698 pending-release, recordcomplete/2026/10/nautilus-d100-checkpoint-guard.md); NEXTdraft/research/autofit_inference/search_ext_b5c2a_rerun.md(clean re-pilot of 8 Emcee/Zeus cells, unblocked) →search_ext_b5c2b_scored_wave_submit.md(submit ≈12 450 runs) → B5c-3 pull+score; (ii) RELEASE of the pending-release PyAutoFit PRs (#1669–#1696 chain) once Heart clears RED — human /review_release, never under the development override; Prior/Message design #1500 explicitly out of this epic - notes: two dependency-ordered tracks. Track A (PyAutoFit framework): A0a(i) metadata conformance → A0b hygiene → A0a(ii) backend conformance; A0c repair PRs; A1 declare + gate (after the test-mode bypass) + declarative lazy registry +
run(ctx)design note; A2 objective factory + fork rule +run(ctx)bridge (Drawer, Nautilus proofs); A3 RawSamples adapter + Checkpointer/resume split; A3b NSS onto Fitness + trace preflight + x64; A4 decompose NonLinearSearch + delete family bases (deprecated thin subclasses one release) + search-level seed with the legacy identifier table; A5 per-search migrations + generated consumers. Track B (repos): B1 registration (Mind repos.yaml → repos_sync, Heart excluded, Cortex row, Pulsefit@profiling-summary@2, Insightfit@inference-summary@1; adopts PyAutoPulsetasks/autofit_profiling_bootstrap.md), B2 harness +gaussian_x3_blend/_separated+ pre-registered protocol + per-backend reference posteriors, B3 wave-1 PILOT (ranks nothing) + Insight registration + catalogue, B4a breakdown exporter + Pulse row + epic-1 bottleneck table / B4b EP baseline port, B5 consumers + scored wave 2 (50 seeds, RALralonly, after A2 and A4). Human rulings 2026-10-07: RTD generic example stays DynestyStatic; SMC → weighted/evidence; deprecateuse_jax_jit/use_jax_vmap; in-flight samplers targetrun(ctx)from A2. Start order: A0a(i), A0c and B1 registration first; issue ONE phase at a time throughstart_dev.
- title: PyAutoEars — community listening, solicited feedback, dashboard and follow-through
- ledger: draft/feature/pyautoears/community_organ_birth.md
- status: In progress; phases 0–2 merged 2026-10-03. Feedback: Brain#454; bootstrap: Ears#2; integration: Brain#456, Mind#469 and 11 companions. Brain#455 closed completed; record complete/2026/10/ears-integration.md. Ears board and cockpit live; public feed/copy witness and responsive browser CI passed. Later phases remain unissued.
- notes: Human-approved programme includes listening reliability, assistant distribution, delivery follow-up and recurring themes. Issue one bounded phase at a time. Preserve Brain judgement, Mind task state and the single Discussions hub. Human
Prmauthorized the integration merges; Heart remains RED for release. Listening reliability/category-sensitive triage merged: Ears#5 and Brain#457; Ears#4 closed; complete/2026/10/ears-listening-reliability.md. Production run37137496430 passed; live Discussion hub coverage complete, only euclid_assistant unavailable. Next: phase4 assistant distribution of /feedback.
- title: PyAutoPulse — the cross-project dashboard layer above the
<lib>_profilingproject repos: instance registry,profiling-summaryread contract, organ board, cockpit transition - ledger: complete/2026/10/pyautopulse-brain-board-cockpit.md
- status: filed 2026-10-02; name decided 2026-10-02 (PyAutoPulse, key
pulse); phase 1 COMPLETE 2026-10-02 (autolens_profiling#359 closed; PR #360 merged4d6523f; recordcomplete/2026/10/profiling-summary-v1.md;dashboard/summary.jsonlive); phase 0 COMPLETE 2026-10-02 (PyAutoMind#463 closed; ten PRs merged, Mind#465 first; recordcomplete/2026/10/pyautopulse-organ-row.md; organ order after Hands before Nerves;boards:deferred to phase 2); phase 2 COMPLETE 2026-10-02 (PyAutoPulse#1 closed; PyAutoPulse#2 + PyAutoBrain#449 merged; recordcomplete/2026/10/pyautopulse-organ-skeleton.md; Pages live at https://pyautolabs.github.io/PyAutoPulse/;boards: pulselanded); phase 3 COMPLETE 2026-10-02 narrowed (PyAutoBrain#450 closed; PyAutoBrain#451 + pyautolabs.github.io#24 merged; recordcomplete/2026/10/pyautopulse-brain-board-cockpit.md;pyautobrain/register_profiling_dashboard_on_brain_board.mdretired as superseded); producer follow-ups COMPLETE 2026-10-03 (autolens_profiling#366 closed; PR #367 mergedefcece3; recordcomplete/2026/10/pulse-refresh-project-identity.md; project feed identity and pulse-refresh sender live, dispatch/receipt witness passed);.githuborg-profile row + hub Pulse-board link DONE 2026-10-02 (complete/2026/10/pulse-public-links.md); phase 4 waits for a real second<lib>_profilingproducer — no prompt until then - notes: human request 2026-10-02 to begin the organ filed from the 2026-10-01 intake; design authority is
PyAutoBrain/docs/research/profiling_inference_organs.md(Brain #444, read contracts and acceptance cases) onecosystem_levels.md(Brain #440, roles not hierarchy) — do not re-derive either. Same layering as PyAutoEyes over<lib>_visualization(precedentcomplete/2026/09/pyautoeyes-organ-decision.md): project repos own producers, results, drift policy and their own Pages page; the organ owns the registry, the versioned read contract, ingest receipts and the cross-project board; the Brain's profiling conductor is the only judge. Phases underdraft/feature/: 0 name + organ row + boundaries (pyautomind/profiling_organ_p0_name_row_and_boundaries.md, human-gated: freshgh repo create PyAutoLabs/PyAutoPulse, org-profile row; name decided by the human 2026-10-02 — PyAutoPulse, organ keypulse; an earlier repo of that name became PyAutoHeart, so this is a fresh create), 1profiling-summaryv1 exporter in autolens_profiling (done:complete/2026/10/profiling-summary-v1.md, PR autolens_profiling#360), 2 organ skeleton — registry, reader, receipts, board, workflows (pyautopulse/profiling_organ_p2_skeleton_registry_reader_board.md), 3 Brain board strip + cockpit identity transition (pyautopulse/profiling_organ_p3_brain_board_cockpit_transition.md; supersedespyautobrain/register_profiling_dashboard_on_brain_board.mdunless that ships first), 4 second real<lib>_profilingadopter — no prompt until a real producer exists (spec: never manufacture empty siblings; a fixture is phase 2). Repoint the ledger toPyAutoPulse/dashboard.mdonce phase 2 lands. Issue ONE phase at a time. The inference organ is PyAutoInsight; its birth and registration shipped 2026-10-04. Campaign coordination and pending inference tasks now live in that organ, with Cortex retaining scientific authority.
- title: Point-source (single-source) PointSolver CPU speed-up
- ledger: autolens_profiling/wiki/campaigns/point_source_image_plane_cpu.md (full record: results/notes/point_source_cpu_campaign.md)
- status: phases 1-3 shipped (p2 + p3 released in 2026.9.26.1: PyAutoArray
7fa8d271, PyAutoLens86054bbc); phase 4a (re-baseline + solver-config sweep, workspace-only) shipped 2026-09-27 (autolens_profiling#321, merge3e4a068; recordcomplete/2026/09/point-source-cpu-p4.md; step 0 = 66 % of the call, default solver complete, no library extent default change); phase 4b (step-0 containment without the (N,3,2) gather) shipped 2026-09-27 (PyAutoArray#580, merge4383ea8, pending release; autolens_profiling#330, merge81af10f; recordcomplete/2026/09/pointsolver-step0-gather.md;structureddefault, 1.44x single / 2.27x vmap-16 on RAL 8490H job 357321); phase 4c (MAX_CONTAINING_SIZE15 → 20, human-chosen at +6.2 % scalar for 3 triangles of headroom over the observed max 17) shipped 2026-09-27 (PyAutoArray#5849428eca, PyAutoLens#753e92bde0, pending release; autolens_profiling#335c1523ef; recordcomplete/2026/09/pointsolver-mcs-headroom.md); folder split shipped 2026-09-26 (autolens_profiling#318, mergea5e3cdd:scripts/point_source/→scripts/point_source_image/+scripts/point_source_source/; recordcomplete/2026/09/point-source-folder-split.md); source-plane phase 1 (breakdown instrument) shipped 2026-09-26 (autolens_profiling#317, mergef79ebf2; recordcomplete/2026/09/point-source-source-plane-breakdown.md) — source-plane phase 2a (RAL CPU/A100 rows + pytree-input A/B) shipped 2026-09-27 (autolens_profiling#323, merge9c0203e; recordcomplete/2026/09/point-source-source-plane-p2a.md; human NO-GO on the PyAutoFit flatten lever, 0.0385 ms < 0.05 ms bar) ; source-plane phase 2b (backward-pass A/B) shipped 2026-09-27 (autolens_profiling#327, merge4dc05a4; recordcomplete/2026/09/point-source-source-plane-p2b.md; forward-mode gradient GO, −38–46 %) ; source-plane phase 2c (fwd/rev crossover) shipped 2026-09-27 (autolens_profiling#331, merge4c267b7; recordcomplete/2026/09/point-source-source-plane-p2c.md; no crossover through n=24) ; source-plane phase 2d (analysis-declaredgradient_mode) shipped 2026-09-27 (PyAutoFit#1649867af1c, PyAutoLens#752b3c9b68, pending release; recordcomplete/2026/09/point-source-gradient-mode.md) ; source-plane phase 2e (real MultiStartAdam confirmation) shipped 2026-09-27 (autolens_profiling#336, merge17e2596; recordcomplete/2026/09/point-source-source-plane-p2e.md) — source-plane campaign core COMPLETE; A100 vmap throughput measured 2026-09-28 (autolens_profiling#349); blackjax forward mode awaits gradient-sampler admission evidence. Nautilus admission phase autolens_inference#15 completed 2026-10-02: all five Nautilus seeds recovered (max 0.74 sigma), estimated steady batched likelihood share 0.0405–0.0447%; merged autolens_inference#17 (b0e49501) and ledger/focused CI repair autolens_profiling#361 (6ee2b30a); recordcomplete/2026/10/point-source-search-nautilus-leaf.md. Phase 4b/4c library changes are included in release 2026.9.27.2 (release tags checked). - notes: human decision 2026-09-26 — SINGLE-SOURCE only, the
scripts/point_source_image/+scripts/point_source_source/use case (formerlyscripts/point_source/); the cluster use case moved to epiccluster-pointsolver-speed. Phase-4 campaign prompt recorded atcomplete/2026/09/point-source-cpu-p4.md(phase 4a, autolens_profiling#321, merge3e4a068; its## Original promptholds the campaign contract); phase 4b shipped (recordcomplete/2026/09/pointsolver-step0-gather.md); phase 4c shipped (recordcomplete/2026/09/pointsolver-mcs-headroom.md); extent sanity check complete 2026-10-02: PyAutoLens#764, workspace-test#338 and profiling#363 merged; recordcomplete/2026/10/pointsolver-extent-sanity-check.md; library release pending, human approved workspace merge before release. Open members:draft/feature/autolens_workspace/pointsolver_grid_extent_per_package.md, carried leftovershttps://github.com/PyAutoLabs/PyAutoPulse/blob/main/tasks/pointsolver_cpu_speed_campaign_remainder.md; source-plane member prompthttps://github.com/PyAutoLabs/PyAutoPulse/blob/main/tasks/point_source_source_plane_chi_squared_speed.md(phases 2+, re-filed at close-out; ledgerresults/notes/point_source_source_plane_campaign.md) (re-tagged fromcluster-strong-lensing, which is the unrelated Source & Cluster arc). Recordscomplete/2026/09/point-source-cpu-p{1,2,3,4}.md. Issue ONE bounded phase at a time; any library default change (PyAutoLensshape_solver.py/ PyAutoArrayMAX_CONTAINING_SIZE) is a human decision at the phase-4a checkpoint.
- title: Cluster PointSolver — robustness and performance
- ledger: https://github.com/PyAutoLabs/PyAutoPulse/blob/main/tasks/cluster_pointsolver_speed.md
- status: Expanded by human agreement 2026-10-01 to own robust analysis settings, numerical correctness and performance. Carries Source & Cluster phase-1 remainder, phase-2 profiling coverage and forward ShapeSolver work; completed 1a–1d retained as linked evidence. No new task issued. Next production candidate: observable overflow with invalid-result policy and CI witnesses; representative-data/baseline profiling can be scoped concurrently with unresolved accuracy research, subject to repo claims.
- notes: Stable epic identifier retained. autolens_profiling owns campaign evidence and robust-settings/cost guidance; autolens_workspace_test owns bounded numerical regressions in required PR smoke or scheduled/release CI. Failing cases may be timed diagnostically but cannot underpin accepted speed/settings claims. Reconcile old profiling coverage with completed single-source campaigns; no duplication. Previous repo wiki/campaigns/cluster_pointsolver.md is the speed-only survey; reconcile it at first implementation, with this Mind contract authoritative for the expanded plan. Issue ONE bounded task at a time, no bulk queue.
- title: Expectation propagation (EP) campaign
- ledger: https://github.com/PyAutoLabs/PyAutoInsight/blob/main/tasks/ep_campaign.md
- notes: campaign intent and scoping now live in PyAutoInsight
campaigns.yamlandtasks/{ep_campaign,ep_scoping,graphical_scoping}.md(destination PR #2 merged 2026-10-04). The campaign map is never issued; Mind retains only bounded implementation phases and claims linked to Insight. Scientific runs, observations and human conclusions remain authoritative in PyAutoCortexprojects/{analytic_gaussian,ep_toy_gaussian,slope_hierarchy_scale,ic50_workspace}.md. No independent Mind campaign schedule remains.
- title: Euclid DR1 preparation — 15k-lens modelling prep
- ledger: draft/feature/euclid/euclid_dr1_prep_epic.md
- status: science half → Cortex 2026-09-01 (old phases 4, 5, 6a, 6b are now PyAutoCortex
phases/euclid/4, 5, 6, 7); the Mind keeps the software phases, renumbered 3a→3, 3b→4, 6c→8, 7→9 — the renumbering table is in the ledger - notes: 7 Mind phases (0, 1, 2, 3, 4, 8, 9) — issue ONE at a time as predecessors near
shipping, no bulk issue queues. The four science phases moved to PyAutoCortex on
2026-09-01 as
phases/euclid/4, 5, 6, 7 (were Mind 4, 5, 6a, 6b): RAL runs, human-driven and supervised, whose deliverable is a result and a written verdict, not a merged PR; never route them to an autonomous ship gate. Mind phase 8 (was 6c) is a PyAutoArray source audit that may spawn a separate bug prompt and can run alongside Cortex phase 7. Mind phase 9's (was 7) retroactive-update leg is explicitly allowed to conclude "no elegant solution — don't build it". The full renumbering table is in the ledger. Source of truth for all drift is /mnt/c/Users/Jammy/Science/euclid. Science half: PyAutoCortexprojects/euclid_dr1_prelim.md(the former Cortex phases 4-7). Phase 0 shipped 2026-08-28; phase 1 shipped 2026-08-29 (euclid#43 closed, PR #44 merged); phase 2 shipped 2026-08-29 (euclid#45 closed, PR #46 merged) — which also satisfies phase 4's "2 strongly preferred" gate. Phase 3a was INSERTED 2026-08-31 (docs: restore the in-script narrative prose lost at 355b309; start_here.py back to a full end-to-end guide) and the old phase 3 renumbered to 3b; on 2026-09-01 the letters died in the Cortex split and 3a/3b became plain 3/4. Phase 3 shipped 2026-09-01 (euclid#47 closed, PR #48 merged; record complete/2026/09/restore-pipeline-narrative-prose.md). Phase 4 shipped 2026-09-03 (euclid#49 closed, PR #50 merged; record complete/2026/09/euclid-cpu-two-stage-route.md) — all Mind software phases 0-4 are now shipped, and both gates of the Cortex 10-lens science run (euclid#48, euclid#49) are closed. Phase 8 (Delaunay area audit) shipped 2026-09-04 (PyAutoArray#522 closed, PR #523 merged, audit on the issue; record complete/2026/09/delaunay-area-magnification-audit.md): two defects proven and filed as follow-up bug prompts (autoarray Voronoi-vs-dual-area denominator; autolens magnification latent 0/0 for pixelized sources — which also taints the vis_pix catalogue column Cortex phase 4 witnesses). The autoarray fix shipped 2026-09-05 (PyAutoArray#524 closed, PR #525 merged, pending-release; record complete/2026/09/delaunay-dual-area-magnification.md); the autolens fix is next. Mind phase 9 remains, gated on Cortex phase 4.
- title: PyAutoFit model figures — structure-first model visualisation (caskade-style, scales to MGE/graphical/EP)
- ledger: draft/feature/autofit/model_figures_epic.md
- notes: phase 1 SHIPPED 2026-09-11 (complete/2026/09/model-figures-graph-spec.md, PyAutoFit#1606); phase 2 SHIPPED 2026-09-11 (complete/2026/09/model-figures-renderer.md — PyAutoFit#1614 + autofit_workspace#152 merged, pending-release PyAutoFit); phase 3 SHIPPED 2026-09-11 (complete/2026/09/model-figures-lens.md — PyAutoFit#1615 + PyAutoArray#550 + PyAutoGalaxy#616 + PyAutoLens#737 + autolens_workspace#541 + autogalaxy_workspace#240 merged, pending-release ×4;
__solved_parameters__protocol); phase 4 SHIPPED 2026-09-12 (complete/2026/09/model-figures-graphical.md — PyAutoFit#1617 + autofit_workspace#153 + HowToFit#51 merged, pending-release PyAutoFit; plate notation, hoisted shared priors, hierarchical draws are not sharing); phase 5 SHIPPED 2026-09-13 (complete/2026/09/model-figures-ep-view.md — PyAutoFit#1619 merged, pending-release PyAutoFit; EP factor-graph view, af.EPPlotter, graph_model.png/graph_state.png); phase 6a SHIPPED 2026-09-13 (complete/2026/09/model-figures-rollout-autofit.md — PyAutoFit#1621 + autofit_workspace#154 + HowToFit#52 merged, pending-release PyAutoFit; figures beside every model.info in autofit_workspace + HowToFit, EP state figure); phase 6b SHIPPED 2026-09-14 in two waves (complete/2026/09/model-figures-rollout-lens.md — HowToLens#81 + autolens_workspace#543 wave 1, autolens_workspace#546 + HowToLens#83 wave 2; 102 scripts and 12 tutorials with their notebook twins). The per-figure reading commentary was RETIRED on the human's ruling the same day: every opener block is now two fixed paragraphs and the figure-rendering vocabulary is stripped from later-site notes, which supersedes 6b's "Pattern" section and retires its render-to-verify-vocabulary requirement. The same standard was swept across the six unclaimed repos as model-figure-prose-simplify (complete/2026/09/model-figure-prose-simplify.md — autofit_workspace#156, six PRs). Remaining cuts of phase 6: (b2) SLaM stages, (c) PyAutoGalaxy surfaces. 6 phased prompts; 1 → 2 → 3 in order, 4 after 2, 5 after 4, 6 (rollout across every workspace, HowTo chapter and sibling project) after 3 and 4; per-search figure output stays opt-in until phase-3 acceptance renders pass; sibling bug prompts under draft/bug/autofit/ are standalone.
- title: autolens_inference — inference benchmarking repo, birth to first base run
- ledger: https://github.com/PyAutoLabs/PyAutoInsight/blob/main/campaigns.yaml
- coordination: PyAutoInsight owns current inference campaign intent and pending domain tasks; project
wiki/project/state.mdretains detailed evidence/history, and Cortexprojects/autolens_inference.mdretains scientific run records and human conclusions. This Mind epic preserves implementation history, not an independent campaign queue. - notes: phase 1 SHIPPED 2026-09-10 (complete/2026/09/autolens-inference-birth.md); phase 2 SHIPPED 2026-09-11 (complete/2026/09/scrap-inference-programme.md — autolens_profiling#246 / PyAutoBrain#376 / PyAutoMind#401; archive ref
archive/condemned/autolens-profiling/inference-programme@c8b60580); 4 phases — 1 birth + registration (PyAutoMind#399), 2 Gut-archive and delete autolens_profiling's searches tier / baselines / inference notes (nothing inherited), 3 backend-parameterised SLaM driver + per-stage results + submit scripts (SHIPPED 2026-09-11, autolens_inference#3, complete/2026/09/slam-base-driver.md), 4 the first run on PyAutoCortexprojects/autolens_inference.md(5-stage HST SLaM × {numba_cpu, jax_cpu, jax_gpu} × {dense, sparse}). Science half: that ledger. Ledger moved to autolens_inference/wiki/project/state.md when phase 3 landed 2026-09-11.
- title: Linear-solver accuracy/tolerance programme — a standing autolens_profiling package for positive-only solver studies
- ledger: autolens_profiling/wiki/campaigns/linear_solver_accuracy.md (contract: complete/2026/09/linear-solver-accuracy-study.md)
- status: phase 2 SHIPPED 2026-09-30 — PyAutoArray#595 merged (7a89e19a0, forward polish; pending release) + autolens_profiling#357 merged (4652580b2, ledger Phase 2 rows), issue PyAutoArray#594 closed, record
complete/2026/09/raw-pdip-forward-polish.md; phase 1 shipped 2026-09-30 — autolens_profiling#355 merged (3ad68afad), recordcomplete/2026/09/linear-solver-accuracy-study.md; next = phase 3https://github.com/PyAutoLabs/PyAutoPulse/blob/main/tasks/mge_nnls_fix_pyautoarray_571_slam_60.md(GPU/A100 timing + parity rows; blocked on a release shipping PyAutoArray#595) - notes: human intent 2026-09-30 — solver tolerance/accuracy keeps recurring (#571/#572/#573, certified solver, 07-09 NNLS ledger, warm-start memo), so it gets one home that accumulates runs and data across releases. Phase 1 =
scripts/lens/solver/package + corpus + CPU fp64 accuracy/early-stopping study + pre-registered rule + wiki page. Phase 2 = PyAutoArray fix per the verdict (shipped:complete/2026/09/raw-pdip-forward-polish.md; library-first, then re-verify the euclid latent test on library main). Phase 3 = GPU/vmap/A100 timing + parity rows (absorbshttps://github.com/PyAutoLabs/PyAutoPulse/blob/main/tasks/mge_nnls_fix_pyautoarray_571_slam_60.md). Standing: re-run the accuracy cell per release.
- title: Cluster strong lensing — Source & Cluster arc
- ledger: draft/feature/autolens/source_cluster_arc.md
- status: In progress — 1a–1d, phase 3a audit (profiling#364, workspace_test#341) and phase 3b field-preserving cap fix (Galaxy#646, profiling#365, workspace_test#343; record
complete/2026/10/evaluation-grid-cap-field.md) merged. No later phase issued. Remaining solver work stays transferred to cluster-pointsolver-speed. - notes: Issue ONE bounded phase at a time; no bulk queue. Preserve original phase numbers and the approved 2026-10-01 ownership split. Phases 3–8 have no blanket PointSolver gate; solver-dependent workloads retain correctness gates. Cortex phase 11 remains dropped under R-20260907-05; any future science birth needs a fresh explicit decision.
- title: Scientist adoption pilot — project resources, clear organ destinations and a growing independent Scientist
- ledger: draft/feature/pyautoscientist/collaborator_led_pyautoscientist_adoption_pilot.md
- status: In progress — project cards and organ-linked resource routing merged and published (Scientist PRs #56 and #58); remaining members unissued.
- notes: Heart test-workspace dropdowns and Broca docs/HowTo/workspace/assistant dropdowns are explicit members. Continue one bounded task at a time; preserve the Broca ownership-contract dependency. Starter, optional organs with grey available-to-add resources, upgrades preserving user records and collaborator validation remain in this epic. No collaborator details assumed; shared multi-contributor operation is later.