diff --git a/AGENTS.md b/AGENTS.md index 1569211..3cbfa43 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -23,10 +23,16 @@ For the full workflow narrative, conventions, and registry schemas, read ## Layout (operational) -- **Prompts** — `/.md` (free-form markdown, one task per file). - Categories: `autoarray/`, `autofit/`, `autogalaxy/`, `autolens/`, `autobuild/`, - `cluster/`, `weak/`, `workspaces/`, `autolens_workspace_developer/`, - `autoprompt/`, `z_vault/`. +- **Prompts** — `//.md` (free-form markdown, one task + per file). The **first** folder is the *kind of work*; the **second** is the + *target repo or domain*. Work-types: `feature/`, `bug/`, `refactor/`, `docs/`, + `test/`, `release/`, `maintenance/`, `research/`, `experiment/` (plus `triage/` + for prompts whose classification is still unclear). PyAutoBrain routes by the + first folder — see [README.md](README.md) "Prompt taxonomy" and `ROUTING.md`. + Lifecycle/meta folders are **not** work-types and keep their own names: + `issued/` (routed prompts), `z_features/` (multi-task epic trackers), + `z_vault/` (deferred), `shelved/`, and `autoprompt/` (prompts about this repo's + own infrastructure). - **Registry** — root-level markdown files: `active.md`, `complete.md`, `planned.md`, `parked.md`, `queue.md`, `priority.md`, `ideas.md`. Mutate these only via the skills in `skills/` so commit messages stay consistent. @@ -52,13 +58,19 @@ For the full workflow narrative, conventions, and registry schemas, read ## When you are asked to add a new prompt -Write the file under the appropriate category. Don't touch `active.md` or -`issued/` directly — those are managed by `/start_dev` / `/create_issue`. +Write the file under `//.md` — pick the work-type from +the list above (use `triage/` if genuinely unsure) and the target repo/domain as +the second folder, e.g. `feature/autolens/potential_corrections.md` or +`bug/autoarray/mask_edge_case.md`. Don't touch `active.md` or `issued/` directly +— those are managed by `/start_dev` / `/create_issue`. ## When you are asked to start work on an existing prompt -Use `/start_dev /.md`. It will route to `/start_library` or -`/start_workspace` based on the repos referenced in the prompt body. +Use `/start_dev //.md` (older `/.md` paths +from before the taxonomy migration still work too). It will route to +`/start_library` or `/start_workspace` based on the repos referenced in the +prompt body — routing keys off the `@RepoName` references in the content, not the +folder. ## When in doubt diff --git a/README.md b/README.md index 07379be..1809dcd 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ fine — write naturally, the AI fills in the rest. idea ── you write it in ideas.md │ ▼ - draft prompt ── you write a markdown file under /.md + draft prompt ── you write a markdown file under //.md │ ▼ /start_dev ── reads the prompt, audits the code, drafts an issue, @@ -192,18 +192,25 @@ PyAutoMind/ ├── priority.md ← hand-curated priority hints ├── queue.md ← processing queue for /register_and_iterate │ -├── autoarray/ ← prompts targeting PyAutoArray -├── autofit/ ← prompts targeting PyAutoFit -├── autogalaxy/ ← prompts targeting PyAutoGalaxy -├── autolens/ ← prompts targeting PyAutoLens -├── autolens_workspace_developer/ ← prompts targeting the dev workspace -│ -├── autobuild/ ← prompts targeting build/release infrastructure (PyAutoBuild) -├── workspaces/ ← prompts targeting any *_workspace repo -│ -├── cluster/ ← cluster-lensing prompt series (numbered) -├── weak/ ← weak-lensing prompt series (numbered) +│ PROMPTS — organised by WORK TYPE (first folder), then TARGET (second folder). +│ See "Prompt taxonomy" below and ROUTING.md. +├── feature/ ← new user-facing or scientific capabilities +│ ├── autoarray/ autofit/ autogalaxy/ autolens/ autolens_assistant/ … +│ ├── workspaces/ ← any *_workspace repo +│ ├── pyautobrain/ ← prompts that implement PyAutoBrain agents +│ ├── jax_substructure/ weak/ cluster/ ← numbered topic series (kept together) +├── bug/ ← incorrect behaviour, crashes, regressions +│ ├── autofit/ autogalaxy/ autolens/ autoarray/ priors/ … +├── refactor/ ← internal restructuring, no intended behaviour change +├── docs/ ← documentation, tutorials, notebooks, examples +├── test/ ← test coverage, smoke tests, validation scripts +├── release/ ← packaging, versions, deployment, release readiness +├── maintenance/ ← dependency updates, hygiene, cleanup, small tech debt +├── research/ ← exploratory scientific / algorithmic investigation +├── experiment/ ← prototypes, spikes, proof-of-concept work +├── triage/ ← classification still unclear; needs manual review │ +│ LIFECYCLE / META — not work-types; keep their own names. ├── issued/ ← prompts that have been routed via /start_dev │ └── autolens_workspace_developer/ ← per-target subdirs preserved │ @@ -211,8 +218,9 @@ PyAutoMind/ │ └── complete/ ← archived trackers (all sub-prompts shipped) │ ├── z_vault/ ← deferred prompts (z_ prefix sorts last in listings) +├── shelved/ ← shelved prompts │ -├── autoprompt/ ← prompts about THIS repo's own infrastructure +├── autoprompt/ ← prompts about THIS repo's own infrastructure (meta) │ ├── scripts/ │ ├── status.sh ← prompt inventory helper @@ -243,17 +251,78 @@ replaces the previous `admin_jammy/software/admin_sync.sh` which operated on --- +## Prompt taxonomy + +PyAutoMind organises **intent by the kind of thinking required; PyAutoBrain uses +that structure to choose the right reasoning agent.** + +Prompts live at `//.md`: + +- The **first folder** answers *what kind of thinking or agent is needed?* — the + work type. +- The **second folder** answers *what domain or repository is affected?* — the + target repo (`autoarray`, `autofit`, `autogalaxy`, `autolens`, + `autolens_assistant`, `pyautobrain`, …), a workspace bucket (`workspaces`), or + a topic series (`jax_substructure`, `weak`, `cluster`, `priors`). + +### Work types → PyAutoBrain agents + +| Folder | Holds | Future PyAutoBrain agent | +|--------|-------|--------------------------| +| `feature/` | new user-facing or scientific capabilities | feature planner | +| `bug/` | incorrect behaviour, crashes, regressions | debugger | +| `refactor/` | internal restructuring, no intended behaviour change | refactor architect | +| `docs/` | documentation, tutorials, notebooks, examples | documentation agent | +| `test/` | test coverage, smoke tests, validation scripts | test engineer | +| `release/` | packaging, versions, deployment, release readiness | release engineer | +| `maintenance/` | dependency updates, hygiene, cleanup, small tech debt | hygiene agent | +| `research/` | exploratory scientific / algorithmic investigation | research analyst | +| `experiment/` | prototypes, spikes, proof-of-concept work | prototype agent | + +`triage/` holds prompts whose classification is still unclear — file there with a +short note and re-home once the work type is obvious. The full mapping (and the +note that the agents themselves live in PyAutoBrain, not here) is in +[`ROUTING.md`](ROUTING.md). + +### Good prompt paths + +``` +feature/autolens/potential_corrections.md +bug/autoarray/mask_edge_case.md +refactor/autofit/result_object_cleanup.md +docs/workspaces/pixelization_tutorial.md +research/autofit/sbi_design.md +experiment/autoarray/jax_sparse_mapping.md +``` + +### Not work-types + +`issued/`, `z_features/`, `z_vault/`, `shelved/` are **workflow lifecycle** +folders, and `autoprompt/` holds **meta** prompts about this repo's own +infrastructure. They keep their own names and are not routed by work type. + +### Migration note + +The repository previously used the target repo as the first folder +(`autoarray/foo.md`). Those prompts have moved to `/autoarray/foo.md`. +Routing always keyed off the `@RepoName` references in a prompt's body, not its +folder, so the skills accept both old and new paths during the transition — but +new prompts should use the work-type layout. + +--- + ## Conventions ### Naming - Prompt filenames are lowercase `kebab_or_snake_case.md`. - Numbered series use a leading number: `0_docs.md`, `1_simulator.md`. Skipping a - number (e.g. `weak/2_*.md` not present) is fine — it usually means a step was - consolidated or deferred. -- Category dirs match the target repo name (lowercased, no `Py` prefix): - `autoarray/`, `autofit/`, `autogalaxy/`, `autolens/`. Workspace prompts go - under `workspaces/` regardless of which workspace. + number (e.g. `feature/weak/2_*.md` not present) is fine — it usually means a + step was consolidated or deferred. +- **First folder = work type** (`feature/`, `bug/`, …); **second folder = target** + repo or domain (lowercased, no `Py` prefix): `feature/autoarray/`, + `bug/autofit/`, `refactor/autogalaxy/`. Workspace prompts go under + `/workspaces/` regardless of which workspace. See "Prompt taxonomy". ### Prompt file format @@ -265,6 +334,24 @@ Free-form markdown. Strong conventions: - One prompt = one task = one PR (ideally). If a prompt outlines several loosely-related changes, split before issuing. - No frontmatter required. Title in the first line is helpful but optional. +- **Optional metadata header.** A prompt may carry a light, human-writable header + near the top so both people and PyAutoBrain can see its type/target at a glance. + This is a convention, not a schema — never required, no YAML frontmatter: + + ```markdown + # Short task title + + Type: feature + Target: PyAutoLens + Repos: + - PyAutoLens + - autolens_workspace + + Status: draft + ``` + + When present, `Type:` should match the work-type folder. The goal is light + structure, not bureaucracy — prompts stay free-form prose. ### `active.md` schema diff --git a/ROUTING.md b/ROUTING.md new file mode 100644 index 0000000..ec39174 --- /dev/null +++ b/ROUTING.md @@ -0,0 +1,54 @@ +# Routing — prompt taxonomy → PyAutoBrain agents + +PyAutoMind stores **intent**. PyAutoBrain reasons over that intent and routes it +to the right specialist agent. This file defines the contract between the two: +the first folder of every prompt path declares the *kind of work*, and PyAutoBrain +maps that to a reasoning agent. + +> PyAutoMind organises intent by the kind of thinking required; PyAutoBrain uses +> that structure to choose the right reasoning agent. + +## The map + +Prompts live at `//.md`. The **work-type** (first folder) +determines the agent; the **target** (second folder) tells the agent which repo or +domain is affected. + +| Work-type folder | Intent | PyAutoBrain agent | +|------------------|--------|-------------------| +| `feature/` | new user-facing or scientific capabilities | feature planner | +| `bug/` | incorrect behaviour, crashes, regressions | debugger | +| `refactor/` | internal restructuring, no intended behaviour change | refactor architect | +| `docs/` | documentation, tutorials, notebooks, examples | documentation agent | +| `test/` | test coverage, smoke tests, validation scripts | test engineer | +| `release/` | packaging, versions, deployment, release readiness | release engineer | +| `maintenance/` | dependency updates, hygiene, cleanup, small technical debt | hygiene agent | +| `research/` | exploratory scientific / algorithmic investigation before implementation | research analyst | +| `experiment/` | prototypes, spikes, proof-of-concept work | prototype agent | +| `triage/` | classification still unclear | (human triages, then re-homes) | + +## Targets (second folder) + +The second folder names the affected repo or domain, e.g. `autoarray`, `autofit`, +`autogalaxy`, `autolens`, `autolens_assistant`, `autolens_profiling`, +`autolens_workspace_developer`, `autobuild`, `pyautobrain`; the workspace bucket +`workspaces`; or a topic series kept together as a unit (`jax_substructure`, +`weak`, `cluster`, `priors`). + +Within the libraries, work classifies as **library** vs **workspace** for the +`/start_library` ↔ `/start_workspace` split — but that is decided from the +`@RepoName` references in the prompt body, *not* from the folder. The folder is +for human + agent legibility and PyAutoBrain routing. + +## Scope of this file + +This repository **only defines the taxonomy and the metadata/documentation** that +PyAutoBrain consumes. The agents themselves are **not** implemented here — they +live in PyAutoBrain (currently the PyAutoAgent repo). Prompts that *implement* +those agents are ordinary `feature/pyautobrain/*.md` prompts. + +## Not routed by work type + +`issued/`, `z_features/`, `z_vault/`, `shelved/` are workflow-lifecycle folders; +`autoprompt/` holds meta prompts about this repo's own infrastructure. None of +these are work-type folders and PyAutoBrain does not route them. diff --git a/autoarray/rect_adapt.md b/bug/autoarray/rect_adapt.md similarity index 100% rename from autoarray/rect_adapt.md rename to bug/autoarray/rect_adapt.md diff --git a/autofit/factor_graph_3_14_instance_iteration.md b/bug/autofit/factor_graph_3_14_instance_iteration.md similarity index 100% rename from autofit/factor_graph_3_14_instance_iteration.md rename to bug/autofit/factor_graph_3_14_instance_iteration.md diff --git a/autofit/messages_xp_stack_jax_trace.md b/bug/autofit/messages_xp_stack_jax_trace.md similarity index 100% rename from autofit/messages_xp_stack_jax_trace.md rename to bug/autofit/messages_xp_stack_jax_trace.md diff --git a/autogalaxy/nfw_truncated_potential_accuracy.md b/bug/autogalaxy/nfw_truncated_potential_accuracy.md similarity index 100% rename from autogalaxy/nfw_truncated_potential_accuracy.md rename to bug/autogalaxy/nfw_truncated_potential_accuracy.md diff --git a/autogalaxy/spherical_bug.md b/bug/autogalaxy/spherical_bug.md similarity index 100% rename from autogalaxy/spherical_bug.md rename to bug/autogalaxy/spherical_bug.md diff --git a/autolens/pixelization_eager_vs_jit_divergence.md b/bug/autolens/pixelization_eager_vs_jit_divergence.md similarity index 100% rename from autolens/pixelization_eager_vs_jit_divergence.md rename to bug/autolens/pixelization_eager_vs_jit_divergence.md diff --git a/priors/01_log_gaussian_with_limits_crash.md b/bug/priors/01_log_gaussian_with_limits_crash.md similarity index 100% rename from priors/01_log_gaussian_with_limits_crash.md rename to bug/priors/01_log_gaussian_with_limits_crash.md diff --git a/priors/02_uniform_logpdf_array_handling.md b/bug/priors/02_uniform_logpdf_array_handling.md similarity index 100% rename from priors/02_uniform_logpdf_array_handling.md rename to bug/priors/02_uniform_logpdf_array_handling.md diff --git a/priors/03_gamma_from_mode_wrong_formula.md b/bug/priors/03_gamma_from_mode_wrong_formula.md similarity index 100% rename from priors/03_gamma_from_mode_wrong_formula.md rename to bug/priors/03_gamma_from_mode_wrong_formula.md diff --git a/priors/04_truncated_normal_log_partition_incomplete.md b/bug/priors/04_truncated_normal_log_partition_incomplete.md similarity index 100% rename from priors/04_truncated_normal_log_partition_incomplete.md rename to bug/priors/04_truncated_normal_log_partition_incomplete.md diff --git a/priors/05_inv_beta_suffstats_clamp_noop.md b/bug/priors/05_inv_beta_suffstats_clamp_noop.md similarity index 100% rename from priors/05_inv_beta_suffstats_clamp_noop.md rename to bug/priors/05_inv_beta_suffstats_clamp_noop.md diff --git a/priors/06_normal_message_sigma_negative_unchecked.md b/bug/priors/06_normal_message_sigma_negative_unchecked.md similarity index 100% rename from priors/06_normal_message_sigma_negative_unchecked.md rename to bug/priors/06_normal_message_sigma_negative_unchecked.md diff --git a/priors/07_log_prior_normalisation_convention.md b/bug/priors/07_log_prior_normalisation_convention.md similarity index 100% rename from priors/07_log_prior_normalisation_convention.md rename to bug/priors/07_log_prior_normalisation_convention.md diff --git a/priors/08_relative_width_modifier_safety.md b/bug/priors/08_relative_width_modifier_safety.md similarity index 100% rename from priors/08_relative_width_modifier_safety.md rename to bug/priors/08_relative_width_modifier_safety.md diff --git a/priors/09_prior_property_tests.md b/bug/priors/09_prior_property_tests.md similarity index 100% rename from priors/09_prior_property_tests.md rename to bug/priors/09_prior_property_tests.md diff --git a/priors/10_fixed_message_cache_growth.md b/bug/priors/10_fixed_message_cache_growth.md similarity index 100% rename from priors/10_fixed_message_cache_growth.md rename to bug/priors/10_fixed_message_cache_growth.md diff --git a/priors/11_transformed_message_semantics_doc.md b/bug/priors/11_transformed_message_semantics_doc.md similarity index 100% rename from priors/11_transformed_message_semantics_doc.md rename to bug/priors/11_transformed_message_semantics_doc.md diff --git a/priors/12_single_source_density_refactor.md b/bug/priors/12_single_source_density_refactor.md similarity index 100% rename from priors/12_single_source_density_refactor.md rename to bug/priors/12_single_source_density_refactor.md diff --git a/priors/13_collapse_prior_and_message.md b/bug/priors/13_collapse_prior_and_message.md similarity index 100% rename from priors/13_collapse_prior_and_message.md rename to bug/priors/13_collapse_prior_and_message.md diff --git a/priors/14_replace_transform_stack_with_bijectors.md b/bug/priors/14_replace_transform_stack_with_bijectors.md similarity index 100% rename from priors/14_replace_transform_stack_with_bijectors.md rename to bug/priors/14_replace_transform_stack_with_bijectors.md diff --git a/priors/z_features.md b/bug/priors/z_features.md similarity index 98% rename from priors/z_features.md rename to bug/priors/z_features.md index 4eee000..31e6985 100644 --- a/priors/z_features.md +++ b/bug/priors/z_features.md @@ -8,7 +8,7 @@ across Prior subclasses"), we audited every prior and message in PyAutoFit for similar latent math bugs. Full audit lives at: -`PyAutoPrompt/autofit/priors_and_messages_math_audit.md` +`PyAutoMind/research/autofit/priors_and_messages_math_audit.md` This folder breaks that audit into a logical, dependency-ordered sequence of standalone GitHub issues. The intent is to land them one by one so @@ -38,7 +38,7 @@ review before any code change. When ready to action one of these issues, run: ``` -/create_issue priors/.md +/create_issue bug/priors/.md ``` That files the issue. The agent should NOT call `/start_dev` against diff --git a/autolens_assistant/science_project_collaborator_clone.md b/docs/autolens_assistant/science_project_collaborator_clone.md similarity index 100% rename from autolens_assistant/science_project_collaborator_clone.md rename to docs/autolens_assistant/science_project_collaborator_clone.md diff --git a/workspaces/add_vincken_2026_wiki_and_cite_in_euclid.md b/docs/workspaces/add_vincken_2026_wiki_and_cite_in_euclid.md similarity index 100% rename from workspaces/add_vincken_2026_wiki_and_cite_in_euclid.md rename to docs/workspaces/add_vincken_2026_wiki_and_cite_in_euclid.md diff --git a/autoarray/preloads_advanced_workspace_guide.md b/docs/workspaces/preloads_advanced_workspace_guide.md similarity index 100% rename from autoarray/preloads_advanced_workspace_guide.md rename to docs/workspaces/preloads_advanced_workspace_guide.md diff --git a/visualization/arcsecond_to_decimal.md b/feature/autoarray/arcsecond_to_decimal.md similarity index 100% rename from visualization/arcsecond_to_decimal.md rename to feature/autoarray/arcsecond_to_decimal.md diff --git a/autoarray/multiwavelength_inversion.md b/feature/autoarray/multiwavelength_inversion.md similarity index 100% rename from autoarray/multiwavelength_inversion.md rename to feature/autoarray/multiwavelength_inversion.md diff --git a/autoarray/nufft_simulator_chunking.md b/feature/autoarray/nufft_simulator_chunking.md similarity index 100% rename from autoarray/nufft_simulator_chunking.md rename to feature/autoarray/nufft_simulator_chunking.md diff --git a/autoarray/oversampling.md b/feature/autoarray/oversampling.md similarity index 100% rename from autoarray/oversampling.md rename to feature/autoarray/oversampling.md diff --git a/autoarray/rectangular_adapt_constant_split_guard.md b/feature/autoarray/rectangular_adapt_constant_split_guard.md similarity index 100% rename from autoarray/rectangular_adapt_constant_split_guard.md rename to feature/autoarray/rectangular_adapt_constant_split_guard.md diff --git a/autoarray/rectangular_multi_submesh.md b/feature/autoarray/rectangular_multi_submesh.md similarity index 100% rename from autoarray/rectangular_multi_submesh.md rename to feature/autoarray/rectangular_multi_submesh.md diff --git a/autofit/ep_lbfgs_jax.md b/feature/autofit/ep_lbfgs_jax.md similarity index 100% rename from autofit/ep_lbfgs_jax.md rename to feature/autofit/ep_lbfgs_jax.md diff --git a/autogalaxy/piemass_potential.md b/feature/autogalaxy/piemass_potential.md similarity index 100% rename from autogalaxy/piemass_potential.md rename to feature/autogalaxy/piemass_potential.md diff --git a/autogalaxy/point_source_light.md b/feature/autogalaxy/point_source_light.md similarity index 100% rename from autogalaxy/point_source_light.md rename to feature/autogalaxy/point_source_light.md diff --git a/autolens_assistant/live_visual_update_context.md b/feature/autolens_assistant/live_visual_update_context.md similarity index 100% rename from autolens_assistant/live_visual_update_context.md rename to feature/autolens_assistant/live_visual_update_context.md diff --git a/autolens_assistant/portable_user_defaults.md b/feature/autolens_assistant/portable_user_defaults.md similarity index 100% rename from autolens_assistant/portable_user_defaults.md rename to feature/autolens_assistant/portable_user_defaults.md diff --git a/autolens_assistant/science_project_api_gate.md b/feature/autolens_assistant/science_project_api_gate.md similarity index 100% rename from autolens_assistant/science_project_api_gate.md rename to feature/autolens_assistant/science_project_api_gate.md diff --git a/autolens_assistant/science_project_assistant_ref.md b/feature/autolens_assistant/science_project_assistant_ref.md similarity index 100% rename from autolens_assistant/science_project_assistant_ref.md rename to feature/autolens_assistant/science_project_assistant_ref.md diff --git a/autolens_assistant/science_project_per_project_literature.md b/feature/autolens_assistant/science_project_per_project_literature.md similarity index 100% rename from autolens_assistant/science_project_per_project_literature.md rename to feature/autolens_assistant/science_project_per_project_literature.md diff --git a/autolens_assistant/script_to_notebook.md b/feature/autolens_assistant/script_to_notebook.md similarity index 100% rename from autolens_assistant/script_to_notebook.md rename to feature/autolens_assistant/script_to_notebook.md diff --git a/cluster/5_profiling.md b/feature/cluster/5_profiling.md similarity index 100% rename from cluster/5_profiling.md rename to feature/cluster/5_profiling.md diff --git a/jax_substructure/1_vmap_subhalo_deflections.md b/feature/jax_substructure/1_vmap_subhalo_deflections.md similarity index 100% rename from jax_substructure/1_vmap_subhalo_deflections.md rename to feature/jax_substructure/1_vmap_subhalo_deflections.md diff --git a/jax_substructure/2_tracer_lax_scan.md b/feature/jax_substructure/2_tracer_lax_scan.md similarity index 100% rename from jax_substructure/2_tracer_lax_scan.md rename to feature/jax_substructure/2_tracer_lax_scan.md diff --git a/jax_substructure/3_simulator_jax_e2e.md b/feature/jax_substructure/3_simulator_jax_e2e.md similarity index 100% rename from jax_substructure/3_simulator_jax_e2e.md rename to feature/jax_substructure/3_simulator_jax_e2e.md diff --git a/jax_substructure/4_vmap_batched_simulation.md b/feature/jax_substructure/4_vmap_batched_simulation.md similarity index 100% rename from jax_substructure/4_vmap_batched_simulation.md rename to feature/jax_substructure/4_vmap_batched_simulation.md diff --git a/jax_substructure/5_prng_key_vmap_noise.md b/feature/jax_substructure/5_prng_key_vmap_noise.md similarity index 100% rename from jax_substructure/5_prng_key_vmap_noise.md rename to feature/jax_substructure/5_prng_key_vmap_noise.md diff --git a/jax_substructure/6_deflection_equivalence_test.md b/feature/jax_substructure/6_deflection_equivalence_test.md similarity index 100% rename from jax_substructure/6_deflection_equivalence_test.md rename to feature/jax_substructure/6_deflection_equivalence_test.md diff --git a/autobrain/build.md b/feature/pyautobrain/build.md similarity index 100% rename from autobrain/build.md rename to feature/pyautobrain/build.md diff --git a/autobrain/feature.md b/feature/pyautobrain/feature.md similarity index 100% rename from autobrain/feature.md rename to feature/pyautobrain/feature.md diff --git a/autobrain/health.md b/feature/pyautobrain/health.md similarity index 100% rename from autobrain/health.md rename to feature/pyautobrain/health.md diff --git a/weak/4_modeling.md b/feature/weak/4_modeling.md similarity index 100% rename from weak/4_modeling.md rename to feature/weak/4_modeling.md diff --git a/weak/5_likelihood_function.md b/feature/weak/5_likelihood_function.md similarity index 100% rename from weak/5_likelihood_function.md rename to feature/weak/5_likelihood_function.md diff --git a/workspaces/group_los_halos.md b/feature/workspaces/group_los_halos.md similarity index 100% rename from workspaces/group_los_halos.md rename to feature/workspaces/group_los_halos.md diff --git a/workspaces/group_subhalo_sensitivity.md b/feature/workspaces/group_subhalo_sensitivity.md similarity index 100% rename from workspaces/group_subhalo_sensitivity.md rename to feature/workspaces/group_subhalo_sensitivity.md diff --git a/autolens/restore_multiple_sources_lensing_of_lens.md b/feature/workspaces/restore_multiple_sources_lensing_of_lens.md similarity index 100% rename from autolens/restore_multiple_sources_lensing_of_lens.md rename to feature/workspaces/restore_multiple_sources_lensing_of_lens.md diff --git a/autolens_profiling/polish.md b/maintenance/autolens_profiling/polish.md similarity index 100% rename from autolens_profiling/polish.md rename to maintenance/autolens_profiling/polish.md diff --git a/workspaces/read_through_issues.md b/maintenance/workspaces/read_through_issues.md similarity index 100% rename from workspaces/read_through_issues.md rename to maintenance/workspaces/read_through_issues.md diff --git a/planned.md b/planned.md index d5c1294..2b02696 100644 --- a/planned.md +++ b/planned.md @@ -24,7 +24,7 @@ source_plane.py in the same dir — they share the seed dataset. ## nfw-truncated-potential-accuracy -- prompt: PyAutoMind/autogalaxy/nfw_truncated_potential_accuracy.md +- prompt: PyAutoMind/bug/autogalaxy/nfw_truncated_potential_accuracy.md - status: planned - filed: 2026-06-05 - classification: library (accuracy bug) @@ -40,7 +40,7 @@ - PyAutoGalaxy ## piemass-potential -- prompt: PyAutoMind/autogalaxy/piemass_potential.md +- prompt: PyAutoMind/feature/autogalaxy/piemass_potential.md - status: planned - filed: 2026-06-05 - classification: library (missing feature) diff --git a/autofit/latent_class_redesign.md b/refactor/autofit/latent_class_redesign.md similarity index 100% rename from autofit/latent_class_redesign.md rename to refactor/autofit/latent_class_redesign.md diff --git a/autogalaxy/einstein_radius_jit_native_seed_finder.md b/refactor/autogalaxy/einstein_radius_jit_native_seed_finder.md similarity index 100% rename from autogalaxy/einstein_radius_jit_native_seed_finder.md rename to refactor/autogalaxy/einstein_radius_jit_native_seed_finder.md diff --git a/autoarray/delaunay_interpolator_pure_callback_vmap_memory.md b/research/autoarray/delaunay_interpolator_pure_callback_vmap_memory.md similarity index 100% rename from autoarray/delaunay_interpolator_pure_callback_vmap_memory.md rename to research/autoarray/delaunay_interpolator_pure_callback_vmap_memory.md diff --git a/autoarray/delaunay_research.md b/research/autoarray/delaunay_research.md similarity index 100% rename from autoarray/delaunay_research.md rename to research/autoarray/delaunay_research.md diff --git a/autoarray/nnls_gpu_bottleneck.md b/research/autoarray/nnls_gpu_bottleneck.md similarity index 100% rename from autoarray/nnls_gpu_bottleneck.md rename to research/autoarray/nnls_gpu_bottleneck.md diff --git a/autobuild/git_docs.md b/research/autobuild/git_docs.md similarity index 100% rename from autobuild/git_docs.md rename to research/autobuild/git_docs.md diff --git a/autofit/priors_and_messages_math_audit.md b/research/autofit/priors_and_messages_math_audit.md similarity index 100% rename from autofit/priors_and_messages_math_audit.md rename to research/autofit/priors_and_messages_math_audit.md diff --git a/autolens_workspace_developer/jax_jit_profiling.md b/research/autolens_workspace_developer/jax_jit_profiling.md similarity index 100% rename from autolens_workspace_developer/jax_jit_profiling.md rename to research/autolens_workspace_developer/jax_jit_profiling.md diff --git a/graphical_ep/ep_scoping.md b/research/graphical_ep/ep_scoping.md similarity index 100% rename from graphical_ep/ep_scoping.md rename to research/graphical_ep/ep_scoping.md diff --git a/graphical_ep/graphical_scoping.md b/research/graphical_ep/graphical_scoping.md similarity index 100% rename from graphical_ep/graphical_scoping.md rename to research/graphical_ep/graphical_scoping.md diff --git a/scripts/status.sh b/scripts/status.sh index 437a05c..9e0c890 100755 --- a/scripts/status.sh +++ b/scripts/status.sh @@ -26,13 +26,29 @@ bold() { printf "\033[1m%s\033[0m\n" "$1"; } dim() { printf "\033[2m%s\033[0m\n" "$1"; } # ---------- Counts per category ---------- +# +# Prompts are now organised by WORK TYPE at the first folder level +# (feature/, bug/, refactor/, …) with the target repo/domain as the second +# level. Lifecycle/meta folders (issued/, z_features/, z_vault/, shelved/, +# autoprompt/, triage/) keep their own names. See README "Prompt taxonomy". + +WORK_TYPES=(feature bug refactor docs test release maintenance research experiment) +LIFECYCLE_DIRS=(triage issued z_features z_vault shelved autoprompt) -bold "== Prompt inventory ==" +bold "== Prompt inventory (by work type) ==" printf "%-35s %s\n" "category" "count" printf "%-35s %s\n" "----------------------------------" "-----" -for dir in autoarray autofit autogalaxy autolens autolens_workspace_developer \ - autobuild cluster weak workspaces autoprompt z_vault issued; do +for dir in "${WORK_TYPES[@]}"; do + if [ -d "$ROOT/$dir" ]; then + count=$(find "$ROOT/$dir" -type f -name "*.md" 2>/dev/null | wc -l | tr -d ' ') + printf "%-35s %s\n" "$dir/" "$count" + fi +done + +echo "" +bold "== Lifecycle / meta ==" +for dir in "${LIFECYCLE_DIRS[@]}"; do if [ -d "$ROOT/$dir" ]; then count=$(find "$ROOT/$dir" -type f -name "*.md" 2>/dev/null | wc -l | tr -d ' ') printf "%-35s %s\n" "$dir/" "$count" @@ -95,8 +111,7 @@ fi if [ "${1:-}" = "--full" ]; then bold "== Full prompt list ==" - for dir in autoarray autofit autogalaxy autolens autolens_workspace_developer \ - autobuild cluster weak workspaces autoprompt z_vault issued; do + for dir in "${WORK_TYPES[@]}" "${LIFECYCLE_DIRS[@]}"; do [ -d "$ROOT/$dir" ] || continue files=$(find "$ROOT/$dir" -type f -name "*.md" 2>/dev/null | sort) [ -z "$files" ] && continue diff --git a/skills/create_issue/SKILL.md b/skills/create_issue/SKILL.md index 65df0cd..ac0890a 100755 --- a/skills/create_issue/SKILL.md +++ b/skills/create_issue/SKILL.md @@ -12,10 +12,12 @@ Convert a prompt file into a tracked GitHub issue with a human-readable plan and /create-issue ``` -The path is relative to `PyAutoMind/`. Examples: -- `/create-issue autofit/logging.md` -- `/create-issue autoarray/psf_oversampling.md` -- `/create-issue autolens/dark_matter_sight_lines.md` +The path is relative to `PyAutoMind/`. Prompts live under `//` +(see README "Prompt taxonomy"); pre-migration `/.md` paths still +resolve. Examples: +- `/create-issue bug/autofit/factor_graph_3_14_instance_iteration.md` +- `/create-issue feature/autoarray/oversampling.md` +- `/create-issue bug/priors/01_log_gaussian_with_limits_crash.md` ## Steps diff --git a/skills/register_and_iterate/register_and_iterate.md b/skills/register_and_iterate/register_and_iterate.md index 5ec5c06..65d3b1e 100644 --- a/skills/register_and_iterate/register_and_iterate.md +++ b/skills/register_and_iterate/register_and_iterate.md @@ -12,7 +12,10 @@ gates. /register_and_iterate --queue # reads PyAutoMind/queue.md ``` -Prompts are paths relative to `PyAutoMind/` (e.g. `autolens/fit_imaging_pytree_rectangular.md`). +Prompts are paths relative to `PyAutoMind/`, now organised by work type +(e.g. `feature/autolens/fit_imaging_pytree_rectangular.md`; see README "Prompt +taxonomy"). Pre-migration `/.md` paths still resolve, which is why +the historical `# DONE` queue entries below keep their old `autolens/…` form. ## Autonomy Contract diff --git a/skills/start_dev/start_dev.md b/skills/start_dev/start_dev.md index eb1e597..45e5de4 100644 --- a/skills/start_dev/start_dev.md +++ b/skills/start_dev/start_dev.md @@ -8,10 +8,12 @@ Universal entry point for starting work on a new task. Reads a prompt file, crea /start_dev ``` -The path is relative to `PyAutoMind/`. Examples: -- `/start_dev autofit/logging.md` -- `/start_dev autoarray/psf_oversampling.md` -- `/start_dev autolens/dark_matter_sight_lines.md` +The path is relative to `PyAutoMind/`. Prompts live under `//` +(see README "Prompt taxonomy"); pre-migration `/.md` paths still +resolve. Examples: +- `/start_dev bug/autofit/factor_graph_3_14_instance_iteration.md` +- `/start_dev feature/autoarray/oversampling.md` +- `/start_dev refactor/autofit/latent_class_redesign.md` - `/start_dev z_features/.md` — audit-only mode (see Step 1b). Checks linked sub-prompts and archives the tracker to `z_features/complete/` if everything is shipped. Does **not** create an issue. ## Steps @@ -36,7 +38,7 @@ If the normalized path starts with `z_features/`, do **not** treat the file as a **a. Parse the tracker for sub-prompt references.** Scan the file for: - Markdown links: `[label](relative/path.md)` — take the path inside the parens. -- Bare relative paths: `/.md` where `` is one of the known PyAutoMind subdirs (`autoconf/`, `autofit/`, `autoarray/`, `autogalaxy/`, `autolens/`, `autofit_workspace/`, `autogalaxy_workspace/`, `autolens_workspace/`, `autolens_workspace_test/`, `autogalaxy_workspace_test/`, `euclid_strong_lens_modeling_pipeline/`, `howtolens/`, `howtogalaxy/`, `admin_jammy/`, etc.). +- Bare relative paths. After the work-type migration these are `//.md` where `` is one of `feature/`, `bug/`, `refactor/`, `docs/`, `test/`, `release/`, `maintenance/`, `research/`, `experiment/`, `triage/`. Older `/.md` paths (`autofit/…`, `autoarray/…`, `autogalaxy/…`, `autolens/…`, `cluster/…`, `weak/…`, etc.) still appear in pre-migration trackers — accept both forms. Dedupe; resolve any `../` segments relative to the tracker's own directory. Skip references that point inside `z_features/` itself (self-references / sibling trackers). @@ -50,8 +52,8 @@ Dedupe; resolve any `../` segments relative to the tracker's own directory. Skip ``` | Sub-prompt | Status | Notes | |------------|--------|-------| -| autogalaxy/foo.md | shipped | matched `autogalaxy-wst-foo` in complete.md, PR #123 | -| autogalaxy/bar.md | not yet issued | still in autogalaxy/ | +| feature/autogalaxy/foo.md | shipped | matched `autogalaxy-wst-foo` in complete.md, PR #123 | +| feature/autogalaxy/bar.md | not yet issued | still in feature/autogalaxy/ | ``` Follow with a one-line summary: `N shipped / M in flight / K not yet issued / U unknown`. diff --git a/autolens_workspace_developer/mge_jit_regression_rebaseline.md b/test/autolens_workspace_developer/mge_jit_regression_rebaseline.md similarity index 100% rename from autolens_workspace_developer/mge_jit_regression_rebaseline.md rename to test/autolens_workspace_developer/mge_jit_regression_rebaseline.md diff --git a/workspaces/restore_workspace_test_likelihood_baselines.md b/test/workspaces/restore_workspace_test_likelihood_baselines.md similarity index 100% rename from workspaces/restore_workspace_test_likelihood_baselines.md rename to test/workspaces/restore_workspace_test_likelihood_baselines.md diff --git a/autobuild/smoke_workspace_fixes.md b/test/workspaces/smoke_workspace_fixes.md similarity index 100% rename from autobuild/smoke_workspace_fixes.md rename to test/workspaces/smoke_workspace_fixes.md diff --git a/triage/README.md b/triage/README.md new file mode 100644 index 0000000..f8a164d --- /dev/null +++ b/triage/README.md @@ -0,0 +1,8 @@ +# triage/ + +Prompts whose work-type classification is not yet clear. Park a prompt here with +a short HTML-comment note at the top explaining what needs deciding, then move it +into the right `//` folder once the kind of work is obvious. + +This is a holding area, not a work type — PyAutoBrain does not route from here. +See [`../ROUTING.md`](../ROUTING.md) and the README "Prompt taxonomy" section. diff --git a/autogalaxy/jax_zero_contour.md b/triage/jax_zero_contour.md similarity index 50% rename from autogalaxy/jax_zero_contour.md rename to triage/jax_zero_contour.md index f50a8b5..8dcfbbb 100755 --- a/autogalaxy/jax_zero_contour.md +++ b/triage/jax_zero_contour.md @@ -1,3 +1,8 @@ + + [resume] claude --resume 015b4ac4-0900-4d06-b39a-e1f1bd31af80 diff --git a/z_features/cluster_lensing.md b/z_features/cluster_lensing.md index 9a1f29c..c3ad403 100644 --- a/z_features/cluster_lensing.md +++ b/z_features/cluster_lensing.md @@ -1,12 +1,12 @@ __Outstanding__ (sequenced) -1. [cluster/2_scaling_relation.md](../cluster/2_scaling_relation.md) — +1. [2_scaling_relation.md](../issued/2_scaling_relation.md) — make scaling-relation members the default in the three `autolens_workspace/scripts/cluster/` scripts (10 low-mass members on a luminosity–mass scaling relation, always via the CSV interface mirroring `imaging/features/scaling_relation/`). Simulator extension must still produce multiple images in the right positions. -2. [cluster/3_test_workspace.md](../cluster/3_test_workspace.md) — +2. [3_test_workspace.md](../issued/3_test_workspace.md) — stand up `autolens_workspace_test/scripts/cluster/`: - `simulator.py` re-using the workspace simulator (so scaling galaxies flow through into every downstream test). @@ -21,12 +21,12 @@ __Outstanding__ (sequenced) - `scripts/jax_likelihood_functions/cluster/single_plane.py` + `multi_plane.py` with numerical assertions against the perturbation test case. -3. [cluster/4_likelihood_function.md](../cluster/4_likelihood_function.md) — +3. [4_likelihood_function.md](../issued/4_likelihood_function.md) — `autolens_workspace/scripts/cluster/likelihood_function.py` step-by-step walkthrough: source-plane chi² first, then image-plane chi². Comment density and structure should match the other workspace `likelihood_function.py` scripts. -4. [cluster/5_profiling.md](../cluster/5_profiling.md) — two scripts in +4. [feature/cluster/5_profiling.md](../feature/cluster/5_profiling.md) — two scripts in `autolens_profiling/likelihood/cluster/` that time the source-plane and image-plane likelihood paths, following the per-model breakdown style of the rest of `autolens_profiling/likelihood/`. Depends on (3) for the diff --git a/z_features/jax_substructure_simulator.md b/z_features/jax_substructure_simulator.md index 30427a8..6cbf2a1 100644 --- a/z_features/jax_substructure_simulator.md +++ b/z_features/jax_substructure_simulator.md @@ -30,18 +30,18 @@ __What's already done__ (no work needed): __Outstanding__ (sequenced): -1. [jax_substructure/1_vmap_subhalo_deflections.md](../jax_substructure/1_vmap_subhalo_deflections.md) — +1. [feature/jax_substructure/1_vmap_subhalo_deflections.md](../feature/jax_substructure/1_vmap_subhalo_deflections.md) — vectorized deflection path: represent N halos as `(max_N, n_params)` arrays, `jax.vmap` the profile deflection function, sum with mask. Integration test comparing against the existing Tracer Python-loop result. -2. [jax_substructure/2_tracer_lax_scan.md](../jax_substructure/2_tracer_lax_scan.md) — +2. [feature/jax_substructure/2_tracer_lax_scan.md](../feature/jax_substructure/2_tracer_lax_scan.md) — `jax.lax.scan` over planes: precomputed scaling-factor matrix, fixed-shape per-plane halo stacks, one scan op replaces the nested Python loops in `tracer_util.traced_grid_2d_list_from`. -3. [jax_substructure/3_simulator_jax_e2e.md](../jax_substructure/3_simulator_jax_e2e.md) — +3. [feature/jax_substructure/3_simulator_jax_e2e.md](../feature/jax_substructure/3_simulator_jax_e2e.md) — end-to-end `jax.jit(simulate)`: wire PSF convolution, add `prng_key` support for Poisson noise, thread xp through over-sampling, smoke test on a representative substructure configuration. -4. [jax_substructure/4_vmap_batched_simulation.md](../jax_substructure/4_vmap_batched_simulation.md) — +4. [feature/jax_substructure/4_vmap_batched_simulation.md](../feature/jax_substructure/4_vmap_batched_simulation.md) — stretch goal: `vmap(jit(simulate))(thetas, keys)` for ~1024 images per GPU launch. Depends on all three previous prompts. diff --git a/z_features/weak_shear.md b/z_features/weak_shear.md index e9a38af..d636a5e 100644 --- a/z_features/weak_shear.md +++ b/z_features/weak_shear.md @@ -3,6 +3,6 @@ Weak gravitational lensing series — multi-step epic adding `WeakDataset`, simu shipped: weak_0_docs (`weak-lensing-shear-docs`, PyAutoGalaxy #366, 2026-04-25) shipped: [weak_1_simulator.md](../issued/weak_1_simulator.md) (`weak-shear-simulator`, PyAutoLens #473 + autolens_workspace #84, 2026-05-04) in flight: [weak_2_visualization.md](../issued/weak_2_visualization.md) (`weak-visualization`, PyAutoLens #496) -queued: weak/[3_fit.md](../weak/3_fit.md) -queued: weak/[4_modeling.md](../weak/4_modeling.md) -queued: weak/[5_likelihood_function.md](../weak/5_likelihood_function.md) +queued: [3_fit.md](../issued/3_fit.md) +queued: [feature/weak/4_modeling.md](../feature/weak/4_modeling.md) +queued: [feature/weak/5_likelihood_function.md](../feature/weak/5_likelihood_function.md)