From 49470199e0ac34eb6761c5ce96d86e5627a5684f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 23 Aug 2026 15:50:00 +0000 Subject: [PATCH] =?UTF-8?q?mind:=20date=20the=20backlog=20=E2=80=94=20a=20?= =?UTF-8?q?`Filed:`=20header=20on=20all=20150=20draft=20prompts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The date convention covered the registries and `active/`, and missed the largest pool of tasks the Mind holds: `draft/` is 150 prompts against a handful of live rows, so the dashboard's Recent feed could reach only 10 of the 50 it holds. Most of what had been happening was invisible. Drafts now carry `Filed: YYYY-MM-DD` — the day the prompt was written — beside the `Issued:` an active prompt carries. A prompt keeps its `Filed:` when it advances and gains an `Issued:`; the later, more specific event dates the task. `lifecycle.py dates` covers both state folders, and the two want OPPOSITE readings of the same history — the switch is `--follow`. An `active/` prompt dates from the day it ARRIVED there (being issued is a `git mv`, so following the rename back would report the wrong day); a `draft/` prompt dates from the day it was WRITTEN, wherever it lived then. The 2026-07-13 lifecycle migration `git mv`-ed 42 prompts in one commit: without `--follow` all 42 date from the migration rather than from themselves. With it, the 150 spread across 53 distinct dates. All 150 backfilled from git history, none guessed — the Intake trailer and the claiming registry entry stand behind git as fallbacks, and every backfilled date still names its source in the file. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01L4HPWjv5rdzBAkKpfW1SbR --- REFERENCE.md | 33 +- dashboard.html | 293 ++++++++++++++++-- dashboard.md | 80 ++++- .../PROBE_adapt_double_square_coefficient.md | 1 + .../numba_kernel_shift_axes_swapped.md | 1 + .../pixel_scales_int_not_widened_to_tuple.md | 1 + .../pynufft_scipy_pinv2_dev_extra.md | 1 + ...econstruction_noise_map_solver_mismatch.md | 1 + .../ep_scale_collapse_basin_cure_or_caveat.md | 1 + ...x_011_message_log_partition_tuple_shape.md | 1 + .../loggaussian_prior_declares_own_support.md | 1 + .../autofit/plot_functions_discard_kwargs.md | 1 + ...test_mode_bypass_ordered_assertion_ties.md | 1 + ...erferometer_delaunay_nonpd_fitexception.md | 1 + .../interferometer_release_leg_oom.md | 2 + .../jax_likelihood_smoke_pins_stale.md | 1 + .../jax_point_source_point_smoke_sentinel.md | 1 + ...it_cache_not_hit_modeling_visualization.md | 1 + .../point_jax_vmap_parity_nondeterministic.md | 1 + .../point_solver_error_bisect_health.md | 1 + ...cal_pixel_scale_vs_dataset_pixel_scales.md | 1 + .../multi_dataset_jax_likelihood_xla_stall.md | 1 + .../health_fixes/jax_runtime_and_parity.md | 1 + .../health_fixes/jit_visualization_outputs.md | 1 + .../health_fixes/release_timeout_policy.md | 1 + .../health_fixes/samples_parameter_paths.md | 1 + ...l_api_drift_ellipse_and_plot_grid_lines.md | 1 + ..._replace_transform_stack_with_bijectors.md | 1 + .../15_transformed_message_logpdf_jacobian.md | 1 + draft/bug/priors/z_features.md | 1 + .../pyautoconf_rename_functional_leftovers.md | 1 + ...ejects_autocti_after_deleting_notebooks.md | 1 + ...ng_baselines_orphaned_and_window_filled.md | 1 + ...t_source_json_datasets_record_no_regime.md | 1 + .../status_sh_repos_missing_source.md | 1 + ...blished_autoreduce_09_missing_312_floor.md | 1 + .../aplt_output_drift_remaining_repos.md | 1 + ...bug_fix_the_tracer_fits_existence_guard.md | 1 + .../jax_likelihood_pins_stale_by_1e4.md | 1 + draft/docs/autocti/api_rst_rewrite.md | 1 + draft/docs/autolens/multi_galaxy_package.md | 1 + draft/docs/autolens/split_lensing_regimes.md | 1 + .../markdown_regeneration_sigma_min.md | 1 + .../sampler_cli_output_workspace_sweep.md | 1 + .../howtolens/ch4_mask_overlay_never_drawn.md | 1 + .../howtolens/cluster_pixelized_source.md | 1 + .../docs/pyautobrain/rtd_organism_currency.md | 1 + .../workspaces/assistants_regime_extension.md | 1 + .../workspaces/cluster_regime_narrative.md | 1 + .../extra_galaxies_feature_parity.md | 1 + .../workspaces/plot_coverage_followups.md | 2 + .../preloads_advanced_workspace_guide.md | 1 + ...ate_shear_galaxy_idiom_to_group_cluster.md | 1 + ...rectangular_mesh_enzi_citation_examples.md | 1 + .../unify_ai_assistant_workspace_readmes.md | 2 + .../feature/autoarray/arcsecond_to_decimal.md | 1 + .../autoarray/multiwavelength_inversion.md | 47 +-- ...mba_cpu_likelihood_kernel_cdf_fast_path.md | 1 + ..._likelihood_mge_convolution_and_caching.md | 1 + .../rectangular_bilinear_rtu_mesh_split.md | 1 + .../autoarray/rectangular_multi_submesh.md | 1 + draft/feature/autofit/ep_analytic_updates.md | 1 + draft/feature/autofit/ep_lbfgs_jax.md | 1 + .../autofit/prior_exit_sampler_coverage.md | 1 + .../autofit/search_seed_reproducibility.md | 1 + .../remote_mcp_deployment_tiers.md | 1 + .../dpie_sigma0_parameterization.md | 1 + draft/feature/autogalaxy/piemass_potential.md | 1 + .../autolens/area_magnification_leggos.md | 1 + .../magnification_errors_posterior_draws.md | 1 + .../magnification_maps_visualization.md | 1 + .../autolens/point_magnification_api.md | 1 + draft/feature/autolens/source_cluster_arc.md | 1 + .../autolens_jax_joss_benchmark_repo.md | 1 + .../jax_compile_time_profiling.md | 1 + ...arch_settings_estimation_infrastructure.md | 1 + .../joss_cluster_benchmark_tuning.md | 1 + .../oversampled_psf_dataset_adoption.md | 1 + draft/feature/autonomy/10_scheduled_runs.md | 1 + .../jax_substructure/5_prng_key_vmap_noise.md | 1 + .../6_deflection_equivalence_test.md | 1 + .../profiling_agent_jax_compile_time_scope.md | 1 + .../release_board_run_logs_enrichment.md | 1 + .../pyautomind/complete_archive_wiki.md | 1 + .../pyautomind/repos-sync-config-stamper.md | 1 + .../cluster_pixelized_analysisfactor.md | 1 + .../workspaces/cluster_source_science.md | 1 + .../gallery_runner_missing_tiers.md | 1 + draft/feature/workspaces/group_los_halos.md | 1 + .../workspaces/group_subhalo_sensitivity.md | 1 + ...estore_multiple_sources_lensing_of_lens.md | 1 + .../jwst_lw_untracked_gitignore_gap.md | 1 + .../maintenance/autolens_profiling/polish.md | 1 + .../cosmos_web_ring_mask_dtype.md | 1 + ...atex_docstrings_invalid_escape_warnings.md | 1 + .../rectangular_experiments_gut_stash.md | 1 + .../stale_api_rot_audit.md | 1 + draft/maintenance/ci/copilot_auto_review.md | 1 + draft/maintenance/ci/run_smoke_copy_drift.md | 1 + .../ci/smoke_install_stale_jax_pin.md | 1 + .../libraries/defer_scipy_sparse_import.md | 1 + .../libraries/dep_cap_refresh_2026_08.md | 1 + .../remove_pynufft_legacy_transformer.md | 1 + .../untrack_generated_fits_test_artifacts.md | 1 + ...refactor_witness_map_missing_autonerves.md | 1 + .../pyautomemory/canonical_key_todo_sweep.md | 1 + .../history_policy_generated_block.md | 1 + .../committed_capped_smoke_datasets.md | 1 + .../workspaces/config_key_mirror_drift.md | 1 + .../notebook_setup_notebook_drift_siblings.md | 1 + .../workspaces/read_through_issues.md | 1 + .../unpark_imaging_scaling_relation_slam.md | 1 + .../autoarray/matern_vendor_bessel_kve.md | 1 + .../split_fitness_batch_size_lh_vs_latent.md | 1 + .../critical_curves_dispatch_cluster.md | 1 + .../einstein_radius_jit_native_seed_finder.md | 1 + .../remove_eden_packaging_tooling.md | 1 + .../pyautomind/repos_sync_check_dedup.md | 1 + .../autocti/cti_release_train_wiring.md | 1 + ...delaunay_callback_persistent_cache_miss.md | 1 + ..._interpolator_pure_callback_vmap_memory.md | 1 + draft/research/autoarray/delaunay_research.md | 1 + .../rectangular_kernel_bandwidth_defaults.md | 1 + draft/research/autobuild/git_docs.md | 1 + .../autofit/autofit_profiling_bootstrap.md | 1 + .../autofit/priors_and_messages_math_audit.md | 1 + .../cluster_extended_source_inference.md | 1 + .../autolens/quick_update_plotting_cost.md | 1 + .../cluster_gradient_search_benchmark.md | 2 + .../multiband_compile_census_completion.md | 1 + .../point_solver_profiling_cells.md | 1 + .../jax_jit_profiling.md | 1 + .../analytic_gaussian_benchmark.md | 1 + draft/research/graphical_ep/ep_campaign.md | 1 + draft/research/graphical_ep/ep_scoping.md | 1 + .../graphical_ep/graphical_scoping.md | 1 + .../research/graphical_ep/ic50_ep_scale_up.md | 1 + .../slope_hierarchy_methods_writeup.md | 1 + .../slope_hierarchy_n25_scale_up.md | 1 + .../libraries/intel_macos_support_policy.md | 1 + .../research/libraries/python_312_minimum.md | 2 + ...ashboardify_the_brain_s_operational_sur.md | 1 + ...rboard_psf_mismatch_residual_diagnostic.md | 1 + .../acceptance_noise_rebaseline.md | 1 + .../pyautoreduce/legacy_flux_scale_parity.md | 1 + .../mge_jit_regression_rebaseline.md | 1 + .../mesh_magnification_correctness.md | 1 + ...ore_workspace_test_likelihood_baselines.md | 1 + .../test/workspaces/smoke_workspace_fixes.md | 1 + ...bug_in_autocti_workspace_the_dataset_1d.md | 1 + .../convolver_blurring_image_warning.md | 1 + draft/triage/jax_zero_contour.md | 57 ++-- .../nightly_release_blocked_eight_nights.md | 1 + scripts/lifecycle.py | 143 ++++++--- tests/test_lifecycle_dates.py | 69 ++++- 155 files changed, 746 insertions(+), 129 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index 03399781..7d40892c 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -300,6 +300,7 @@ Free-form markdown. Strong conventions: Autonomy: supervised # safe | supervised | human-required Priority: normal # low | normal | high Status: draft + Filed: 2026-07-09 # optional; the day the prompt was written Issued: 2026-08-19 # optional; set when the prompt advances to active/ Blocked-by: PyAutoFit#1436 # optional; see "Declaring a gate" below ``` @@ -389,9 +390,16 @@ it leaves the backlog: | `active.md` | `- issued: YYYY-MM-DD` | the day the task got its GitHub issue | | `planned.md` | `- filed: YYYY-MM-DD` | the day it was scoped | | `parked.md` | `- parked: YYYY-MM-DD` | the day it stopped | -| `active/.md` | `Issued: YYYY-MM-DD` | the prompt's own copy, in its light header | +| `draft/**/.md` | `Filed: YYYY-MM-DD` | the day the prompt was written | +| `active/.md` | `Issued: YYYY-MM-DD` | the day it got its issue, in its light header | | `complete///.md` | `- completed: YYYY-MM-DD` | unchanged — the ledger already did this | +The backlog is the **largest** pool of tasks the Mind holds — 150 prompts +against a handful of live rows — so `draft/` carrying a date is what lets the +dashboard's Recent feed see most of the work at all. A prompt keeps its +`Filed:` when it advances to `active/` and gains an `Issued:`; the later, more +specific event is the one that dates the task. + The **key names the event**, so a merged feed can say what each date means rather than showing a bare timestamp. Reading is tolerant: `registered:`, `started:`, `planned:`, `found:` and `shipped:` are all read as dates too (the @@ -413,17 +421,28 @@ already holds, annotating each inferred date with where it came from: Issued: 2026-08-18 (backfilled from parked.md `parked:`) ``` -The sources, in order: the commit that introduced the entry or moved the prompt -into `active/`; the dated registry entry that claims the prompt; a date the -entry already stated in its own prose. Nothing is guessed — an entry with no +The sources, in order: git — the commit that introduced the entry, wrote the +draft, or moved the prompt into `active/`; the prompt's own Intake trailer +(``); the dated +registry entry that claims the prompt; a date the entry already stated in its +own prose. + +The two states want **opposite** readings of the same history, and the switch is +`--follow`. An `active/` prompt dates from the day it *arrived* there (being +issued is a `git mv`, so following the rename back would report the wrong day); +a `draft/` prompt dates from the day it was *written*, wherever it lived then — +the 2026-07-13 lifecycle migration `git mv`-ed 42 prompts in one commit, and +without `--follow` all 42 would date from the migration rather than from +themselves. Nothing is guessed — an entry with no evidence is reported for a human to date by hand. A **shallow** clone (CI, a cloud session) cannot see past its boundary commit, so git dates at or before it are discarded rather than stamping every task with the day the clone was made. -The dashboard's [Recent](dashboard.md#recent) table is the payoff: the 20 -newest events on the work in hand — issued, parked, filed — in one place. -Shipped work stays out of it; `complete/index.md` is where the ledger is read. +The dashboard's [Recent](dashboard.md#recent) table is the payoff: it holds the +50 newest events on the work in hand — issued, parked, filed — and shows 10, +opening the next 10 on each tap of `…`. Shipped work stays out of it; +`complete/index.md` is where the ledger is read. ### Completion record (`complete///.md`) schema diff --git a/dashboard.html b/dashboard.html index f80e3301..89d3a06b 100644 --- a/dashboard.html +++ b/dashboard.html @@ -246,69 +246,310 @@

Backlog

CTI release-train wiring — first modern autocti releaseautocti · medium · human-required · normal

Recent markdown version

-

The 10 newest things to happen to the work in hand, newest first — issued, parked, filed. Every other section on this page is laid out by state, which is exactly why none of them can answer “what has been happening?”. Shipped work is not here: it is read from complete/index.md, and a thousand records deep it would crowd out everything anyone can still act on.

+

The 50 newest things to happen to the work in hand, newest first — issued, parked, filed. Every other section on this page is laid out by state, which is exactly why none of them can answer “what has been happening?”. Shipped work is not here: it is read from complete/index.md, and a thousand records deep it would crowd out everything anyone can still act on. Showing the newest 10; … opens the next 10.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + +
2026-08-22filedsmoke_install.sh's stale jax<0.7 pin — CI is on the right
2026-08-22filedmulti_dataset/jax_likelihood scripts hang to the timeout cap (XLA…
2026-08-22filedUntrack the generated FITS test artifacts in autoarray
2026-08-22filedThe reconstruction noise map describes a different estimator than the
2026-08-22filedRemove pynufft + legacy TransformerNUFFTPyNUFFT
2026-08-22filedPoint-source JSON datasets record no resolution regime
2026-08-22filedIs Intel macOS a supported platform, and what is the
2026-08-22filedDefer the eager scipy.sparse import in derivative_util (~0.10 s of
2026-08-22filedBug: fix the tracer.fits existence guard in autolens_workspace…
2026-08-21filedRectangular mesh split: Bilinear (fast CPU default) vs RTU…
2026-07-22plannedlatent-nan-guard-honest-run
2026-07-21
2026-07-08
2026-06-05
2026-05-21
+

Epics markdown version

Long-running multi-phase programmes — 📋 copies a prompt that works out where the epic stands from its ledger and continues it from the next logical point. Members are worked in order through the epic's ledger — continue the epic rather than starting one standalone.

JAX profiling — inference programmeledger: autolens_profiling/results/notes/inference/PROGRAMME.md

diff --git a/dashboard.md b/dashboard.md index c123c5d6..b0a4c4f2 100644 --- a/dashboard.md +++ b/dashboard.md @@ -1300,20 +1300,88 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned. ## Recent -The 10 newest things to happen to the work in hand, newest first — issued, parked, filed. Every other section on this page is laid out by state, which is exactly why none of them can answer “what has been happening?”. Shipped work is not here: it is read from `complete/index.md`, and a thousand records deep it would crowd out everything anyone can still act on. +The 50 newest things to happen to the work in hand, newest first — issued, parked, filed. Every other section on this page is laid out by state, which is exactly why none of them can answer “what has been happening?”. Shipped work is not here: it is read from `complete/index.md`, and a thousand records deep it would crowd out everything anyone can still act on. Showing the newest 10; … opens the next 10. | Date | Event | Task | |------|-------|------| +| 2026-08-22 | filed | smoke_install.sh's stale jax<0.7 pin — CI is on the right | +| 2026-08-22 | filed | multi_dataset/jax_likelihood scripts hang to the timeout cap (XLA… | +| 2026-08-22 | filed | Untrack the generated FITS test artifacts in autoarray | +| 2026-08-22 | filed | The reconstruction noise map describes a different estimator than the | +| 2026-08-22 | filed | Remove pynufft + legacy TransformerNUFFTPyNUFFT | +| 2026-08-22 | filed | Point-source JSON datasets record no resolution regime | +| 2026-08-22 | filed | Is Intel macOS a supported platform, and what is the | +| 2026-08-22 | filed | Defer the eager scipy.sparse import in derivative_util (~0.10 s of | +| 2026-08-22 | filed | Bug: fix the tracer.fits existence guard in autolens_workspace… | +| 2026-08-21 | filed | Rectangular mesh split: Bilinear (fast CPU default) vs RTU… | + +
… 10 more (40 left) + +| Date | Event | Task | +|------|-------|------| +| 2026-08-21 | filed | Numba PSF gathers derive the y/x kernel shifts from the | +| 2026-08-20 | filed | Numba CPU likelihood phase 2: kernel-CDF numba fast path (the | +| 2026-08-20 | filed | Numba CPU likelihood phase 1: batched MGE convolution +… | +| 2026-08-19 | filed | status.sh --repos sources a file that no longer exists | +| 2026-08-19 | filed | jax 0.11 breaks beta/gamma message log_partition under jit ('tuple'… | +| 2026-08-19 | filed | autolens_workspace_test jax_likelihood pins: 4 scripts fail smoke on… | +| 2026-08-19 | filed | autofit_profiling: bootstrap the repo + general PyAutoFit profiling… | +| 2026-08-19 | filed | autoreduce 0.9 on PyPI never got the Python 3.12 floor | | 2026-08-19 | issued | @PyAutoFit TransformedMessage.factor_gradient crashes on first… | +| 2026-08-19 | filed | Release board: local run_logs enrichment | + +
… 10 more (30 left) + +| Date | Event | Task | +|------|-------|------| +| 2026-08-19 | filed | Refactor Agent witness map lacks PyAutoNerves test suite | +| 2026-08-19 | filed | RTD organism docs currency: Nerves page, organ-count drift, hands.md… | +| 2026-08-19 | filed | PyAutoConf rename leftovers in Brain functional surfaces | +| 2026-08-19 | filed | Explore: dashboardify the Brain's operational surfaces with pasteable… | +| 2026-08-19 | filed | Deduplicate repos_sync.py's check/write pairs | +| 2026-08-19 | filed | Bug in autocti_workspace: the dataset_1d results/database example… | | 2026-08-18 | parked | single-source-density-design | | 2026-08-18 | parked | prior-message-collapse-design | +| 2026-08-18 | filed | @PyAutoFit TransformedMessage.logpdf/pdf omit the transform… | +| 2026-08-17 | filed | Which other searches need prior-support handling — coverage audit… | + +
… 10 more (20 left) + +| Date | Event | Task | +|------|-------|------| +| 2026-08-17 | filed | Teach repos_sync --write to stamp organ config surfaces | +| 2026-08-16 | filed | LogGaussianPrior misreports its own support as (-inf, inf) | +| 2026-08-14 | filed | Three jax_likelihood pins are stale by ~1.24e-4 and fail the | | 2026-08-09 | found | isothermal-ell-sph-oversampling-at-the-cusp | +| 2026-08-09 | filed | pixel_scales given as an int (or np.float64) is never widened | | 2026-08-08 | parked | pyautoreduce-slacs1430-acs-comparison | -| 2026-07-22 | planned | latent-nan-guard-honest-run | -| 2026-07-21 | filed | remote-mcp-deployment-tiers | -| 2026-07-08 | filed | samples-parameter-paths | -| 2026-06-05 | filed | piemass-potential | -| 2026-05-21 | filed | jax-point-source-point-smoke-sentinel | +| 2026-08-08 | filed | Regenerate autolens_workspace markdown/ so the MGE pages show… | +| 2026-08-07 | filed | autofit.plot functions accept **kwargs and silently discard them | +| 2026-08-07 | filed | Regenerate setup_notebook-drifted notebooks in… | +| 2026-08-06 | filed | Triage: Convolver "No blurring_image provided" warning in canonical… | + +
… 10 more (10 left) + +| Date | Event | Task | +|------|-------|------| +| 2026-08-06 | filed | Rewrite PyAutoCTI docs/api — 55 of 89 autosummary entries are | +| 2026-08-06 | filed | Dependency-cap refresh 2026-08: safe bumps, astropy 8 decision, two… | +| 2026-08-05 | filed | Give PyAutoFit searches a seed — today no search can | +| 2026-08-04 | filed | dataset/imaging/jwst_lw is untracked because the gitignore was never… | +| 2026-08-04 | filed | cosmos_web_ring stores boolean masks as float64, wasting ~3.4 MB of | +| 2026-08-04 | filed | autolens_workspace_developer: broad stale-API rot (56 symbols, no CI) | +| 2026-08-04 | filed | aplt.Output stale-API drift in the remaining workspace repos | +| 2026-08-04 | filed | Nightly release has been blocked 8 nights running — triage | +| 2026-08-04 | filed | HowToLens ch4 tutorial 3: mask overlay is never actually drawn | +| 2026-08-04 | filed | Heart script_timing baselines are orphaned by path moves and filled | + +
+ +
+ +
+ +
_Dates come from each task's registry entry — `lifecycle.py dates` reports anything undated._ diff --git a/draft/bug/autoarray/PROBE_adapt_double_square_coefficient.md b/draft/bug/autoarray/PROBE_adapt_double_square_coefficient.md index 8b257c19..d01d3563 100644 --- a/draft/bug/autoarray/PROBE_adapt_double_square_coefficient.md +++ b/draft/bug/autoarray/PROBE_adapt_double_square_coefficient.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft +Filed: 2026-07-17 (backfilled from git) **This is a review/probe request, not an implementation task — the answer could be "intentional, document it" or "bug, fix it", and the two have very different diff --git a/draft/bug/autoarray/numba_kernel_shift_axes_swapped.md b/draft/bug/autoarray/numba_kernel_shift_axes_swapped.md index c6d991dd..55323d91 100644 --- a/draft/bug/autoarray/numba_kernel_shift_axes_swapped.md +++ b/draft/bug/autoarray/numba_kernel_shift_axes_swapped.md @@ -8,6 +8,7 @@ Difficulty: low Autonomy: supervised Priority: medium Status: formalised +Filed: 2026-08-21 (backfilled from git) Found 2026-08-21 while fixing `draft/bug/autoarray/numba_first_call_garbage_psf_weighted_data.md` (the diff --git a/draft/bug/autoarray/pixel_scales_int_not_widened_to_tuple.md b/draft/bug/autoarray/pixel_scales_int_not_widened_to_tuple.md index be276f9a..e8c003b4 100644 --- a/draft/bug/autoarray/pixel_scales_int_not_widened_to_tuple.md +++ b/draft/bug/autoarray/pixel_scales_int_not_widened_to_tuple.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: medium Status: draft +Filed: 2026-08-09 (backfilled from git) ## Why this exists diff --git a/draft/bug/autoarray/pynufft_scipy_pinv2_dev_extra.md b/draft/bug/autoarray/pynufft_scipy_pinv2_dev_extra.md index fc805b2f..a26b3737 100644 --- a/draft/bug/autoarray/pynufft_scipy_pinv2_dev_extra.md +++ b/draft/bug/autoarray/pynufft_scipy_pinv2_dev_extra.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: superseded +Filed: 2026-07-29 (backfilled from git) ## Original request diff --git a/draft/bug/autoarray/reconstruction_noise_map_solver_mismatch.md b/draft/bug/autoarray/reconstruction_noise_map_solver_mismatch.md index 7c214246..5e9ef911 100644 --- a/draft/bug/autoarray/reconstruction_noise_map_solver_mismatch.md +++ b/draft/bug/autoarray/reconstruction_noise_map_solver_mismatch.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: human-required Priority: low Status: draft +Filed: 2026-08-22 (backfilled from git) ## Why this exists diff --git a/draft/bug/autofit/ep_scale_collapse_basin_cure_or_caveat.md b/draft/bug/autofit/ep_scale_collapse_basin_cure_or_caveat.md index 3a8a368d..a41e696e 100644 --- a/draft/bug/autofit/ep_scale_collapse_basin_cure_or_caveat.md +++ b/draft/bug/autofit/ep_scale_collapse_basin_cure_or_caveat.md @@ -13,6 +13,7 @@ Phase: 2 EP", so do not pick this up as ordinary work. The evidence below is the expensive part and it is already paid for. Issue: (none — never issued. Parent report https://github.com/PyAutoLabs/PyAutoFit/issues/1405 stays open.) +Filed: 2026-08-11 (backfilled from git) ## Why this is `too-large` / `human-required` — read before starting diff --git a/draft/bug/autofit/jax_011_message_log_partition_tuple_shape.md b/draft/bug/autofit/jax_011_message_log_partition_tuple_shape.md index 2a705390..45ec3889 100644 --- a/draft/bug/autofit/jax_011_message_log_partition_tuple_shape.md +++ b/draft/bug/autofit/jax_011_message_log_partition_tuple_shape.md @@ -9,6 +9,7 @@ Difficulty: small Autonomy: supervised Priority: medium Status: draft +Filed: 2026-08-19 (backfilled from git) Found during the JAX-default-dependency arc (PyAutoLens#702): widening the jax cap in autonerves from `<0.11.0` to `<0.12.0` let CI resolve jax/jaxlib 0.11.1, diff --git a/draft/bug/autofit/loggaussian_prior_declares_own_support.md b/draft/bug/autofit/loggaussian_prior_declares_own_support.md index 47d38d28..3f7b0050 100644 --- a/draft/bug/autofit/loggaussian_prior_declares_own_support.md +++ b/draft/bug/autofit/loggaussian_prior_declares_own_support.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-16 (backfilled from git) Filed 2026-08-16. Follow-up 3 owed by the prior-support `Clipper` (`complete/2026/08/prior-support-clipper.md`, PyAutoFit#1477), which worked diff --git a/draft/bug/autofit/plot_functions_discard_kwargs.md b/draft/bug/autofit/plot_functions_discard_kwargs.md index fcf57f09..db2ecddd 100644 --- a/draft/bug/autofit/plot_functions_discard_kwargs.md +++ b/draft/bug/autofit/plot_functions_discard_kwargs.md @@ -9,6 +9,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-07 (backfilled from git) Filed 2026-08-07, found while fixing `docs/api/plot.rst` (complete/2026/08/pyautofit_plot_rst_dead_plotters.md). Deliberately left out of diff --git a/draft/bug/autofit/test_mode_bypass_ordered_assertion_ties.md b/draft/bug/autofit/test_mode_bypass_ordered_assertion_ties.md index 3149fe80..83db6ace 100644 --- a/draft/bug/autofit/test_mode_bypass_ordered_assertion_ties.md +++ b/draft/bug/autofit/test_mode_bypass_ordered_assertion_ties.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised — STILL REPRODUCES; see the 2026-08-09 note before grading this against main +Filed: 2026-07-17 (backfilled from git) ## 2026-08-09 — do NOT mistake the adjacent FitException catch for this fix diff --git a/draft/bug/autolens/interferometer_delaunay_nonpd_fitexception.md b/draft/bug/autolens/interferometer_delaunay_nonpd_fitexception.md index 9ee0d716..4e7bd754 100644 --- a/draft/bug/autolens/interferometer_delaunay_nonpd_fitexception.md +++ b/draft/bug/autolens/interferometer_delaunay_nonpd_fitexception.md @@ -10,6 +10,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-21 (backfilled from git) Split out from `slam-adapt-inversion-cascade` (#300, autolens_workspace) during the 2026-07-21 folded-in Delaunay verification. The imaging Delaunay/SLaM/double-ring cluster was fixed there; this interferometer diff --git a/draft/bug/autolens/interferometer_release_leg_oom.md b/draft/bug/autolens/interferometer_release_leg_oom.md index d668458e..17e5d642 100644 --- a/draft/bug/autolens/interferometer_release_leg_oom.md +++ b/draft/bug/autolens/interferometer_release_leg_oom.md @@ -1,5 +1,7 @@ # interferometer/start_here.py OOM in nightly release-validation integrate leg +Filed: 2026-07-31 (backfilled from git) + Filed 2026-07-31 from the phase-4 ship gate of point-source-chi-squared-variants (#657): Heart RED traced to the nightly Release Integrate run. diff --git a/draft/bug/autolens/jax_likelihood_smoke_pins_stale.md b/draft/bug/autolens/jax_likelihood_smoke_pins_stale.md index fd9d6d10..a4b4cd83 100644 --- a/draft/bug/autolens/jax_likelihood_smoke_pins_stale.md +++ b/draft/bug/autolens/jax_likelihood_smoke_pins_stale.md @@ -8,6 +8,7 @@ Difficulty: low Autonomy: supervised Priority: normal Status: draft +Filed: 2026-08-19 (backfilled from git) ## Finding (2026-08-19, control-tested during lazy-heavy-imports #1505) diff --git a/draft/bug/autolens/jax_point_source_point_smoke_sentinel.md b/draft/bug/autolens/jax_point_source_point_smoke_sentinel.md index c9cd37cc..8d4c7f6c 100644 --- a/draft/bug/autolens/jax_point_source_point_smoke_sentinel.md +++ b/draft/bug/autolens/jax_point_source_point_smoke_sentinel.md @@ -11,6 +11,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft — NEEDS RE-VERIFICATION before any work (see 2026-08-09 note) +Filed: 2026-07-27 (backfilled from git) > Restored 2026-07-27. This prompt file was dropped from the flat `issued/` pile > during the prompt-lifecycle migration (PR #71/#72) as "legacy", but the task was diff --git a/draft/bug/autolens/jit_cache_not_hit_modeling_visualization.md b/draft/bug/autolens/jit_cache_not_hit_modeling_visualization.md index f727ae48..59cc44b9 100644 --- a/draft/bug/autolens/jit_cache_not_hit_modeling_visualization.md +++ b/draft/bug/autolens/jit_cache_not_hit_modeling_visualization.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft +Filed: 2026-07-30 (backfilled from git) ## Symptom diff --git a/draft/bug/autolens/point_jax_vmap_parity_nondeterministic.md b/draft/bug/autolens/point_jax_vmap_parity_nondeterministic.md index daad5b96..7e1a5aea 100644 --- a/draft/bug/autolens/point_jax_vmap_parity_nondeterministic.md +++ b/draft/bug/autolens/point_jax_vmap_parity_nondeterministic.md @@ -9,6 +9,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-22 (backfilled from git) `autolens_workspace_test/scripts/jax_likelihood_functions/point_source/point.py` fails its JAX-vs-numpy parity assert under the smoke env, and **fails differently between runs**: diff --git a/draft/bug/autolens/point_solver_error_bisect_health.md b/draft/bug/autolens/point_solver_error_bisect_health.md index 79a90926..e9fbb22c 100644 --- a/draft/bug/autolens/point_solver_error_bisect_health.md +++ b/draft/bug/autolens/point_solver_error_bisect_health.md @@ -14,6 +14,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 1 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # PointSolver error-behavior change: bisect the 2025-11→2026-05 candidates, then health-harden diff --git a/draft/bug/autolens_workspace/script_local_pixel_scale_vs_dataset_pixel_scales.md b/draft/bug/autolens_workspace/script_local_pixel_scale_vs_dataset_pixel_scales.md index 8682aed8..2b29b453 100644 --- a/draft/bug/autolens_workspace/script_local_pixel_scale_vs_dataset_pixel_scales.md +++ b/draft/bug/autolens_workspace/script_local_pixel_scale_vs_dataset_pixel_scales.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-03 (backfilled from git) Found while validating PyAutoArray#430 / PR#431 (the small-datasets loader fix), 2026-08-03. diff --git a/draft/bug/autolens_workspace_test/multi_dataset_jax_likelihood_xla_stall.md b/draft/bug/autolens_workspace_test/multi_dataset_jax_likelihood_xla_stall.md index 8cf34472..9ad2d63b 100644 --- a/draft/bug/autolens_workspace_test/multi_dataset_jax_likelihood_xla_stall.md +++ b/draft/bug/autolens_workspace_test/multi_dataset_jax_likelihood_xla_stall.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft +Filed: 2026-08-22 (backfilled from git) ## Why this is filed now diff --git a/draft/bug/health_fixes/jax_runtime_and_parity.md b/draft/bug/health_fixes/jax_runtime_and_parity.md index f9c89f19..290041f5 100644 --- a/draft/bug/health_fixes/jax_runtime_and_parity.md +++ b/draft/bug/health_fixes/jax_runtime_and_parity.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-07-06 (backfilled from git) ## 2026-08-09 — EVERY SCRIPT PATH BELOW IS STALE (they moved, they were not deleted) diff --git a/draft/bug/health_fixes/jit_visualization_outputs.md b/draft/bug/health_fixes/jit_visualization_outputs.md index bfbff28a..ef92ffe6 100644 --- a/draft/bug/health_fixes/jit_visualization_outputs.md +++ b/draft/bug/health_fixes/jit_visualization_outputs.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-07-06 (backfilled from git) ## 2026-08-09 — EVERY SCRIPT PATH BELOW IS STALE (they moved, they were not deleted) diff --git a/draft/bug/health_fixes/release_timeout_policy.md b/draft/bug/health_fixes/release_timeout_policy.md index 01eccb21..e5684687 100644 --- a/draft/bug/health_fixes/release_timeout_policy.md +++ b/draft/bug/health_fixes/release_timeout_policy.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-06 (backfilled from git) ## 2026-08-09 — 1 of the 5 is resolved via § Required work option 3b diff --git a/draft/bug/health_fixes/samples_parameter_paths.md b/draft/bug/health_fixes/samples_parameter_paths.md index 4ff4f885..ad4755b1 100644 --- a/draft/bug/health_fixes/samples_parameter_paths.md +++ b/draft/bug/health_fixes/samples_parameter_paths.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-07-06 (backfilled from git) ## Context diff --git a/draft/bug/howtogalaxy/small_api_drift_ellipse_and_plot_grid_lines.md b/draft/bug/howtogalaxy/small_api_drift_ellipse_and_plot_grid_lines.md index 481dfdf6..0500759b 100644 --- a/draft/bug/howtogalaxy/small_api_drift_ellipse_and_plot_grid_lines.md +++ b/draft/bug/howtogalaxy/small_api_drift_ellipse_and_plot_grid_lines.md @@ -9,6 +9,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-22 (backfilled from git) Two independent, small stale-API call-sites in HowToGalaxy, both parked since 2026-04-10 and still parked after the 2026-07-21 census: diff --git a/draft/bug/priors/14_replace_transform_stack_with_bijectors.md b/draft/bug/priors/14_replace_transform_stack_with_bijectors.md index 07cc25f3..60d90b34 100644 --- a/draft/bug/priors/14_replace_transform_stack_with_bijectors.md +++ b/draft/bug/priors/14_replace_transform_stack_with_bijectors.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-05-18 (backfilled from git) Found during the priors/messages audit (see `PyAutoPrompt/autofit/priors_and_messages_math_audit.md`, finding C5). diff --git a/draft/bug/priors/15_transformed_message_logpdf_jacobian.md b/draft/bug/priors/15_transformed_message_logpdf_jacobian.md index acac21a6..3f72ae54 100644 --- a/draft/bug/priors/15_transformed_message_logpdf_jacobian.md +++ b/draft/bug/priors/15_transformed_message_logpdf_jacobian.md @@ -7,6 +7,7 @@ Autonomy: supervised Priority: normal Status: formalised — issue filed (PyAutoFit#1498); caller analysis complete (2026-08-19, below), awaiting human adjudication of the contract choice +Filed: 2026-08-18 (backfilled from git) Found 2026-08-18 while implementing the #1497 property sweep (prompt `bug/priors/09`). Same failure *shape* as census finding A4 (#1331-04): a diff --git a/draft/bug/priors/z_features.md b/draft/bug/priors/z_features.md index 0cae1a39..ca678600 100644 --- a/draft/bug/priors/z_features.md +++ b/draft/bug/priors/z_features.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: phases 1-3 SHIPPED; phase 4 = design (#1500) + parked 14 + findings 15-16 +Filed: 2026-05-18 (backfilled from git) > **2026-08-18 wrap-up sweep.** All nine confirmed bugs (01-08, 10) are fixed > and merged on PyAutoFit main — Phase 1 batch via #1344/PR#1345 (merged diff --git a/draft/bug/pyautobrain/pyautoconf_rename_functional_leftovers.md b/draft/bug/pyautobrain/pyautoconf_rename_functional_leftovers.md index f0ad73bb..9f5f0be8 100644 --- a/draft/bug/pyautobrain/pyautoconf_rename_functional_leftovers.md +++ b/draft/bug/pyautobrain/pyautoconf_rename_functional_leftovers.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-19 (backfilled from git) Found by the 2026-08-19 readability census (#237). The PyAutoConf → PyAutoNerves rename (package `autoconf` → `autonerves`) was fixed in the reader-facing docs diff --git a/draft/bug/pyautohands/generate_rejects_autocti_after_deleting_notebooks.md b/draft/bug/pyautohands/generate_rejects_autocti_after_deleting_notebooks.md index e30066e3..1dbe99f8 100644 --- a/draft/bug/pyautohands/generate_rejects_autocti_after_deleting_notebooks.md +++ b/draft/bug/pyautohands/generate_rejects_autocti_after_deleting_notebooks.md @@ -10,6 +10,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-30 (backfilled from git) Two defects, one destructive. diff --git a/draft/bug/pyautoheart/script_timing_baselines_orphaned_and_window_filled.md b/draft/bug/pyautoheart/script_timing_baselines_orphaned_and_window_filled.md index 7fd3446d..6ad122d7 100644 --- a/draft/bug/pyautoheart/script_timing_baselines_orphaned_and_window_filled.md +++ b/draft/bug/pyautoheart/script_timing_baselines_orphaned_and_window_filled.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: medium Status: formalised +Filed: 2026-08-04 (backfilled from git) Two independent defects in `PyAutoHeart/heart/checks/script_timing.py`, both found while diagnosing the jax_grad smoke timeouts (PyAutoHands#226). Neither is fixed by diff --git a/draft/bug/pyautolens/point_source_json_datasets_record_no_regime.md b/draft/bug/pyautolens/point_source_json_datasets_record_no_regime.md index 36891817..35031b57 100644 --- a/draft/bug/pyautolens/point_source_json_datasets_record_no_regime.md +++ b/draft/bug/pyautolens/point_source_json_datasets_record_no_regime.md @@ -10,6 +10,7 @@ Difficulty: medium Autonomy: supervised Priority: low Status: formalised +Filed: 2026-08-22 (backfilled from git) Split out of PyAutoNerves#153 on 2026-08-22, which stamped the small-datasets regime into every FITS the stack writes and deliberately left the JSON side diff --git a/draft/bug/pyautomind/status_sh_repos_missing_source.md b/draft/bug/pyautomind/status_sh_repos_missing_source.md index 1ef7e0e1..701b1eea 100644 --- a/draft/bug/pyautomind/status_sh_repos_missing_source.md +++ b/draft/bug/pyautomind/status_sh_repos_missing_source.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: formalised +Filed: 2026-08-19 (backfilled from git) Found by the 2026-08-19 readability-pass census (#248). @PyAutoMind/scripts/status.sh's `--repos` branch does diff --git a/draft/bug/pyautoreduce/published_autoreduce_09_missing_312_floor.md b/draft/bug/pyautoreduce/published_autoreduce_09_missing_312_floor.md index 2777df00..05a26434 100644 --- a/draft/bug/pyautoreduce/published_autoreduce_09_missing_312_floor.md +++ b/draft/bug/pyautoreduce/published_autoreduce_09_missing_312_floor.md @@ -9,6 +9,7 @@ Autonomy: supervised Priority: normal Status: issued Issue: https://github.com/PyAutoLabs/PyAutoReduce/issues/71 +Filed: 2026-08-19 (backfilled from git) `autoreduce 0.9`, published **2026-08-12**, declares on PyPI: diff --git a/draft/bug/workspaces/aplt_output_drift_remaining_repos.md b/draft/bug/workspaces/aplt_output_drift_remaining_repos.md index 62d63d92..3f52eb86 100644 --- a/draft/bug/workspaces/aplt_output_drift_remaining_repos.md +++ b/draft/bug/workspaces/aplt_output_drift_remaining_repos.md @@ -9,6 +9,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-04 (backfilled from git) Split out of `plot-array-stale-kwargs` (HowToGalaxy#56, 2026-08-04), which repaired this same drift in `autolens_workspace_developer` but deliberately diff --git a/draft/bug/workspaces/bug_fix_the_tracer_fits_existence_guard.md b/draft/bug/workspaces/bug_fix_the_tracer_fits_existence_guard.md index 8c6b3db9..e22e112b 100644 --- a/draft/bug/workspaces/bug_fix_the_tracer_fits_existence_guard.md +++ b/draft/bug/workspaces/bug_fix_the_tracer_fits_existence_guard.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: safe Priority: normal Status: formalised +Filed: 2026-08-22 (backfilled from git) Bug: fix the tracer.fits existence guard in autolens_workspace imaging modeling.py. The script crashes with FileNotFoundError because the guard checks the wrong file. It tests whether files/tracer.json exists, then reads image/tracer.fits, which TEST_MODE never writes. This fails the release smoke gate. diff --git a/draft/bug/workspaces/jax_likelihood_pins_stale_by_1e4.md b/draft/bug/workspaces/jax_likelihood_pins_stale_by_1e4.md index a358f69e..b30fd192 100644 --- a/draft/bug/workspaces/jax_likelihood_pins_stale_by_1e4.md +++ b/draft/bug/workspaces/jax_likelihood_pins_stale_by_1e4.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-14 (backfilled from git) Three `autolens_workspace_test` JAX-likelihood scripts fail their pinned-value assertions on `main`, marginally over tolerance. They fail every local smoke diff --git a/draft/docs/autocti/api_rst_rewrite.md b/draft/docs/autocti/api_rst_rewrite.md index bfa51f16..41845483 100644 --- a/draft/docs/autocti/api_rst_rewrite.md +++ b/draft/docs/autocti/api_rst_rewrite.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-06 (backfilled from git) Filed 2026-08-06 from a full `/audit_docs` sweep (every autosummary entry verified by import + `hasattr` against installed source). PyAutoCTI's diff --git a/draft/docs/autolens/multi_galaxy_package.md b/draft/docs/autolens/multi_galaxy_package.md index 7f1a0e63..a213a726 100644 --- a/draft/docs/autolens/multi_galaxy_package.md +++ b/draft/docs/autolens/multi_galaxy_package.md @@ -10,6 +10,7 @@ Autonomy: supervised Priority: high Status: in progress — core landed 2026-07-25; features/fit/jax legs landed 2026-07-26 (branch claude/pyautolens-doc-reorganization-w6a1l5); only the real-data swap-in remains Parent: draft/docs/autolens/split_lensing_regimes.md +Filed: 2026-07-25 (backfilled from git) ## Landed (2026-07-25, this task branch) diff --git a/draft/docs/autolens/split_lensing_regimes.md b/draft/docs/autolens/split_lensing_regimes.md index d282597a..b093eb02 100644 --- a/draft/docs/autolens/split_lensing_regimes.md +++ b/draft/docs/autolens/split_lensing_regimes.md @@ -14,6 +14,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: planned (epic — execute via the child prompts below) +Filed: 2026-07-25 (backfilled from git) Reorganize the PyAutoLens (and mirrored PyAutoGalaxy) documentation and example library by splitting systems above the standard single-galaxy strong-lens diff --git a/draft/docs/autolens_workspace/markdown_regeneration_sigma_min.md b/draft/docs/autolens_workspace/markdown_regeneration_sigma_min.md index 32e4da4f..ab3bb06a 100644 --- a/draft/docs/autolens_workspace/markdown_regeneration_sigma_min.md +++ b/draft/docs/autolens_workspace/markdown_regeneration_sigma_min.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-08 (backfilled from git) Seven curated `markdown/` pages still show MGE snippets **without** `sigma_min`, because `markdown/` was deliberately not regenerated when the diff --git a/draft/docs/autolens_workspace/sampler_cli_output_workspace_sweep.md b/draft/docs/autolens_workspace/sampler_cli_output_workspace_sweep.md index 3009d6e6..338dc96b 100644 --- a/draft/docs/autolens_workspace/sampler_cli_output_workspace_sweep.md +++ b/draft/docs/autolens_workspace/sampler_cli_output_workspace_sweep.md @@ -1,6 +1,7 @@ # Phase 2 — drop the hand-written quick-update sentence from the workspace scripts Blocked-by: PyAutoFit#1436 # moved the cadence message into the library — MERGED 2026-07-30 +Filed: 2026-07-30 (backfilled from git) Follow-up to **PyAutoFit#1434 / PR#1436**, which moved the on-the-fly update cadence message into the library. Do not start until #1436 has merged. diff --git a/draft/docs/howtolens/ch4_mask_overlay_never_drawn.md b/draft/docs/howtolens/ch4_mask_overlay_never_drawn.md index 21203927..d0d67912 100644 --- a/draft/docs/howtolens/ch4_mask_overlay_never_drawn.md +++ b/draft/docs/howtolens/ch4_mask_overlay_never_drawn.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: formalised +Filed: 2026-08-04 (backfilled from git) Spotted 2026-08-04 while fixing the sibling HowToGalaxy tutorial under `plot-array-stale-kwargs` (HowToGalaxy#56). **Not a crash** — the tutorial runs diff --git a/draft/docs/howtolens/cluster_pixelized_source.md b/draft/docs/howtolens/cluster_pixelized_source.md index 65e60288..bbf5c6ec 100644 --- a/draft/docs/howtolens/cluster_pixelized_source.md +++ b/draft/docs/howtolens/cluster_pixelized_source.md @@ -13,6 +13,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 12 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # HowToLens cluster tutorial: show a pixelized source + fix the stale cross-reference diff --git a/draft/docs/pyautobrain/rtd_organism_currency.md b/draft/docs/pyautobrain/rtd_organism_currency.md index c0a25d90..c352a337 100644 --- a/draft/docs/pyautobrain/rtd_organism_currency.md +++ b/draft/docs/pyautobrain/rtd_organism_currency.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-19 (backfilled from git) Found by the 2026-08-19 readability census (#237). The RTD narrative (@PyAutoBrain/docs/, published at pyautoscientist.readthedocs.io) has drifted diff --git a/draft/docs/workspaces/assistants_regime_extension.md b/draft/docs/workspaces/assistants_regime_extension.md index 0640843b..6d723563 100644 --- a/draft/docs/workspaces/assistants_regime_extension.md +++ b/draft/docs/workspaces/assistants_regime_extension.md @@ -9,6 +9,7 @@ Autonomy: supervised Priority: low Status: in progress — autolens_assistant leg shipped 2026-07-25 (autolens_assistant#91); autogalaxy leg deferred until the autogalaxy packages exist Parent: draft/docs/autolens/split_lensing_regimes.md +Filed: 2026-07-25 (backfilled from git) Once the three-regime reorganization (parent plan) has landed in autolens_workspace, autogalaxy_workspace and the RTD docs, extend the diff --git a/draft/docs/workspaces/cluster_regime_narrative.md b/draft/docs/workspaces/cluster_regime_narrative.md index 1b71ad13..5474c8b3 100644 --- a/draft/docs/workspaces/cluster_regime_narrative.md +++ b/draft/docs/workspaces/cluster_regime_narrative.md @@ -12,6 +12,7 @@ Status: draft Epic: cluster-strong-lensing Phase: 10 Parent: draft/docs/autolens/split_lensing_regimes.md +Filed: 2026-07-25 (backfilled from git) Align the `scripts/cluster/` package of @autolens_workspace with the three-regime design (see parent plan). The mass framework (host halo(s) + diff --git a/draft/docs/workspaces/extra_galaxies_feature_parity.md b/draft/docs/workspaces/extra_galaxies_feature_parity.md index a2a4d21c..4213badf 100644 --- a/draft/docs/workspaces/extra_galaxies_feature_parity.md +++ b/draft/docs/workspaces/extra_galaxies_feature_parity.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft +Filed: 2026-07-29 (backfilled from git) The user's request, verbatim: diff --git a/draft/docs/workspaces/plot_coverage_followups.md b/draft/docs/workspaces/plot_coverage_followups.md index 33570444..47589661 100644 --- a/draft/docs/workspaces/plot_coverage_followups.md +++ b/draft/docs/workspaces/plot_coverage_followups.md @@ -1,5 +1,7 @@ # plot coverage — follow-ups deferred from plot-coverage-gaps +Filed: 2026-07-30 (backfilled from git) + Four items deliberately scoped out of **plot-coverage-gaps** (PyAutoLens#667 / #668, autolens_workspace#404, autogalaxy_workspace#191). Each is independent; do **not** bulk-issue them as a series. diff --git a/draft/docs/workspaces/preloads_advanced_workspace_guide.md b/draft/docs/workspaces/preloads_advanced_workspace_guide.md index f29b6654..318fead3 100644 --- a/draft/docs/workspaces/preloads_advanced_workspace_guide.md +++ b/draft/docs/workspaces/preloads_advanced_workspace_guide.md @@ -7,6 +7,7 @@ Autonomy: supervised Priority: high Status: formalised Blocked-by: PyAutoLens#565 # the Preloads API landing in PyAutoArray — CLOSED 2026-07-10 +Filed: 2026-06-08 (backfilled from git) Write an **advanced** guide, in both `@autolens_workspace` and `@autogalaxy_workspace`, on the `Preloads` API (`aa.PreloadsInterferometer`, `aa.AbstractPreloads`, and `PreloadsImaging` if added) diff --git a/draft/docs/workspaces/propagate_shear_galaxy_idiom_to_group_cluster.md b/draft/docs/workspaces/propagate_shear_galaxy_idiom_to_group_cluster.md index b05528f0..6ea30955 100644 --- a/draft/docs/workspaces/propagate_shear_galaxy_idiom_to_group_cluster.md +++ b/draft/docs/workspaces/propagate_shear_galaxy_idiom_to_group_cluster.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Parent: complete/2026/07/multi-galaxy-imaging-parity.md +Filed: 2026-07-30 (backfilled from git) `multi_galaxy/` now holds the system's external shear in its own `shear_galaxy` at the system centre (0.0", 0.0") instead of attaching it to diff --git a/draft/docs/workspaces/rectangular_mesh_enzi_citation_examples.md b/draft/docs/workspaces/rectangular_mesh_enzi_citation_examples.md index ae8211e3..5ecb2b0e 100644 --- a/draft/docs/workspaces/rectangular_mesh_enzi_citation_examples.md +++ b/draft/docs/workspaces/rectangular_mesh_enzi_citation_examples.md @@ -9,6 +9,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-24 (backfilled from git) ## Context (split from rectangular-mesh-consolidation, PyAutoArray#402, closed 2026-07-24) diff --git a/draft/docs/workspaces/unify_ai_assistant_workspace_readmes.md b/draft/docs/workspaces/unify_ai_assistant_workspace_readmes.md index 0c41956c..99185a3c 100644 --- a/draft/docs/workspaces/unify_ai_assistant_workspace_readmes.md +++ b/draft/docs/workspaces/unify_ai_assistant_workspace_readmes.md @@ -1,5 +1,7 @@ # Phase 2: Make workspace READMEs assistant-first +Filed: 2026-07-24 (backfilled from git) + Update @autolens_workspace and @autogalaxy_workspace after the library and Read the Docs phase. Put one concise **AI Assistant** route first in Getting Started, covering conversation agents (for example ChatGPT) and coding agents (for diff --git a/draft/feature/autoarray/arcsecond_to_decimal.md b/draft/feature/autoarray/arcsecond_to_decimal.md index 4a6ee7c4..c8bf9b24 100644 --- a/draft/feature/autoarray/arcsecond_to_decimal.md +++ b/draft/feature/autoarray/arcsecond_to_decimal.md @@ -6,6 +6,7 @@ Difficulty: large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-05-14 (backfilled from git) You are working in the PyAutoLens / PyAutoArray plotting codebase. diff --git a/draft/feature/autoarray/multiwavelength_inversion.md b/draft/feature/autoarray/multiwavelength_inversion.md index 9ddb939c..f8ee7470 100755 --- a/draft/feature/autoarray/multiwavelength_inversion.md +++ b/draft/feature/autoarray/multiwavelength_inversion.md @@ -1,23 +1,24 @@ -# Can create a list of InversionMatrix objects for each dataset - -Type: feature -Target: PyAutoArray -Difficulty: medium -Autonomy: supervised -Priority: normal -Status: formalised - -Can create a list of InversionMatrix objects for each dataset + tracer and then have a new class which takes a list of -these objects and creates a combined curvature_reg matrix from them, which solves for all datasets simultaneously. - -This is genuine because it can reuse all existing functionality and doesn't require diting of the inner code -to get multi dataset fits working. - -The regularization matrix could addition addition multi-data regularization terms added. - -Multi analysis API can easily be used for model parameterization, with CombineAnalysis overwritten to define -the log likelihood fuinction (which maybe uses a special type of Fit object). - -[This was not written as a claud Prompt, expan dfully the day I use it] - - +# Can create a list of InversionMatrix objects for each dataset + +Type: feature +Target: PyAutoArray +Difficulty: medium +Autonomy: supervised +Priority: normal +Status: formalised +Filed: 2026-04-27 (backfilled from git) + +Can create a list of InversionMatrix objects for each dataset + tracer and then have a new class which takes a list of +these objects and creates a combined curvature_reg matrix from them, which solves for all datasets simultaneously. + +This is genuine because it can reuse all existing functionality and doesn't require diting of the inner code +to get multi dataset fits working. + +The regularization matrix could addition addition multi-data regularization terms added. + +Multi analysis API can easily be used for model parameterization, with CombineAnalysis overwritten to define +the log likelihood fuinction (which maybe uses a special type of Fit object). + +[This was not written as a claud Prompt, expan dfully the day I use it] + + diff --git a/draft/feature/autoarray/numba_cpu_likelihood_kernel_cdf_fast_path.md b/draft/feature/autoarray/numba_cpu_likelihood_kernel_cdf_fast_path.md index 7f4c1057..9be48c21 100644 --- a/draft/feature/autoarray/numba_cpu_likelihood_kernel_cdf_fast_path.md +++ b/draft/feature/autoarray/numba_cpu_likelihood_kernel_cdf_fast_path.md @@ -17,6 +17,7 @@ Difficulty: large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-08-20 (backfilled from git) ## Original request (verbatim, 2026-08-20) diff --git a/draft/feature/autoarray/numba_cpu_likelihood_mge_convolution_and_caching.md b/draft/feature/autoarray/numba_cpu_likelihood_mge_convolution_and_caching.md index 0c137679..c9368491 100644 --- a/draft/feature/autoarray/numba_cpu_likelihood_mge_convolution_and_caching.md +++ b/draft/feature/autoarray/numba_cpu_likelihood_mge_convolution_and_caching.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: high Status: formalised +Filed: 2026-08-20 (backfilled from git) > Phase 1 of the CPU-likelihood speed restoration > (autolens_profiling#151 profiling; user request 2026-08-20 recorded verbatim diff --git a/draft/feature/autoarray/rectangular_bilinear_rtu_mesh_split.md b/draft/feature/autoarray/rectangular_bilinear_rtu_mesh_split.md index 41999eb0..76808a16 100644 --- a/draft/feature/autoarray/rectangular_bilinear_rtu_mesh_split.md +++ b/draft/feature/autoarray/rectangular_bilinear_rtu_mesh_split.md @@ -10,6 +10,7 @@ Repos: Difficulty: medium Autonomy: supervised Priority: high +Filed: 2026-08-21 (backfilled from git) ## Original request (verbatim, 2026-08-21) diff --git a/draft/feature/autoarray/rectangular_multi_submesh.md b/draft/feature/autoarray/rectangular_multi_submesh.md index de1f8be2..84dc7897 100644 --- a/draft/feature/autoarray/rectangular_multi_submesh.md +++ b/draft/feature/autoarray/rectangular_multi_submesh.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: STALE PREMISE — needs re-basing before it can be issued (2026-08-09) +Filed: 2026-05-17 (backfilled from git) ## 2026-08-09 — the implementation base named below no longer exists diff --git a/draft/feature/autofit/ep_analytic_updates.md b/draft/feature/autofit/ep_analytic_updates.md index 35f552f9..14b97e1c 100644 --- a/draft/feature/autofit/ep_analytic_updates.md +++ b/draft/feature/autofit/ep_analytic_updates.md @@ -7,6 +7,7 @@ Autonomy: supervised Priority: normal Status: formalised Blocked-by: PyAutoFit#1334, PyAutoFit#1331, PyAutoFit#1332 # WP1 gate (MERGED); WP3/WP4 gates (open) +Filed: 2026-07-08 (backfilled from git) The complete, self-contained implementation plan lives in **PyAutoFit#1338** (plan-only issue; nothing implemented). Scoping diff --git a/draft/feature/autofit/ep_lbfgs_jax.md b/draft/feature/autofit/ep_lbfgs_jax.md index 92f005d5..69aeebfa 100644 --- a/draft/feature/autofit/ep_lbfgs_jax.md +++ b/draft/feature/autofit/ep_lbfgs_jax.md @@ -8,6 +8,7 @@ Priority: normal Status: formalised Epic: graphical-ep Phase: 4 +Filed: 2026-05-18 (backfilled from git) The project @z_projects/ic50_workspace is our IC50 use case which we are now aiming to scale up the EP framework to the IC50 use case. diff --git a/draft/feature/autofit/prior_exit_sampler_coverage.md b/draft/feature/autofit/prior_exit_sampler_coverage.md index d1ddf159..04455fd6 100644 --- a/draft/feature/autofit/prior_exit_sampler_coverage.md +++ b/draft/feature/autofit/prior_exit_sampler_coverage.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: medium Status: formalised +Filed: 2026-08-17 (backfilled from git) ## What this is diff --git a/draft/feature/autofit/search_seed_reproducibility.md b/draft/feature/autofit/search_seed_reproducibility.md index c0127771..1928ae07 100644 --- a/draft/feature/autofit/search_seed_reproducibility.md +++ b/draft/feature/autofit/search_seed_reproducibility.md @@ -9,6 +9,7 @@ Autonomy: supervised Priority: medium Status: formalised Issue: (none yet) +Filed: 2026-08-05 (backfilled from git) ## The gap diff --git a/draft/feature/autofit_assistant/remote_mcp_deployment_tiers.md b/draft/feature/autofit_assistant/remote_mcp_deployment_tiers.md index b77b33a9..82468e3d 100644 --- a/draft/feature/autofit_assistant/remote_mcp_deployment_tiers.md +++ b/draft/feature/autofit_assistant/remote_mcp_deployment_tiers.md @@ -9,6 +9,7 @@ Difficulty: large Autonomy: human-required Priority: normal Status: formalised +Filed: 2026-07-17 (backfilled from git) Build the remote-MCP deployment tiers (2 and 3) for the read-only results-inspector MCP server, which shipped 2026-07-17 (autofit_assistant#12) with only tier 1 (local stdio for diff --git a/draft/feature/autogalaxy/dpie_sigma0_parameterization.md b/draft/feature/autogalaxy/dpie_sigma0_parameterization.md index b22afb14..e8a9715d 100644 --- a/draft/feature/autogalaxy/dpie_sigma0_parameterization.md +++ b/draft/feature/autogalaxy/dpie_sigma0_parameterization.md @@ -10,6 +10,7 @@ Autonomy: supervised Priority: low Status: draft Parent: draft/docs/autolens/split_lensing_regimes.md +Filed: 2026-07-25 (backfilled from git) The contributed derivation note (H. Ding 2026, "On the definitions of b0 and velocity dispersion in Lenstool / dPIE") establishes that Lenstool's fiducial diff --git a/draft/feature/autogalaxy/piemass_potential.md b/draft/feature/autogalaxy/piemass_potential.md index 41296ee2..4ac34fd6 100644 --- a/draft/feature/autogalaxy/piemass_potential.md +++ b/draft/feature/autogalaxy/piemass_potential.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-06-05 (backfilled from git) Follow-up from the dark-matter potential work (PyAutoGalaxy `feature/dark-matter-potentials`). That branch implemented diff --git a/draft/feature/autolens/area_magnification_leggos.md b/draft/feature/autolens/area_magnification_leggos.md index f5dc1c57..5ab250ec 100644 --- a/draft/feature/autolens/area_magnification_leggos.md +++ b/draft/feature/autolens/area_magnification_leggos.md @@ -13,6 +13,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 6 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Area magnification (LEGGOS-style): per-pixel inversion sum as primary; ShapeSolver rehabilitate-or-retire diff --git a/draft/feature/autolens/magnification_errors_posterior_draws.md b/draft/feature/autolens/magnification_errors_posterior_draws.md index f8c7065d..d05b6f39 100644 --- a/draft/feature/autolens/magnification_errors_posterior_draws.md +++ b/draft/feature/autolens/magnification_errors_posterior_draws.md @@ -11,6 +11,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 7 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Magnification errors via posterior draws, standalone in source_science diff --git a/draft/feature/autolens/magnification_maps_visualization.md b/draft/feature/autolens/magnification_maps_visualization.md index 45859ef1..bc1a5829 100644 --- a/draft/feature/autolens/magnification_maps_visualization.md +++ b/draft/feature/autolens/magnification_maps_visualization.md @@ -14,6 +14,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 8 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Magnification maps: image-plane contour maps, source-plane mesh maps, uncertainty maps diff --git a/draft/feature/autolens/point_magnification_api.md b/draft/feature/autolens/point_magnification_api.md index 30fc212d..26ab478a 100644 --- a/draft/feature/autolens/point_magnification_api.md +++ b/draft/feature/autolens/point_magnification_api.md @@ -11,6 +11,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 5 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Magnification at a point: surface the existing API in source_science + point package, extend to multi-plane diff --git a/draft/feature/autolens/source_cluster_arc.md b/draft/feature/autolens/source_cluster_arc.md index 3093799e..d9940a8f 100644 --- a/draft/feature/autolens/source_cluster_arc.md +++ b/draft/feature/autolens/source_cluster_arc.md @@ -15,6 +15,7 @@ Autonomy: supervised Priority: high Status: draft Epic: cluster-strong-lensing +Filed: 2026-08-19 (backfilled from git) Parent tracker for a 12-phase arc (2026-08-19 intake; deep-research grounded). This file is never routed to start_dev directly — each phase below is its own prompt, diff --git a/draft/feature/autolens_jax_joss/autolens_jax_joss_benchmark_repo.md b/draft/feature/autolens_jax_joss/autolens_jax_joss_benchmark_repo.md index d5a5daa5..d914620c 100644 --- a/draft/feature/autolens_jax_joss/autolens_jax_joss_benchmark_repo.md +++ b/draft/feature/autolens_jax_joss/autolens_jax_joss_benchmark_repo.md @@ -9,6 +9,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-16 (backfilled from git) Create a repo autolens_jax_joss which provides examples to run each JAX benchmark from the PyAutoLens-JAX paper draft and reports the run time and info. These benchmarks currently do not exist. diff --git a/draft/feature/autolens_profiling/jax_compile_time_profiling.md b/draft/feature/autolens_profiling/jax_compile_time_profiling.md index e403733b..b2e5a156 100644 --- a/draft/feature/autolens_profiling/jax_compile_time_profiling.md +++ b/draft/feature/autolens_profiling/jax_compile_time_profiling.md @@ -26,6 +26,7 @@ Difficulty: large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-07-15 (backfilled from git) `autolens_profiling` measures **run time** (per-eval cost, VRAM, wall time) but not **compile time**. For JAX likelihoods, XLA compilation is now a first-class diff --git a/draft/feature/autolens_profiling/search_settings_estimation_infrastructure.md b/draft/feature/autolens_profiling/search_settings_estimation_infrastructure.md index f7845124..341dbe19 100644 --- a/draft/feature/autolens_profiling/search_settings_estimation_infrastructure.md +++ b/draft/feature/autolens_profiling/search_settings_estimation_infrastructure.md @@ -9,6 +9,7 @@ Difficulty: large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-22 (backfilled from git) Right now `n_starts`, `batch_size`, `n_batch` and vmap width are hand-set per cell, but the correct values depend jointly on **the data, the model and the diff --git a/draft/feature/autolens_workspace/joss_cluster_benchmark_tuning.md b/draft/feature/autolens_workspace/joss_cluster_benchmark_tuning.md index 75d4720b..78829f8e 100644 --- a/draft/feature/autolens_workspace/joss_cluster_benchmark_tuning.md +++ b/draft/feature/autolens_workspace/joss_cluster_benchmark_tuning.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-17 (backfilled from git) Follow-up to the jax-joss-benchmarks epic (autolens_workspace#281). First official A100 rows for the cluster-scale benchmarks landed far above the paper's diff --git a/draft/feature/autolens_workspace/oversampled_psf_dataset_adoption.md b/draft/feature/autolens_workspace/oversampled_psf_dataset_adoption.md index f8e639b2..8e49bb33 100644 --- a/draft/feature/autolens_workspace/oversampled_psf_dataset_adoption.md +++ b/draft/feature/autolens_workspace/oversampled_psf_dataset_adoption.md @@ -9,6 +9,7 @@ Autonomy: supervised Priority: normal Status: formalised Blocked-by: PyAutoArray#363, PyAutoGalaxy#486, autolens_workspace#236 # the k x s machinery — all MERGED +Filed: 2026-07-08 (backfilled from git) Option (a) of the phase-4 fork (PyAutoLabs/PyAutoArray#362, decided 2026-07-08): flip the executed start-here simulator to diff --git a/draft/feature/autonomy/10_scheduled_runs.md b/draft/feature/autonomy/10_scheduled_runs.md index 13d1ab66..517927a4 100644 --- a/draft/feature/autonomy/10_scheduled_runs.md +++ b/draft/feature/autonomy/10_scheduled_runs.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: low Status: blocked +Filed: 2026-07-08 (backfilled from git) ## Why diff --git a/draft/feature/jax_substructure/5_prng_key_vmap_noise.md b/draft/feature/jax_substructure/5_prng_key_vmap_noise.md index 35b5c17b..a795fb8a 100644 --- a/draft/feature/jax_substructure/5_prng_key_vmap_noise.md +++ b/draft/feature/jax_substructure/5_prng_key_vmap_noise.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-06-09 (backfilled from git) Context: PyAutoLens issue #542 follow-up (Gap 1, deferred during the original 4-prompt substructure-simulator series). Prompt 3 (`3_simulator_jax_e2e.md`) diff --git a/draft/feature/jax_substructure/6_deflection_equivalence_test.md b/draft/feature/jax_substructure/6_deflection_equivalence_test.md index 1f1de736..976e3ad3 100644 --- a/draft/feature/jax_substructure/6_deflection_equivalence_test.md +++ b/draft/feature/jax_substructure/6_deflection_equivalence_test.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-06-09 (backfilled from git) Context: PyAutoLens issue #542 follow-up (Gap 2, deferred during the original 4-prompt substructure-simulator series). Prompt 1 diff --git a/draft/feature/profiling/profiling_agent_jax_compile_time_scope.md b/draft/feature/profiling/profiling_agent_jax_compile_time_scope.md index edc4ec69..7cbf8e7c 100644 --- a/draft/feature/profiling/profiling_agent_jax_compile_time_scope.md +++ b/draft/feature/profiling/profiling_agent_jax_compile_time_scope.md @@ -9,6 +9,7 @@ Difficulty: large Autonomy: supervised Priority: high Status: planned (arc — execute via the three child prompts below) +Filed: 2026-07-14 (backfilled from git) > **RE-SCOPED 2026-08-10.** This prompt was filed 2026-07-14 asking the Profiling > Agent to *measure JAX compile/eval time of the release-validation heavy scripts diff --git a/draft/feature/pyautohands/release_board_run_logs_enrichment.md b/draft/feature/pyautohands/release_board_run_logs_enrichment.md index 2d9221b2..84f67407 100644 --- a/draft/feature/pyautohands/release_board_run_logs_enrichment.md +++ b/draft/feature/pyautohands/release_board_run_logs_enrichment.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: formalised +Filed: 2026-08-19 (backfilled from git) Follow-up to the release board (PyAutoHands#239, shipped 2026-08-19). The v1 board is API-first because `run_logs/` (the rich local run history written by diff --git a/draft/feature/pyautomind/complete_archive_wiki.md b/draft/feature/pyautomind/complete_archive_wiki.md index 611a874b..8e5cf737 100644 --- a/draft/feature/pyautomind/complete_archive_wiki.md +++ b/draft/feature/pyautomind/complete_archive_wiki.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-13 (backfilled from git) ## Depends on diff --git a/draft/feature/pyautomind/repos-sync-config-stamper.md b/draft/feature/pyautomind/repos-sync-config-stamper.md index 8b8dfc93..556effca 100644 --- a/draft/feature/pyautomind/repos-sync-config-stamper.md +++ b/draft/feature/pyautomind/repos-sync-config-stamper.md @@ -5,6 +5,7 @@ Target: pyautomind Difficulty: hard Autonomy: supervised Priority: low +Filed: 2026-08-17 (backfilled from git) The design's own endgame for tenant-firewall drift, specified in `docs/pyautobrain/pyautoscientist_generalisation_assessment.md` §8-4 and diff --git a/draft/feature/workspaces/cluster_pixelized_analysisfactor.md b/draft/feature/workspaces/cluster_pixelized_analysisfactor.md index 53620dc3..8a9334f2 100644 --- a/draft/feature/workspaces/cluster_pixelized_analysisfactor.md +++ b/draft/feature/workspaces/cluster_pixelized_analysisfactor.md @@ -11,6 +11,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 10 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Cluster pixelized-source refinement: per-source masks via AnalysisFactor diff --git a/draft/feature/workspaces/cluster_source_science.md b/draft/feature/workspaces/cluster_source_science.md index 47953295..635ac01d 100644 --- a/draft/feature/workspaces/cluster_source_science.md +++ b/draft/feature/workspaces/cluster_source_science.md @@ -11,6 +11,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 9 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Cluster source_science.py: robust magnification science at cluster scale (no meshes yet) diff --git a/draft/feature/workspaces/gallery_runner_missing_tiers.md b/draft/feature/workspaces/gallery_runner_missing_tiers.md index a594dfd8..fe558da5 100644 --- a/draft/feature/workspaces/gallery_runner_missing_tiers.md +++ b/draft/feature/workspaces/gallery_runner_missing_tiers.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: formalised +Filed: 2026-07-16 (backfilled from git) First real findings from the Eyes conductor's live survey (PyAutoBrain#117 Phase 2, `eyes survey autolens_workspace_test`): diff --git a/draft/feature/workspaces/group_los_halos.md b/draft/feature/workspaces/group_los_halos.md index 46dea495..d836986e 100644 --- a/draft/feature/workspaces/group_los_halos.md +++ b/draft/feature/workspaces/group_los_halos.md @@ -6,6 +6,7 @@ Difficulty: medium Autonomy: safe Priority: normal Status: formalised +Filed: 2026-04-27 (backfilled from git) The imaging `features/advanced/los_halos` example needs improving and padding out before adapting to group. diff --git a/draft/feature/workspaces/group_subhalo_sensitivity.md b/draft/feature/workspaces/group_subhalo_sensitivity.md index 4ae87890..cd1f525e 100644 --- a/draft/feature/workspaces/group_subhalo_sensitivity.md +++ b/draft/feature/workspaces/group_subhalo_sensitivity.md @@ -6,6 +6,7 @@ Difficulty: medium Autonomy: safe Priority: normal Status: formalised +Filed: 2026-04-27 (backfilled from git) The imaging `features/advanced/subhalo/sensitivity` example needs improving and padding out before adapting to group. diff --git a/draft/feature/workspaces/restore_multiple_sources_lensing_of_lens.md b/draft/feature/workspaces/restore_multiple_sources_lensing_of_lens.md index 2b41d75d..783931e4 100644 --- a/draft/feature/workspaces/restore_multiple_sources_lensing_of_lens.md +++ b/draft/feature/workspaces/restore_multiple_sources_lensing_of_lens.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-04-28 (backfilled from git) Once https://github.com/PyAutoLabs/PyAutoLens/issues/480 is fixed (PointSolver magnification filter must use `plane_redshift`, not the tracer's last plane), diff --git a/draft/maintenance/autolens_profiling/jwst_lw_untracked_gitignore_gap.md b/draft/maintenance/autolens_profiling/jwst_lw_untracked_gitignore_gap.md index abedc0df..a5882d3a 100644 --- a/draft/maintenance/autolens_profiling/jwst_lw_untracked_gitignore_gap.md +++ b/draft/maintenance/autolens_profiling/jwst_lw_untracked_gitignore_gap.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: formalised +Filed: 2026-08-04 (backfilled from git) Found during a `/repo_cleanup` sweep on 2026-08-04. `autolens_profiling/dataset/imaging/jwst_lw/` (376K, 6 files) sits untracked in diff --git a/draft/maintenance/autolens_profiling/polish.md b/draft/maintenance/autolens_profiling/polish.md index 592c02ec..b5d992e5 100644 --- a/draft/maintenance/autolens_profiling/polish.md +++ b/draft/maintenance/autolens_profiling/polish.md @@ -6,6 +6,7 @@ Difficulty: large Autonomy: supervised Priority: normal Status: formalised (phased 2026-07-08 → polish_phase_1_design.md … polish_phase_4_breakdown_dashboard.md; work proceeds through the phase prompts) +Filed: 2026-05-18 (backfilled from git) autolens_profiling is now a mature project, with a good separation of different tasks into packages (instruments, latent, likelihood_breakdown, etc) diff --git a/draft/maintenance/autolens_workspace/cosmos_web_ring_mask_dtype.md b/draft/maintenance/autolens_workspace/cosmos_web_ring_mask_dtype.md index f3a347db..83e433ac 100644 --- a/draft/maintenance/autolens_workspace/cosmos_web_ring_mask_dtype.md +++ b/draft/maintenance/autolens_workspace/cosmos_web_ring_mask_dtype.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: formalised +Filed: 2026-08-04 (backfilled from git) Found during a `/repo_cleanup` sweep on 2026-08-04, after `clean_slate.sh` flagged `dataset/imaging/cosmos_web_ring` as a committed 11 MB dataset over its diff --git a/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md b/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md index 9226ae79..2b766819 100644 --- a/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md +++ b/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: SUPERSEDED 2026-08-20 — do not pick this up; see below +Filed: 2026-08-03 (backfilled from git) ## SUPERSEDED by `draft/maintenance/workspaces/latex_raw_string_docstrings.md` diff --git a/draft/maintenance/autolens_workspace_developer/rectangular_experiments_gut_stash.md b/draft/maintenance/autolens_workspace_developer/rectangular_experiments_gut_stash.md index 6dea4e2c..0850a405 100644 --- a/draft/maintenance/autolens_workspace_developer/rectangular_experiments_gut_stash.md +++ b/draft/maintenance/autolens_workspace_developer/rectangular_experiments_gut_stash.md @@ -9,6 +9,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-24 (backfilled from git) ## Context (split from rectangular-mesh-consolidation, PyAutoArray#402, closed 2026-07-24) diff --git a/draft/maintenance/autolens_workspace_developer/stale_api_rot_audit.md b/draft/maintenance/autolens_workspace_developer/stale_api_rot_audit.md index 25b721f7..e49a652c 100644 --- a/draft/maintenance/autolens_workspace_developer/stale_api_rot_audit.md +++ b/draft/maintenance/autolens_workspace_developer/stale_api_rot_audit.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-04 (backfilled from git) Found 2026-08-04 while fixing the `aplt.Output` drift in this repo under `plot-array-stale-kwargs` (HowToGalaxy#56). That task cleared `aplt.Output` diff --git a/draft/maintenance/ci/copilot_auto_review.md b/draft/maintenance/ci/copilot_auto_review.md index aefdb1cc..9733b5cb 100644 --- a/draft/maintenance/ci/copilot_auto_review.md +++ b/draft/maintenance/ci/copilot_auto_review.md @@ -8,6 +8,7 @@ Status: planned Difficulty: large Autonomy: supervised Priority: normal +Filed: 2026-07-02 (backfilled from git) ## Why diff --git a/draft/maintenance/ci/run_smoke_copy_drift.md b/draft/maintenance/ci/run_smoke_copy_drift.md index 1b738b63..480f32ae 100644 --- a/draft/maintenance/ci/run_smoke_copy_drift.md +++ b/draft/maintenance/ci/run_smoke_copy_drift.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft +Filed: 2026-07-25 (backfilled from git) > **Re-scoped 2026-08-05.** The original finding below is preserved for history > but its two headline claims are now measured to be wrong: step 1 is already diff --git a/draft/maintenance/ci/smoke_install_stale_jax_pin.md b/draft/maintenance/ci/smoke_install_stale_jax_pin.md index fd1892fc..0431db40 100644 --- a/draft/maintenance/ci/smoke_install_stale_jax_pin.md +++ b/draft/maintenance/ci/smoke_install_stale_jax_pin.md @@ -8,6 +8,7 @@ Difficulty: low Autonomy: supervised Priority: medium Status: formalised +Filed: 2026-08-22 (backfilled from git) Found 2026-08-22 while building a CI-equivalent environment to reproduce autolens_workspace_test#260. Latent — CI is green today — but it is green for the diff --git a/draft/maintenance/libraries/defer_scipy_sparse_import.md b/draft/maintenance/libraries/defer_scipy_sparse_import.md index 9976d3c9..8ad940ab 100644 --- a/draft/maintenance/libraries/defer_scipy_sparse_import.md +++ b/draft/maintenance/libraries/defer_scipy_sparse_import.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: safe Priority: normal Status: in-flight +Filed: 2026-08-22 (backfilled from git) ## Where this came from diff --git a/draft/maintenance/libraries/dep_cap_refresh_2026_08.md b/draft/maintenance/libraries/dep_cap_refresh_2026_08.md index 519113f4..292e6a09 100644 --- a/draft/maintenance/libraries/dep_cap_refresh_2026_08.md +++ b/draft/maintenance/libraries/dep_cap_refresh_2026_08.md @@ -10,6 +10,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-06 (backfilled from git) Filed 2026-08-06 from a full `/dep_audit` (38 capped/pinned specifiers across 8 pyprojects vs PyPI latest; no cross-repo conflicts — every duplicated diff --git a/draft/maintenance/libraries/remove_pynufft_legacy_transformer.md b/draft/maintenance/libraries/remove_pynufft_legacy_transformer.md index 74e3c8c0..1d084a61 100644 --- a/draft/maintenance/libraries/remove_pynufft_legacy_transformer.md +++ b/draft/maintenance/libraries/remove_pynufft_legacy_transformer.md @@ -10,6 +10,7 @@ Difficulty: low-medium Autonomy: supervised Priority: normal Status: shipped +Filed: 2026-08-22 (backfilled from git) Re-homed 2026-08-22 from `draft/refactor/autoarray/`. The Brain Refactor Agent refused it there (`SUSPECT-API-CHANGE`, effective autonomy `human-required`): diff --git a/draft/maintenance/libraries/untrack_generated_fits_test_artifacts.md b/draft/maintenance/libraries/untrack_generated_fits_test_artifacts.md index 18810467..f4eb925c 100644 --- a/draft/maintenance/libraries/untrack_generated_fits_test_artifacts.md +++ b/draft/maintenance/libraries/untrack_generated_fits_test_artifacts.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: medium Status: formalised +Filed: 2026-08-22 (backfilled from git) Filed 2026-08-23 from the PyAutoArray#482/#483 floor bump, which tripped over this. Not a bug — a git-hygiene defect that converts unrelated upstream changes diff --git a/draft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.md b/draft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.md index 50c4ddd4..8b0afb71 100644 --- a/draft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.md +++ b/draft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.md @@ -8,6 +8,7 @@ Difficulty: low Autonomy: safe Priority: low Status: draft +Filed: 2026-08-19 (backfilled from git) ## Finding (2026-08-19, lazy-heavy-imports RefactorDecision) diff --git a/draft/maintenance/pyautomemory/canonical_key_todo_sweep.md b/draft/maintenance/pyautomemory/canonical_key_todo_sweep.md index b052206d..68f0cc68 100644 --- a/draft/maintenance/pyautomemory/canonical_key_todo_sweep.md +++ b/draft/maintenance/pyautomemory/canonical_key_todo_sweep.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-16 (backfilled from git) PyAutoMemory canonical-key TODO sweep. diff --git a/draft/maintenance/pyautomind/history_policy_generated_block.md b/draft/maintenance/pyautomind/history_policy_generated_block.md index 6f5a1719..72ebe95b 100644 --- a/draft/maintenance/pyautomind/history_policy_generated_block.md +++ b/draft/maintenance/pyautomind/history_policy_generated_block.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-12 (backfilled from git) Single-source the "Never rewrite history" policy. The **`## Never rewrite history`** section is necessary safety text — it guards a documented, expensive, diff --git a/draft/maintenance/workspaces/committed_capped_smoke_datasets.md b/draft/maintenance/workspaces/committed_capped_smoke_datasets.md index 5c1e42b1..8df03eeb 100644 --- a/draft/maintenance/workspaces/committed_capped_smoke_datasets.md +++ b/draft/maintenance/workspaces/committed_capped_smoke_datasets.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-22 (backfilled from git) Capped smoke datasets were committed as if they were real data. diff --git a/draft/maintenance/workspaces/config_key_mirror_drift.md b/draft/maintenance/workspaces/config_key_mirror_drift.md index 8cb55c6c..6cfb55df 100644 --- a/draft/maintenance/workspaces/config_key_mirror_drift.md +++ b/draft/maintenance/workspaces/config_key_mirror_drift.md @@ -10,6 +10,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-13 (backfilled from git) Filed 2026-07-12 from a `/hygiene config` audit (recursive key-path diff of each library `config/*.yaml` against its workspace counterpart). diff --git a/draft/maintenance/workspaces/notebook_setup_notebook_drift_siblings.md b/draft/maintenance/workspaces/notebook_setup_notebook_drift_siblings.md index 9473008c..818e169f 100644 --- a/draft/maintenance/workspaces/notebook_setup_notebook_drift_siblings.md +++ b/draft/maintenance/workspaces/notebook_setup_notebook_drift_siblings.md @@ -3,6 +3,7 @@ Difficulty: small Autonomy: supervised Priority: low +Filed: 2026-08-07 (backfilled from git) ## The problem diff --git a/draft/maintenance/workspaces/read_through_issues.md b/draft/maintenance/workspaces/read_through_issues.md index ce810bbb..bbec8247 100644 --- a/draft/maintenance/workspaces/read_through_issues.md +++ b/draft/maintenance/workspaces/read_through_issues.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-05-08 (backfilled from git) autolens_workspace: diff --git a/draft/maintenance/workspaces/unpark_imaging_scaling_relation_slam.md b/draft/maintenance/workspaces/unpark_imaging_scaling_relation_slam.md index c05d411d..8cc0e1b9 100644 --- a/draft/maintenance/workspaces/unpark_imaging_scaling_relation_slam.md +++ b/draft/maintenance/workspaces/unpark_imaging_scaling_relation_slam.md @@ -9,6 +9,7 @@ Autonomy: supervised Priority: normal Status: formalised Blocked-by: PyAutoArray#431 # the small-datasets loader fix — MERGED 2026-08-03, released in 2026.8.7.1 +Filed: 2026-08-03 (backfilled from git) BLOCKED until PyAutoArray PR#431 merges and reaches the installed stack. Do not start before then — the script only passes with that loader fix in place. diff --git a/draft/refactor/autoarray/matern_vendor_bessel_kve.md b/draft/refactor/autoarray/matern_vendor_bessel_kve.md index aabcb5b0..8c8aea0e 100644 --- a/draft/refactor/autoarray/matern_vendor_bessel_kve.md +++ b/draft/refactor/autoarray/matern_vendor_bessel_kve.md @@ -8,6 +8,7 @@ Difficulty: large Autonomy: supervised Priority: medium Status: formalised +Filed: 2026-07-13 (backfilled from git) Durable follow-up to the Matern-kernel tfp/jax incompatibility (PyAutoArray #385). That bug was unblocked by pinning `tfp-nightly==0.26.0.dev20260713` in place of the diff --git a/draft/refactor/autofit/split_fitness_batch_size_lh_vs_latent.md b/draft/refactor/autofit/split_fitness_batch_size_lh_vs_latent.md index e23ae1b5..5059850c 100644 --- a/draft/refactor/autofit/split_fitness_batch_size_lh_vs_latent.md +++ b/draft/refactor/autofit/split_fitness_batch_size_lh_vs_latent.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-15 (backfilled from git) `Fitness.batch_size` currently serves **two unrelated concepts**, which is actively confusing when reasoning about GPU memory. diff --git a/draft/refactor/autogalaxy/critical_curves_dispatch_cluster.md b/draft/refactor/autogalaxy/critical_curves_dispatch_cluster.md index 91885995..6536e467 100644 --- a/draft/refactor/autogalaxy/critical_curves_dispatch_cluster.md +++ b/draft/refactor/autogalaxy/critical_curves_dispatch_cluster.md @@ -15,6 +15,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 3 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Critical curves: implement context-aware dispatch, dedupe engines, make clusters honor it diff --git a/draft/refactor/autogalaxy/einstein_radius_jit_native_seed_finder.md b/draft/refactor/autogalaxy/einstein_radius_jit_native_seed_finder.md index 6686614d..05b71809 100644 --- a/draft/refactor/autogalaxy/einstein_radius_jit_native_seed_finder.md +++ b/draft/refactor/autogalaxy/einstein_radius_jit_native_seed_finder.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-05-21 (backfilled from git) Small follow-up to the Phase B work (PyAutoGalaxy #435, PyAutoFit #1288, pipeline #15). Drops the requirement that callers pass a static diff --git a/draft/refactor/pyautofit/remove_eden_packaging_tooling.md b/draft/refactor/pyautofit/remove_eden_packaging_tooling.md index 2003f8b9..071816e3 100644 --- a/draft/refactor/pyautofit/remove_eden_packaging_tooling.md +++ b/draft/refactor/pyautofit/remove_eden_packaging_tooling.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: PARTIALLY SHIPPED — the module is gone, `eden.yaml` is not (2026-08-09) +Filed: 2026-07-13 (backfilled from git) ## 2026-08-09 — half the primary scope has already landed diff --git a/draft/refactor/pyautomind/repos_sync_check_dedup.md b/draft/refactor/pyautomind/repos_sync_check_dedup.md index 5f74c4fc..299c1c94 100644 --- a/draft/refactor/pyautomind/repos_sync_check_dedup.md +++ b/draft/refactor/pyautomind/repos_sync_check_dedup.md @@ -8,6 +8,7 @@ Difficulty: medium Autonomy: safe Priority: low Status: formalised +Filed: 2026-08-19 (backfilled from git) Found by the 2026-08-19 readability-pass census (#248). Behaviour-preserving refactor of @PyAutoMind/scripts/repos_sync.py (940 lines, no dead functions): diff --git a/draft/release/autocti/cti_release_train_wiring.md b/draft/release/autocti/cti_release_train_wiring.md index cffbef3f..5979c0ee 100644 --- a/draft/release/autocti/cti_release_train_wiring.md +++ b/draft/release/autocti/cti_release_train_wiring.md @@ -10,6 +10,7 @@ Difficulty: medium Autonomy: human-required Priority: normal Status: formalised +Filed: 2026-07-17 (backfilled from git) Follow-up to the CTI resurrection epic (Phases 0-5; workspace_test + Heart polling shipped 2026-07-17). Wire autocti into the release train and produce diff --git a/draft/research/autoarray/delaunay_callback_persistent_cache_miss.md b/draft/research/autoarray/delaunay_callback_persistent_cache_miss.md index 3336c908..cfd3de6a 100644 --- a/draft/research/autoarray/delaunay_callback_persistent_cache_miss.md +++ b/draft/research/autoarray/delaunay_callback_persistent_cache_miss.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: medium Status: formalised +Filed: 2026-07-28 (backfilled from git) Found during the MultiStartProdigy compile census (autolens_profiling#93): every `delaunay_matern` transform recompiles at cold cost in **every process** diff --git a/draft/research/autoarray/delaunay_interpolator_pure_callback_vmap_memory.md b/draft/research/autoarray/delaunay_interpolator_pure_callback_vmap_memory.md index 1a4fcc8d..b4329b4b 100644 --- a/draft/research/autoarray/delaunay_interpolator_pure_callback_vmap_memory.md +++ b/draft/research/autoarray/delaunay_interpolator_pure_callback_vmap_memory.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: low Status: formalised +Filed: 2026-05-28 (backfilled from git) ## Status diff --git a/draft/research/autoarray/delaunay_research.md b/draft/research/autoarray/delaunay_research.md index e58467c9..6599fcc1 100644 --- a/draft/research/autoarray/delaunay_research.md +++ b/draft/research/autoarray/delaunay_research.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-05-11 (backfilled from git) ## UPDATE 2026-05-16 — status of the alternatives diff --git a/draft/research/autoarray/rectangular_kernel_bandwidth_defaults.md b/draft/research/autoarray/rectangular_kernel_bandwidth_defaults.md index d743fe56..34eaeff1 100644 --- a/draft/research/autoarray/rectangular_kernel_bandwidth_defaults.md +++ b/draft/research/autoarray/rectangular_kernel_bandwidth_defaults.md @@ -10,6 +10,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-23 (backfilled from git) ## Context (2026-07-23, from the rectangular-mesh-consolidation reference re-derivation) diff --git a/draft/research/autobuild/git_docs.md b/draft/research/autobuild/git_docs.md index 3e0387cc..771f1e42 100644 --- a/draft/research/autobuild/git_docs.md +++ b/draft/research/autobuild/git_docs.md @@ -6,6 +6,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-04-28 (backfilled from git) Use readthedocs or migrate to GitHub docs? Whats the state of the art these days? easier to maintain fully in GitHub? diff --git a/draft/research/autofit/autofit_profiling_bootstrap.md b/draft/research/autofit/autofit_profiling_bootstrap.md index 96060ce9..5f1bdc39 100644 --- a/draft/research/autofit/autofit_profiling_bootstrap.md +++ b/draft/research/autofit/autofit_profiling_bootstrap.md @@ -10,6 +10,7 @@ Autonomy: supervised Priority: normal Status: formalised Campaign: research/graphical_ep/ep_campaign.md (Phase 6) +Filed: 2026-08-19 (backfilled from git) ## Why diff --git a/draft/research/autofit/priors_and_messages_math_audit.md b/draft/research/autofit/priors_and_messages_math_audit.md index ce4292d3..e8935258 100644 --- a/draft/research/autofit/priors_and_messages_math_audit.md +++ b/draft/research/autofit/priors_and_messages_math_audit.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: RETIRED — historical record (2026-08-18); all 9 A-findings shipped, C-findings tracked in bug/priors/09,11-14 +Filed: 2026-05-16 (backfilled from git) > **2026-08-18 wrap-up.** This census's actionable content has fully > graduated; nothing here is left to action from this file. Outcome map: diff --git a/draft/research/autolens/cluster_extended_source_inference.md b/draft/research/autolens/cluster_extended_source_inference.md index 26ba50e9..4b9c7c67 100644 --- a/draft/research/autolens/cluster_extended_source_inference.md +++ b/draft/research/autolens/cluster_extended_source_inference.md @@ -13,6 +13,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 11 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Cluster extended-source inference: gradient-based fitting building on JAX knowledge diff --git a/draft/research/autolens/quick_update_plotting_cost.md b/draft/research/autolens/quick_update_plotting_cost.md index c7eb8c32..99f74118 100644 --- a/draft/research/autolens/quick_update_plotting_cost.md +++ b/draft/research/autolens/quick_update_plotting_cost.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: medium Status: draft +Filed: 2026-07-31 (backfilled from git) ## Why diff --git a/draft/research/autolens_profiling/cluster_gradient_search_benchmark.md b/draft/research/autolens_profiling/cluster_gradient_search_benchmark.md index efb14d5d..e4e1312b 100644 --- a/draft/research/autolens_profiling/cluster_gradient_search_benchmark.md +++ b/draft/research/autolens_profiling/cluster_gradient_search_benchmark.md @@ -1,5 +1,7 @@ # Cluster-scale gradient-search benchmark (Prodigy vs Nautilus, point-source) +Filed: 2026-07-31 (backfilled from git) + > **ABSORBED 2026-07-31 (same day)** into > `draft/feature/autolens/point_source_defaults_campaign.md` (phase B, cluster tier, on > RAL A100s). Do not run standalone — kept for the context literals below. diff --git a/draft/research/autolens_profiling/multiband_compile_census_completion.md b/draft/research/autolens_profiling/multiband_compile_census_completion.md index 2315d60b..8e513215 100644 --- a/draft/research/autolens_profiling/multiband_compile_census_completion.md +++ b/draft/research/autolens_profiling/multiband_compile_census_completion.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: low Status: formalised +Filed: 2026-07-30 (backfilled from git) Follow-up to the multiband-pyloop-batching ship (PyAutoFit#1430 → PR#1431 + autolens_profiling#95, merged 2026-07-30). The dominant driver is fixed at the diff --git a/draft/research/autolens_profiling/point_solver_profiling_cells.md b/draft/research/autolens_profiling/point_solver_profiling_cells.md index 015ad7c3..0a67ea4e 100644 --- a/draft/research/autolens_profiling/point_solver_profiling_cells.md +++ b/draft/research/autolens_profiling/point_solver_profiling_cells.md @@ -11,6 +11,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 2 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # PointSolver profiling cells: lensed quasar → cluster runtime tier → single/multi-source → multiplane diff --git a/draft/research/autolens_workspace_developer/jax_jit_profiling.md b/draft/research/autolens_workspace_developer/jax_jit_profiling.md index af5ce18c..ea69dcb5 100644 --- a/draft/research/autolens_workspace_developer/jax_jit_profiling.md +++ b/draft/research/autolens_workspace_developer/jax_jit_profiling.md @@ -6,6 +6,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-05-10 (backfilled from git) We have lots of examples which profile how long JAX jitted functions take to run on various datasets. diff --git a/draft/research/graphical_ep/analytic_gaussian_benchmark.md b/draft/research/graphical_ep/analytic_gaussian_benchmark.md index 1665ffac..1399a9f6 100644 --- a/draft/research/graphical_ep/analytic_gaussian_benchmark.md +++ b/draft/research/graphical_ep/analytic_gaussian_benchmark.md @@ -12,6 +12,7 @@ Status: formalised Epic: graphical-ep Phase: 1 Campaign: research/graphical_ep/ep_campaign.md (Phase 1 — the keystone; start here) +Filed: 2026-08-19 (backfilled from git) ## Why diff --git a/draft/research/graphical_ep/ep_campaign.md b/draft/research/graphical_ep/ep_campaign.md index 6e2a2dab..3c6d820e 100644 --- a/draft/research/graphical_ep/ep_campaign.md +++ b/draft/research/graphical_ep/ep_campaign.md @@ -8,6 +8,7 @@ Priority: high Status: campaign map — phases route through /start_dev one at a time; this Epic: graphical-ep file is never issued itself and nothing here is bulk-issued +Filed: 2026-08-19 (backfilled from git) Filed 2026-08-19 from James's multi-phase EP brief (raw text preserved in the intake session). This is the umbrella view; each phase's real content lives in diff --git a/draft/research/graphical_ep/ep_scoping.md b/draft/research/graphical_ep/ep_scoping.md index 3f47c959..c0e952b2 100644 --- a/draft/research/graphical_ep/ep_scoping.md +++ b/draft/research/graphical_ep/ep_scoping.md @@ -7,6 +7,7 @@ Autonomy: supervised Priority: high Status: formalised Epic: graphical-ep +Filed: 2026-05-20 (backfilled from git) Companion baseline package: `autofit_workspace_developer/ep/`. This document is grounded in the profile data emitted by that package's diff --git a/draft/research/graphical_ep/graphical_scoping.md b/draft/research/graphical_ep/graphical_scoping.md index 08a03de2..f1e472d3 100644 --- a/draft/research/graphical_ep/graphical_scoping.md +++ b/draft/research/graphical_ep/graphical_scoping.md @@ -8,6 +8,7 @@ Priority: high Status: formalised Epic: graphical-ep Phase: 3 +Filed: 2026-05-20 (backfilled from git) Companion baseline package: `autofit_workspace_developer/graphical/`. This document is grounded in the profile data emitted by that package's diff --git a/draft/research/graphical_ep/ic50_ep_scale_up.md b/draft/research/graphical_ep/ic50_ep_scale_up.md index bb9f843b..cd46a003 100644 --- a/draft/research/graphical_ep/ic50_ep_scale_up.md +++ b/draft/research/graphical_ep/ic50_ep_scale_up.md @@ -12,6 +12,7 @@ Status: formalised Epic: graphical-ep Phase: 4 Campaign: research/graphical_ep/ep_campaign.md (Phase 4) +Filed: 2026-08-19 (backfilled from git) ## Context diff --git a/draft/research/graphical_ep/slope_hierarchy_methods_writeup.md b/draft/research/graphical_ep/slope_hierarchy_methods_writeup.md index 7d51f74f..8d662c9a 100644 --- a/draft/research/graphical_ep/slope_hierarchy_methods_writeup.md +++ b/draft/research/graphical_ep/slope_hierarchy_methods_writeup.md @@ -10,6 +10,7 @@ Priority: normal Status: formalised Epic: graphical-ep Model: Opus (narrative/scientific prose — see feedback_tutorial_prose_opus) +Filed: 2026-07-22 (backfilled from git) ## Context diff --git a/draft/research/graphical_ep/slope_hierarchy_n25_scale_up.md b/draft/research/graphical_ep/slope_hierarchy_n25_scale_up.md index 9948b6a7..e1391d61 100644 --- a/draft/research/graphical_ep/slope_hierarchy_n25_scale_up.md +++ b/draft/research/graphical_ep/slope_hierarchy_n25_scale_up.md @@ -10,6 +10,7 @@ Priority: normal Status: formalised Epic: graphical-ep Phase: 3 +Filed: 2026-07-22 (backfilled from git) ## Context diff --git a/draft/research/libraries/intel_macos_support_policy.md b/draft/research/libraries/intel_macos_support_policy.md index c73d5d40..cae55e99 100644 --- a/draft/research/libraries/intel_macos_support_policy.md +++ b/draft/research/libraries/intel_macos_support_policy.md @@ -11,6 +11,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft +Filed: 2026-08-22 (backfilled from git) ## Original request (verbatim, 2026-08-22) diff --git a/draft/research/libraries/python_312_minimum.md b/draft/research/libraries/python_312_minimum.md index eacadc90..77d8944b 100644 --- a/draft/research/libraries/python_312_minimum.md +++ b/draft/research/libraries/python_312_minimum.md @@ -1,5 +1,7 @@ # Adopt Python 3.12 as the PyAuto ecosystem minimum +Filed: 2026-07-28 (backfilled from git) + ## Original request > Ok, lets remove support for anything below python3.12, do a census to make sure we simplify requriements, build server, testing, etc. Also make sure all docs are updated. diff --git a/draft/research/pyautobrain/explore_dashboardify_the_brain_s_operational_sur.md b/draft/research/pyautobrain/explore_dashboardify_the_brain_s_operational_sur.md index 16afd070..454b7562 100644 --- a/draft/research/pyautobrain/explore_dashboardify_the_brain_s_operational_sur.md +++ b/draft/research/pyautobrain/explore_dashboardify_the_brain_s_operational_sur.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-19 (backfilled from git) Explore: dashboardify the Brain's operational surfaces with pasteable conductor prompts diff --git a/draft/research/pyautomemory/checkerboard_psf_mismatch_residual_diagnostic.md b/draft/research/pyautomemory/checkerboard_psf_mismatch_residual_diagnostic.md index e6b92c62..032d3bdf 100644 --- a/draft/research/pyautomemory/checkerboard_psf_mismatch_residual_diagnostic.md +++ b/draft/research/pyautomemory/checkerboard_psf_mismatch_residual_diagnostic.md @@ -9,6 +9,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-14 (backfilled from git) Checkerboard PSF-mismatch residual diagnostic: research and document the central checkerboard/aliasing residual pattern that indicates an incorrect or mismatched PSF model in lens/galaxy fits (wrong sub-pixel centering, wrong oversampling/pixel scale, or an undersampled/resampled library STDPSF that does not match drizzled data). Seen in PJ011646 stdpsf_baseline (new drizzled mosaic + legacy library STDPSF) but absent with STARRED. Deliverables: (1) find 2-4 authoritative papers (e.g. Anderson & King ePSF, drizzle/interpolation aliasing, PSF sub-sampling/centering artifacts); (2) ingest them into PyAutoMemory (methods_wiki/lensing_wiki) and the autolens_assistant literature wiki (wiki/literature/sources via al_ingest_paper); (3) add a concise autolens_assistant wiki concept reference for the checkerboard-PSF-residual diagnostic (appearance, causes, fixes: better-centered/known PSF, correct oversampling, STARRED/empirical ePSF over library STDPSF), cross-linked to the ingested papers. diff --git a/draft/research/pyautoreduce/acceptance_noise_rebaseline.md b/draft/research/pyautoreduce/acceptance_noise_rebaseline.md index 09705a99..8cd981be 100644 --- a/draft/research/pyautoreduce/acceptance_noise_rebaseline.md +++ b/draft/research/pyautoreduce/acceptance_noise_rebaseline.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-07-09 (backfilled from git) Filed from the frame-products validation session (issue #16 / PR #18, 2026-07-09), which found the MAST acquire stage had been ingesting HAP diff --git a/draft/research/pyautoreduce/legacy_flux_scale_parity.md b/draft/research/pyautoreduce/legacy_flux_scale_parity.md index 1a39bd06..8b0240f8 100644 --- a/draft/research/pyautoreduce/legacy_flux_scale_parity.md +++ b/draft/research/pyautoreduce/legacy_flux_scale_parity.md @@ -6,6 +6,7 @@ Difficulty: medium Autonomy: supervised Priority: low Status: formalised +Filed: 2026-07-08 (backfilled from git) PyAutoReduce phase 1 (PyAutoReduce#2, PR #3) reduces slacs0008-0004 to data ratio 0.941 / noise ratio 0.925 vs the legacy modeling dataset — both carry diff --git a/draft/test/autolens_workspace_developer/mge_jit_regression_rebaseline.md b/draft/test/autolens_workspace_developer/mge_jit_regression_rebaseline.md index a8d17183..763eb713 100644 --- a/draft/test/autolens_workspace_developer/mge_jit_regression_rebaseline.md +++ b/draft/test/autolens_workspace_developer/mge_jit_regression_rebaseline.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-05-08 (backfilled from git) `@autolens_workspace_developer/jax_profiling/jit/imaging/mge.py` hardcodes a regression assertion at the bottom: diff --git a/draft/test/workspaces/mesh_magnification_correctness.md b/draft/test/workspaces/mesh_magnification_correctness.md index 4786cc40..cd16da32 100644 --- a/draft/test/workspaces/mesh_magnification_correctness.md +++ b/draft/test/workspaces/mesh_magnification_correctness.md @@ -13,6 +13,7 @@ Status: formalised Epic: cluster-strong-lensing Phase: 4 Parent: draft/feature/autolens/source_cluster_arc.md +Filed: 2026-08-19 (backfilled from git) # Mesh magnification correctness: simulate-and-recover across every mesh variant diff --git a/draft/test/workspaces/restore_workspace_test_likelihood_baselines.md b/draft/test/workspaces/restore_workspace_test_likelihood_baselines.md index 8393172e..22967394 100644 --- a/draft/test/workspaces/restore_workspace_test_likelihood_baselines.md +++ b/draft/test/workspaces/restore_workspace_test_likelihood_baselines.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: high Status: formalised +Filed: 2026-06-24 (backfilled from git) Restore absolute NumPy likelihood regression baselines in the `_workspace_test` repositories. diff --git a/draft/test/workspaces/smoke_workspace_fixes.md b/draft/test/workspaces/smoke_workspace_fixes.md index fe9737aa..94e23436 100644 --- a/draft/test/workspaces/smoke_workspace_fixes.md +++ b/draft/test/workspaces/smoke_workspace_fixes.md @@ -6,6 +6,7 @@ Difficulty: too-large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-04-27 (backfilled from git) The new workspace smoke-test GitHub Actions (added via feature/smoke-test-ci) surfaced pre-existing failures that were commented out to get the green baseline. Re-enable each diff --git a/draft/triage/bug_in_autocti_workspace_the_dataset_1d.md b/draft/triage/bug_in_autocti_workspace_the_dataset_1d.md index 2f53e239..8fce59d2 100644 --- a/draft/triage/bug_in_autocti_workspace_the_dataset_1d.md +++ b/draft/triage/bug_in_autocti_workspace_the_dataset_1d.md @@ -9,6 +9,7 @@ Difficulty: large Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-19 (backfilled from git) Bug in autocti_workspace: the dataset_1d results/database example scripts have drifted from the current library API and are broken beyond the recently-fixed info.json and sample-index issues (the repo has no CI, so nothing catches drift). Two known sites, found 2026-08-19: (a) scripts/dataset_1d/advanced/database/examples/samples.py line ~195 does ml_instances[0].cti, but the guide chain now fits via af.FactorGraphModel whose global-model instances have no top-level .cti attribute — AttributeError once reached; (b) scripts/dataset_1d/results/examples/samples.py calls aplt.subplot_fit_dataset_1d, a plot symbol that no longer exists in the installed autocti (the PyAuto API gate flags it stale). Fix in autocti_workspace: update the examples to the FactorGraphModel instance structure and the live plot API, and consider a minimal CI smoke workflow for the repo so future drift is caught. diff --git a/draft/triage/convolver_blurring_image_warning.md b/draft/triage/convolver_blurring_image_warning.md index 71837540..035ca8fc 100644 --- a/draft/triage/convolver_blurring_image_warning.md +++ b/draft/triage/convolver_blurring_image_warning.md @@ -8,6 +8,7 @@ Difficulty: small Autonomy: supervised Priority: normal Status: formalised +Filed: 2026-08-06 (backfilled from git) Filed 2026-08-06 from the `/cli_noise_clean` audit. Every audited workspace script run (`autolens_workspace` + `autogalaxy_workspace` `imaging/simulator.py` diff --git a/draft/triage/jax_zero_contour.md b/draft/triage/jax_zero_contour.md index 47c45ef7..23dd88ed 100755 --- a/draft/triage/jax_zero_contour.md +++ b/draft/triage/jax_zero_contour.md @@ -1,28 +1,29 @@ -# - -[resume] - -claude --resume 015b4ac4-0900-4d06-b39a-e1f1bd31af80 - - - -[JAX] - -The implementation has been tested successfully and runs on the HPC. - -I now want us to test whether using jax.jit and jax.grad on the critical curve and caustic calculations -works, and if it gives the same result. Do this on the @autolens_workspace_test. - - +# + +[resume] + +claude --resume 015b4ac4-0900-4d06-b39a-e1f1bd31af80 + + + +[JAX] + +The implementation has been tested successfully and runs on the HPC. + +I now want us to test whether using jax.jit and jax.grad on the critical curve and caustic calculations +works, and if it gives the same result. Do this on the @autolens_workspace_test. + + diff --git a/draft/triage/nightly_release_blocked_eight_nights.md b/draft/triage/nightly_release_blocked_eight_nights.md index 67e59401..2d726090 100644 --- a/draft/triage/nightly_release_blocked_eight_nights.md +++ b/draft/triage/nightly_release_blocked_eight_nights.md @@ -10,6 +10,7 @@ Difficulty: medium Autonomy: supervised Priority: normal Status: draft +Filed: 2026-08-04 (backfilled from git) Surfaced 2026-08-04 while listing PyAutoBrain workflow runs during the PR-test-CI ship (#195). Not a PyAutoBrain CI problem — filed here because the diff --git a/scripts/lifecycle.py b/scripts/lifecycle.py index c1455361..baff22d8 100644 --- a/scripts/lifecycle.py +++ b/scripts/lifecycle.py @@ -276,13 +276,22 @@ def registry_problems(root: Path) -> "list[str]": REGISTRY_DATE_KEY = {"active.md": "issued", "planned.md": "filed", "parked.md": "parked"} -# The prompt-header form. `Issued:` joins the light header convention -# (REFERENCE.md "Prompt file format") — optional like every other key, and -# never YAML. -PROMPT_DATE_KEY = "Issued" +# The prompt-header form. These join the light header convention (REFERENCE.md +# "Prompt file format") — optional like every other key, and never YAML. The +# key names the state the prompt was in when the date happened, so the two +# never have to be told apart by which folder the file currently sits in: +# +# draft/ Filed: YYYY-MM-DD the day the prompt was written +# active/ Issued: YYYY-MM-DD the day it got its GitHub issue +# +# The backlog is the LARGEST pool of tasks the Mind holds — 150 prompts against +# a handful of live rows — so leaving `draft/` undated left the recent feed +# unable to see most of the work (2026-08-23). +PROMPT_DATE_KEY = {"draft": "Filed", "active": "Issued"} +PROMPT_DATE_KEYS = tuple(PROMPT_DATE_KEY.values()) _HEADER_FIELD_RE = re.compile( - r"^(Type|Target|Repos|Difficulty|Autonomy|Priority|Status|Issued|Epic|" - r"Phase|Blocked-by|Closes-when):", re.IGNORECASE) + r"^(Type|Target|Repos|Difficulty|Autonomy|Priority|Status|Issued|Filed|" + r"Epic|Phase|Blocked-by|Closes-when):", re.IGNORECASE) def entry_date(fields: "dict[str, str]") -> "tuple[str | None, str | None]": @@ -302,18 +311,29 @@ def entry_date(fields: "dict[str, str]") -> "tuple[str | None, str | None]": return None, None -def prompt_issued_date(text: str) -> "str | None": - """The `Issued: YYYY-MM-DD` header of an issued prompt, else None. +def prompt_date(text: str) -> "tuple[str | None, str | None]": + """(date, key) from a prompt's `Filed:` / `Issued:` header, else (None, None). Header only (first 30 lines), matching how every other prompt field is - read — a date deep in the prose is prose.""" + read — a date deep in the prose is prose. `Issued:` wins when a prompt + carries both: it is the later, more specific event, and an issued prompt + keeps the `Filed:` it had as a draft.""" + found = {} for line in text.splitlines()[:30]: - m = re.match(r"Issued:\s*(\S.*)", line.strip(), re.IGNORECASE) + m = re.match(r"(Issued|Filed):\s*(\S.*)", line.strip(), re.IGNORECASE) if m: - d = ISO_DATE_RE.search(m.group(1)) + d = ISO_DATE_RE.search(m.group(2)) if d: - return d.group(1) - return None + found.setdefault(m.group(1).capitalize(), d.group(1)) + for key in ("Issued", "Filed"): + if key in found: + return found[key], key + return None, None + + +def prompt_issued_date(text: str) -> "str | None": + """Back-compat shim: the prompt's header date, whichever key carries it.""" + return prompt_date(text)[0] def _prose_date(fields: "dict[str, str]") -> "str | None": @@ -375,13 +395,25 @@ def git_entry_date(root: Path, registry: str, slug: str, return _oldest(_git_dates(root, [f"-S## {slug}", "--", registry]), boundary) -def git_prompt_issued_date(root: Path, rel: str, - boundary: "str | None" = None) -> "str | None": - """The day this prompt arrived in `active/` — i.e. the day it was issued. +def git_prompt_date(root: Path, rel: str, state: str, + boundary: "str | None" = None) -> "str | None": + """The day a prompt reached the state its folder says it is in. + + The two states want opposite readings of the same history, and the switch + is `--follow`: - `git mv` from draft/ records as an add at the new path, which is the event - wanted: the prompt entering the issued state.""" - return _oldest(_git_dates(root, ["--diff-filter=A", "--", rel]), boundary) + * `active/` — the day it ARRIVED there, i.e. was issued. `git mv` from + draft/ records as an add at the new path, which is exactly that event, + so following the rename back would report the wrong day. + * `draft/` — the day the prompt was WRITTEN, wherever it lived then. The + 2026-07-13 lifecycle migration `git mv`-ed 42 prompts in one commit; + without `--follow` all 42 date from the migration rather than from + themselves, which is a fact about the repo's plumbing, not the work. + """ + args = ["--diff-filter=A", "--", rel] + if state == "draft": + args = ["--follow"] + args + return _oldest(_git_dates(root, args), boundary) def _insert_registry_date(lines: "list[str]", start: int, key: str, @@ -408,8 +440,8 @@ def _insert_registry_date(lines: "list[str]", start: int, key: str, return lines[:at] + [f"- {key}: {date}"] + lines[at:] -def _insert_prompt_date(text: str, date: str) -> str: - """Insert `Issued: ` into a prompt's light metadata header. +def _insert_prompt_date(text: str, date: str, key: str = "Issued") -> str: + """Insert `: ` into a prompt's light metadata header. After the last header field (skipping the bullet list a `Repos:` field owns) when there is a header; else under the title heading; else at the @@ -427,14 +459,14 @@ def _insert_prompt_date(text: str, date: str) -> str: at = last + 1 while at < len(lines) and lines[at].strip(): at += 1 - new = lines[:at] + [f"{PROMPT_DATE_KEY}: {date}"] + lines[at:] + new = lines[:at] + [f"{key}: {date}"] + lines[at:] else: first = next((i for i, ln in enumerate(lines) if ln.strip()), 0) if lines and lines[first].lstrip().startswith("#"): - new = (lines[:first + 1] + ["", f"{PROMPT_DATE_KEY}: {date}"] + new = (lines[:first + 1] + ["", f"{key}: {date}"] + lines[first + 1:]) else: - new = [f"{PROMPT_DATE_KEY}: {date}", ""] + lines + new = [f"{key}: {date}", ""] + lines nl = "\r\n" if "\r\n" in text else "\n" return nl.join(new) + (nl if text.endswith("\n") else "") @@ -450,11 +482,39 @@ def undated_entries(root: Path) -> "list[dict]": return out +def state_prompts(root: Path) -> "list[tuple[Path, str]]": + """Every prompt the Mind holds as (path, state) — `draft/` and `active/`. + + `complete/` is excluded: a record is already dated by definition, and its + date is the ledger's job, not this one's.""" + out = [] + active = root / "active" + if active.is_dir(): + out += [(f, "active") for f in sorted(active.glob("*.md"))] + drafts = root / "draft" + if drafts.is_dir(): + out += [(f, "draft") for f in sorted(drafts.rglob("*.md")) + if f.name != "README.md"] + return out + + def undated_prompts(root: Path) -> "list[Path]": - """Issued (`active/`) prompts carrying no `Issued:` header.""" - d = root / "active" - return [f for f in sorted(d.glob("*.md")) if d.is_dir() - and prompt_issued_date(f.read_text(errors="replace")) is None] + """Prompts carrying no date header, in either state folder.""" + return [f for f, _state in state_prompts(root) + if prompt_date(f.read_text(errors="replace"))[0] is None] + + +# The Intake Agent stamps every prompt it files with a trailer naming the day +# (""). +# 53 of the backlog's 150 prompts carry one — the prompt's own claim about when +# it was conceived, and the fallback when git cannot see far enough back. +_INTAKE_TRAILER = re.compile( + r"Intake \(Conception\) Agent on\s+(\d{4}-\d{2}-\d{2})") + + +def intake_trailer_date(text: str) -> "str | None": + m = _INTAKE_TRAILER.search(text) + return m.group(1) if m else None # A backfilled date is INFERRED, and says so in the file. A writer that knows @@ -533,21 +593,28 @@ def backfill_dates(root: Path, apply: bool = False) -> "list[dict]": path.write_text("\n".join(lines) + "\n") claims = _registry_claim(root) - for f in undated_prompts(root): - rel = f.relative_to(root).as_posix() + for f, state in state_prompts(root): text = f.read_text(errors="replace") - date, source = git_prompt_issued_date(root, rel, boundary), "git" + if prompt_date(text)[0] is not None: + continue + rel = f.relative_to(root).as_posix() + key = PROMPT_DATE_KEY[state] + date, source = git_prompt_date(root, rel, state, boundary), "git" + if date is None: + trailer = intake_trailer_date(text) + if trailer: + date, source = trailer, "the prompt's intake trailer" if date is None and rel in claims: claimed, claim_key, claim_reg = claims[rel] date, source = claimed, f"{claim_reg} `{claim_key}:`" if date is None: m = ISO_DATE_RE.search(text) date, source = (m.group(1), "prose") if m else (None, "unknown") - results.append({"what": rel, "key": PROMPT_DATE_KEY, "date": date, + results.append({"what": rel, "key": key, "date": date, "source": source}) if date and apply: value = f"{date} {BACKFILL_NOTE.format(source=source)}" - f.write_text(_insert_prompt_date(text, value)) + f.write_text(_insert_prompt_date(text, value, key)) return results @@ -1382,14 +1449,16 @@ def cmd_dates(args) -> int: return 0 missing = undated_entries(root) - prompts = undated_prompts(root) + prompts = [(f, s) for f, s in state_prompts(root) + if prompt_date(f.read_text(errors="replace"))[0] is None] for e in missing: key = REGISTRY_DATE_KEY[e["registry"]] print(f" - {e['registry']}: {e['slug']}: no `{key}:` date") - for f in prompts: - print(f" - {f.relative_to(root)}: no `Issued:` header") + for f, state in prompts: + print(f" - {f.relative_to(root)}: no " + f"`{PROMPT_DATE_KEY[state]}:` header") if not (missing or prompts): - print("dates: OK — every registry entry and issued prompt is dated") + print("dates: OK — every registry entry and prompt is dated") return 0 print(f"dates: {len(missing) + len(prompts)} undated " f"(run `lifecycle.py dates --write` to backfill from git history)") diff --git a/tests/test_lifecycle_dates.py b/tests/test_lifecycle_dates.py index 37ea9727..ecae0d41 100644 --- a/tests/test_lifecycle_dates.py +++ b/tests/test_lifecycle_dates.py @@ -254,5 +254,70 @@ def test_a_shallow_clone_is_not_evidence_of_when_anything_started(tmp_path): assert lifecycle._shallow_boundary(clone) == "2026-08-21" # The prompt's only visible "add" is the boundary commit — refused, so the # gap is reported honestly instead of being dated 2026-08-21. - assert lifecycle.git_prompt_issued_date( - clone, "active/sprocket_calibration.md", "2026-08-21") is None + assert lifecycle.git_prompt_date( + clone, "active/sprocket_calibration.md", "active", "2026-08-21") is None + + +# --------------------------------------------------------------------------- # +# the backlog — the largest pool of tasks, and the last to get dated +# --------------------------------------------------------------------------- # +def _draft(root: Path, rel: str, body=None) -> Path: + p = root / "draft" / rel + p.parent.mkdir(parents=True, exist_ok=True) + p.write_text(body if body is not None else _prompt()) + return p + + +def test_a_draft_is_dated_filed_and_an_issued_prompt_issued(tmp_path): + """The key names the state the prompt was in when the date happened, so + the two never have to be told apart by which folder it sits in now.""" + root = _mind(tmp_path, active={"sprocket.md": _prompt()}) + _draft(root, "feature/flywheel/gearbox.md") + keys = {r["what"].split("/")[0]: r["key"] + for r in lifecycle.backfill_dates(root)} + assert keys == {"active": "Issued", "draft": "Filed"} + + +def test_a_drafts_intake_trailer_dates_it_when_git_cannot(tmp_path): + root = _mind(tmp_path) + _draft(root, "feature/flywheel/gearbox.md", + _prompt() + "\n\n") + result = lifecycle.backfill_dates(root, apply=True)[0] + assert (result["date"], result["source"]) == ( + "2026-07-09", "the prompt's intake trailer") + assert "Filed: 2026-07-09" in ( + root / "draft" / "feature" / "flywheel" / "gearbox.md").read_text() + + +def test_reading_a_draft_date_back(tmp_path): + assert lifecycle.prompt_date(_prompt(extra="Filed: 2026-07-09\n")) == ( + "2026-07-09", "Filed") + + +def test_issued_wins_over_filed_on_a_prompt_carrying_both(tmp_path): + """An issued prompt keeps the `Filed:` it had as a draft; the later, more + specific event is the one that dates the task.""" + body = _prompt(extra="Filed: 2026-07-01\nIssued: 2026-08-19\n") + assert lifecycle.prompt_date(body) == ("2026-08-19", "Issued") + + +def test_a_bulk_move_does_not_redate_the_whole_backlog(tmp_path): + """The 2026-07-13 lifecycle migration `git mv`-ed 42 prompts in one commit. + Without --follow all 42 date from the migration rather than from + themselves — a fact about the repo's plumbing, not about the work.""" + root = _repo(tmp_path / "mind") + (root / "draft" / "old_home").mkdir(parents=True) + (root / "draft" / "old_home" / "gearbox.md").write_text(_prompt()) + _git(root, "add", "-A") + _git(root, "commit", "-q", "-m", "file gearbox", "--date=2026-05-01T12:00:00") + (root / "draft" / "feature").mkdir(parents=True) + _git(root, "mv", "draft/old_home/gearbox.md", "draft/feature/gearbox.md") + _git(root, "commit", "-q", "-m", "lifecycle migration", + "--date=2026-07-13T12:00:00") + + assert lifecycle.git_prompt_date( + root, "draft/feature/gearbox.md", "draft") == "2026-05-01" + # active/ takes the opposite reading: arriving there IS the event. + assert lifecycle.git_prompt_date( + root, "draft/feature/gearbox.md", "active") == "2026-07-13"