Repository navigation
docs: profiling wiki phase 2 — backfill the 18 stub campaign pages #339
Description
Overview
Phase 1 (#337 / #338) built wiki/index.md, four live campaign pages and the check_wiki.py drift check, and left 18 header-only stubs under wiki/campaigns/. This phase fills those stubs so every closed, parked and draft campaign carries its "why" (question + pre-registered rule, cited to the issue rather than pasted), a per-phase table, a release table verified against library git tags, and a caveats section — and records the seven library speed-ups that never had a profiling note, so the index is complete. Epic profiling-research-wiki, phase 2 of 2. Mind prompt: draft/docs/autolens_profiling/profiling_research_wiki_phase_2_backfill.md.
Plan
- Verify the release state of every library PR cited on the stub pages (and the seven no-note speed-ups) against the first library tag containing the merge commit; write
UNRELEASEDwhere merged but untagged, never a guess. - Fill each of the 18 stub pages from the template: Why (issue body + Mind
## Original prompt/ archived epic ledger, cited by number), Phases table (phase | dates | question | rule | result | RAL jobs | PRs), What shipped table (PR | what | merge | release), Open/parked/drafts, Caveats, one dated journal entry. - Resolve the two carried discrepancies: the PyAutoArray#582 F/D evaluation count (ledger says F×2 / D×4, Mind record says F=2 / D=2) and the "release not verified" states on the certified-solver, numpy-deflections, gaussian-precompute, image-source-mappings, compile-time and interferometer pages.
- Record the no-note library speed-ups (PyAutoArray #515/#517, #538, #539/#541, #543, #581, the retired scalar-default flip, gaussian-precompute p3) as journal entries on the nearest campaign page plus a short index section, so the index covers them.
- Refresh every index row's Status / Verdict / Library PRs (release) / Last updated; drop the "backfill pending" language; keep
scripts/misc/tooling/check_wiki.py --checkgreen. - No change to
results/notes/ledgers, the README dashboard, or any script (out of scope by the prompt).
Detailed implementation plan
Affected Repositories
- autolens_profiling (primary; workspace-type repo, docs only)
- PyAutoMind (ledger only:
active.mdregistration, prompt move toactive/)
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./autolens_profiling | main (a825d07, phase 1 merge) |
clean |
| ./PyAutoMind | claude/profiling-wiki-phase-2-b8vtjm (= origin/main f05771f) |
clean |
Suggested branch: claude/profiling-wiki-phase-2-b8vtjm (the session's designated branch, kept identical across repos; a remote-container clone, no task worktree).
Work Classification: Workspace (docs only).
Worktree root: none — remote container clone at /home/user/autolens_profiling.
Implementation Steps
- Release verification (
git tag --contains <merge>on blobless clones of PyAutoArray / PyAutoGalaxy / PyAutoLens / PyAutoFit): PyAutoArray #505 #516 #517 #518 #519 #520 #531 #533 #537 #541 #553 #554 #555 #557 #567 #582 (+ the no-note PRs for issues #538 #543 #581); PyAutoGalaxy #595 #597 #599 #602 #605 #629; PyAutoLens #718 #720 #750; PyAutoFit #1430. Merge SHAs come from the Mind records where recorded, else from the merge commit onmain. - Backfill the 18 pages in
wiki/campaigns/from_template.md, one group per shared source set:fixed_lens_light.md— recordscomplete/2026/09/fixed-light-{verdict,hardware,library-path,draws,scaling}.md,fixed-lens-light-source-only.md, epiccomplete/archive/epics/fixed_lens_light_profiling_epic.md; issues behind Fixed lens light source-only inversion: A100 verdict (#248) #250 Fixed lens light: library-path timing of unconstrained and certified solvers (#251) #252 Fixed lens light: library-path rows on CPU and the laptop RTX 2060 (#253) #254 Fixed lens light: certified active-set cost on low-likelihood draws (phase 3) #256 Fixed lens light: source-pixel scaling of the certified solver per hardware (phase 4) #258 Fixed lens light: whole-likelihood verdict on HST + Euclid × N × hardware (phase 5) #260.fixed_light_numba_cpu.md—fixed-lens-light-numba-cpu.md+fixed-light-numba-{phase1,solver,levers,s4,s4b,s5,s5b,s6}.md;profiling-contracts.md; issues research(fixed-light): phase 4 wave B — A-prime permute-active-last fnnls kernel A/B (numba CPU) #276 perf: measure numba CPU source-pixel scaling #282 fix: validate profiling experiments and clarify campaign results #284 and the earlier phase issues; caveat: bridge control job 343355 not in tree.hst_gpu_residue.md—hst-gpu-non-solver-residue.md+hst-gpu-residue-p{1,2,3,4}.md; issues research: trace-based one-process decomposition of the certified Delaunay GPU call (residue phase 1) #268 profiling: HST GPU residue phase 2 — matched vmap-vs-jit A100 experiment #273 research: HST GPU residue phase 3 — PSF mapping-matrix cube convolution candidates on the A100 #295 research(profiling): HST GPU residue phase 4 — reuse the certified Cholesky for log det(F+λH) #303; caveat: phase-2 1e-9 gate failed on lanes (inconclusive), phase-3 fp32 rows diagnostic only.certified_positive_solver.md—certified-positive-solver.md,certified-solver-phase-b.md,certified-solver-phase-c1-lane-rate.md,certified-solver-scalar-default-flip.md; issues PyAutoArray#566, research: certified solver phase B — production jit(vmap) solver policy on A100 #300, perf: certified solver phase C1 — uncertified-lane rate on real Nautilus batches #304; caveat: 1e-9 own-composition gate vs PDIP tolerance.post_certified_breakdown.md,imaging_over_sampling.md,point_source_gpu_breakdown.md— drafts: Why + the pre-registered contract from the Mind draft prompt; status staysdraft.numba_interferometer_revisit.md— epicnumba_interferometer_likelihood_revisit.md,numba-interferometer-pack.md,numba-interferometer-kernel-levers.md,numba-vs-jax-sparse.md; feat: numba w-tilde interferometer likelihood pack + breakdown scripts #225 research: numba vs JAX-CPU interferometer curvature — levers and verdict #226.delaunay_nn_a100_series.md—delaunay-nn-{breakdown,constant-split-assembly,launch-latency}.md,delaunay-walk-early-exit.md,delaunay-adapt-split-regularization.md,sibson-single-concatenated-walk.md; library PRs PyAutoArray#531 #533 #537; profiling PRs perf: DelaunayNN likelihood breakdown on A100, like-for-like with delaunay.py + JIT-timed H row #221 A100 re-measure: JAX Delaunay walk early exit (PyAutoArray#531) #224 A100 re-measure: DelaunayNN Sibson launch latency, Phase A (PyAutoArray#533) #227 results: A100 A/B of the compacted ConstantSplit assembly (PyAutoArray#537, 12x) #231 profiling: Delaunay cells default to AdaptSplit (production regularization), per-scheme pins, A100 A/B #233.a100_pixelized_baseline.md—a100-pixelized-baseline.md(perf(profiling): final A100 fp64 pixelized baseline, dense + sparse, for the matrix-free comparison #241 / perf(profiling): final A100 fp64 pixelized baseline — w-tilde-native sparse breakdown + 12-leg fresh-cache grid (#241) #242),xla-triton-gemm-off.md(results: XLA autotune vs Triton GEMM probe (job 342333) + doc corrections #230, PyAutoNerves#162).matrix_free_pixelized.md—matrix-free-pixelized-likelihood.md(perf(profiling): matrix-free pixelized likelihood — CG + SLQ reference and N_src sweep #247 / perf(profiling): matrix-free pixelized likelihood — CG + SLQ reference and N_src sweep (#247) #249).numpy_deflections_cpu.md—numpy-deflections-p{1,2,3}.md, epicnumpy_deflections_cpu_speedup.md; PyAutoArray#516 #519, PyAutoGalaxy#595 #597 #599, PyAutoLens#718; lens: deflection-angle profiling axis + phase-1 before/after (PyAutoArray#514) #210 lens: phase-2 after-pass — scipy wofz + spherical MGE branch, re-pinned cells (PyAutoGalaxy#596) #212 lens/deflections: numpy deflections phase 3 — after-numbers, stellar re-pin, note (PyAutoGalaxy#598) #213.gaussian_deflections_precompute.md—gaussian-precompute-p{1,2,3}.md, epicprecompute_fixed_geometry_gaussian_deflections.md; PyAutoGalaxy#602 #605, PyAutoArray#520; lens/deflections: fixed-geometry deflection memo — phase 1 measurement of record (PyAutoGalaxy#601) #214 likelihood_runtime: JAX validation and before/after for the deflection memo trace-time fold (phase 2, PyAutoGalaxy#604) #216.image_source_mappings.md—image-source-mappings-p{1,2,3}.md, epicimage_source_mappings_epic.md; PyAutoArray#517 #518, PyAutoLens#720.compile_time.md,preoptimization_baseline.md,reference_notes.md— the ledgers themselves (multistart_prodigy_compile_census.md,multiband_pyloop_productized.md,preopt_breakdown_baseline.md, the ten reference notes) plus the July/August records that cite issues maint: PreOptimizationTimes breakdown + README dashboard (polish 4) #59 and research: MultiStartProdigy JAX compile times — measure (MGE + meshes), make fast #93;reference_notes.mdgets one verified summary line per note.mass_field_profiling.md—mass-field-profiling-live.md(refactor: move live profiling builders to flat fields #287 / refactor: move live profiling builders to flat fields #288), epicmass_field_epic.md.
- Discrepancies: PyAutoArray#582 F/D counts — read the PR diff / test and the ledger's phase-1 rows, state which count is right and why on
interferometer_likelihood.md; every "not verified" release state replaced by the tag from step 1. - No-note speed-ups: journal entries on
interferometer_likelihood.md(issues PyAutoArray#538, #539/#541, #543, #581),image_source_mappings.md(#515/#517),certified_positive_solver.md(scalar-default flip retired 2026-09-24),gaussian_deflections_precompute.md(phase 3 = autolens_workspace#530); plus a "Library speed-ups with no profiling note" table inwiki/index.md. wiki/index.md: rename the second section to "Closed, parked and draft campaigns", refresh every cell that changed, remove "stub pages, backfill pending";wiki/README.mdno longer says stubs await backfill.- Validate:
python3 scripts/misc/tooling/check_wiki.py --check,python3 -m pytest scripts/misc/test -q -k wiki,ruff check ./ruff format --check .(no Python touched), then commit, push, open the PR; merge stays human (/prm).
Key Files
wiki/campaigns/*.md— the 18 stubs (only these and the four live pages' journals change)wiki/index.md,wiki/README.md— index rows and the phase-2 wordingscripts/misc/tooling/check_wiki.py— unchanged; the gateresults/notes/*.md— read only, never edited
Original Prompt
Click to expand starting prompt
Profiling research wiki — phase 2: backfill the closed campaigns
- Work type: docs
- Target: @autolens_profiling
- Epic: profiling-research-wiki
- Autonomy: human-required
- Filed: 2026-09-27
- Depends on: phase 1 (autolens_profiling#337) merged
Original prompt
"be sure we are building the research wiki of all this work so the profiling work we do is kept
and tracked" — phase 1 built wiki/index.md, the four live campaign pages and the drift check;
this phase fills the ~18 stub pages.
Scope
For every wiki/campaigns/*.md stub left by phase 1 (fixed lens light, fixed-light numba CPU,
HST GPU residue p1–4, certified positive solver, post-certified breakdown, numba interferometer
revisit, Delaunay/DelaunayNN A100 series, A100 pixelized baseline, matrix-free pixelized,
numpy deflections CPU, gaussian deflections precompute, image-source mappings, compile time,
PreOptimizationTimes baseline, reference notes, imaging over-sampling, mass-field profiling,
point-source GPU breakdown):
- Move the "why" (question + pre-registered go/no-go rule) out of the GitHub issue body and the
Mindcomplete/2026/09/*.md## Original prompt/complete/archive/epics/*ledgers into the
page. Cite the issue number; do not paste whole issue bodies. - Per-phase table (phase | dates | question | rule | result | RAL jobs | PRs) and the release
table, verified withgit tag --contains <merge-sha>. - Caveats section: provenance gaps (e.g. job 343355 control missing from the tree behind the
fixed-light 1.80x), laptop-only rows, inconsistent numerical gates (1e-9 vs PDIP tolerance). - Record the ~7 library speed-ups that have no profiling note (PyAutoArray #515, #538, #539,
#543, #581, the scalar-default flip autolens_profiling#302, gaussian-precompute p3) as rows or
journal entries so the index is complete. - Update each index row's Status / Verdict / Last updated;
check_wiki.py --checkstays green.
Out of scope
Rewriting or moving the results/notes/ ledgers; the dashboard; any script change.
Activity
wiki: backfill fixed_light_numba_cpu campaign page (phase 2, #339)
wiki: backfill hst_gpu_residue and post_certified_breakdown pages (ph…
wiki: backfill certified_positive_solver and matrix_free_pixelized pa…
wiki: backfill numba_interferometer_revisit; settle PyAutoArray#582 F…
wiki: backfill delaunay_nn_a100_series and a100_pixelized_baseline pa…
wiki: backfill numpy_deflections_cpu, gaussian_deflections_precompute…
wiki: backfill compile_time, preoptimization_baseline, reference_note…
wiki: index — every campaign row refreshed from its backfilled page; …
wiki: verify PyAutoNerves#162 and PyAutoGalaxy#603 releases; no 'not …
Jammy2211 commentedon Sep 27, 2026
Shipped
mainat5deb704a(head6211028, 20 files, +1270/−207) on the human's/prmafterlint.ymlwent green.wiki/campaigns/are full campaign pages: why (cited to issues and Mind records), phases with pre-registered rules, RAL jobs and PRs, tag-verified release tables, caveats, journal.wiki/index.mdrebuilt from the pages plus a "Library speed-ups with no profiling note" table.complete/2026/09/profiling-research-wiki-p2.md; epicprofiling-research-wikicomplete (phase 2 of 2). The out-of-scope ledger and Mind drift the backfill surfaced is filed asdraft/maintenance/autolens_profiling/wiki_backfill_ledger_and_mind_drift.md.Generated by Claude Code