Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/morning_status.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
env:
REPOS: >-
PyAutoLabs/PyAutoConf
PyAutoLabs/PyAutoNerves
PyAutoLabs/PyAutoFit
PyAutoLabs/PyAutoArray
PyAutoLabs/PyAutoGalaxy
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ this repository.

**PyAutoMind is the Mind of the PyAuto organism and the starting point of the
PyAuto workflow.** It holds the organism's ideas, intent, goals, priorities and
workflow state. Every task that ends up as a PR in PyAutoConf, PyAutoFit,
workflow state. Every task that ends up as a PR in PyAutoNerves, PyAutoFit,
PyAutoArray, PyAutoGalaxy, PyAutoLens, or any of the `*_workspace*` repos begins
as a markdown file here.

Expand Down
10 changes: 5 additions & 5 deletions docs/pyautobrain/pyautoscientist_phase3_research.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Research note, 2026-07-10. Companion to `pyautoscientist_generalisation_assessme
discussion: the maintainer's vision is **more rigid** than the shipped docs'
category contract — a literal `PyAutoProject` / `autoproject_workspace` /
`autoproject_workspace_test` / `autoproject_assistant` family a new scientist
adopts wholesale, with PyAutoConf promoted to the organism's "nervous system".
adopts wholesale, with PyAutoNerves promoted to the organism's "nervous system".
Constraints unchanged: no duplicated code, no impact on the live setup, and
the live organs stay the single fast-moving upstream adopters tag along with.

Expand All @@ -26,7 +26,7 @@ a satellite must follow:
| Config layering (packaged defaults ← workspace override) | the `autoconf` package at runtime | a `config/` directory in the documented shape |

**The one gap:** `smoke_tests.yml` is a fat per-workspace copy (hard-coded
checkout chain of PyAutoConf → … → the library) in every workspace and HowTo —
checkout chain of PyAutoNerves → … → the library) in every workspace and HowTo —
~10 near-identical files in the live setup. Generalising it into a reusable
workflow parameterised by the dependency chain is a Phase 3 work item that
pays the live setup directly (one definition instead of ten) *and* is the
Expand Down Expand Up @@ -113,9 +113,9 @@ one generator maintains every fresh-slate artifact against the live source
of truth. Drift check: a CI job re-runs spawn and fails on diff — the
repos_sync pattern, again.

## 4. PyAutoConf → PyAutoNerves: promote the role now, defer the rename
## 4. PyAutoNerves → PyAutoNerves: promote the role now, defer the rename

PyAutoConf genuinely is the nervous system — the runtime layer connecting
PyAutoNerves genuinely is the nervous system — the runtime layer connecting
workspace conventions to libraries (layered config with workspace override,
version handshake, test_mode, jax_wrapper, notebook/Colab setup). The
adopter-facing framing "your project gets `autoproject/config/` +
Expand All @@ -126,7 +126,7 @@ But the literal rename decomposes into three moves with very different costs:

1. **Promote the role** — body map `role:` text, an RTD "Nerves" page beside
the organ pages, template family wired through it. Zero risk. **Do now.**
2. **Rename the repo** (PyAutoConf → PyAutoNerves, keep package `autoconf`)
2. **Rename the repo** (PyAutoNerves → PyAutoNerves, keep package `autoconf`)
— GitHub redirects help, but the name is hard-coded in every fat
`smoke_tests.yml` checkout, docs-build.yml's dep chains, Heart config,
pre_build, repos.yaml + all generated blocks, and the firewall allowlist.
Expand Down
48 changes: 24 additions & 24 deletions scripts/repos_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ def system_map(categories, repos):

def public_organs(repos):
"""The front-door organ set: every `category: organ` row (manifest order)
plus any repo flagged `front_door: true` (e.g. Nerves/PyAutoConf — a
plus any repo flagged `front_door: true` (e.g. Nerves/PyAutoNerves — a
library that is part of the organism's public self-presentation without
being a category:organ). This is a *superset* of the internal organism map
(`system_map`, strict category:organ per PyAutoBrain/ORGANISM.md); the two
Expand Down Expand Up @@ -518,18 +518,18 @@ def write_claude_md_pointers(root, repos):
"PyAutoBrain/agents/_common.sh": {"PyAutoLabs"},
"PyAutoBrain/agents/conductors/bug/_bug.py": {"PyAutoArray"},
"PyAutoBrain/agents/conductors/bug/bug.sh": {"PyAutoLabs"},
"PyAutoBrain/agents/conductors/health/health.sh": {"PyAutoConf"},
"PyAutoBrain/agents/conductors/health/health.sh": {"PyAutoNerves"},
"PyAutoBrain/agents/conductors/hygiene/_hygiene_config.py": {"PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoBrain/agents/conductors/hygiene/hygiene.sh": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoBrain/agents/conductors/hygiene/hygiene.sh": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoBrain/agents/conductors/clone/_clone.py": {"HowToFit", "PyAutoFit", "PyAutoLabs", "PyAutoLens", "autofit_assistant", "autofit_workspace", "autolens_assistant"},
"PyAutoBrain/agents/conductors/clone/clone.sh": {"HowToFit", "PyAutoFit", "autofit_workspace", "autolens_assistant"},
"PyAutoBrain/agents/conductors/community/_community.py": {"Jammy2211", "PyAutoLabs"},
"PyAutoBrain/agents/conductors/intake/_intake.py": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace"},
"PyAutoBrain/agents/conductors/intake/_intake.py": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace"},
"PyAutoBrain/agents/conductors/profiling/_profiling.py": {"PyAutoLabs", "autolens_profiling"},
"PyAutoBrain/agents/conductors/profiling/profiling.sh": {"autolens_profiling"},
"PyAutoBrain/agents/conductors/release/nightly.sh": {"PyAutoLabs", "PyAutoLens"},
"PyAutoBrain/agents/conductors/release/rehearse.sh": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens"},
"PyAutoBrain/agents/conductors/release/validate.sh": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens"},
"PyAutoBrain/agents/conductors/release/rehearse.sh": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens"},
"PyAutoBrain/agents/conductors/release/validate.sh": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens"},
"PyAutoBrain/agents/conductors/workspace/_workspace.py": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoLabs", "PyAutoReduce", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoBrain/agents/faculties/memory/_memory.py": {"autolens_assistant"},
"PyAutoBrain/agents/faculties/memory/memory.sh": {"autolens_assistant"},
Expand All @@ -541,33 +541,33 @@ def write_claude_md_pointers(root, repos):
"PyAutoBrain/docs/conf.py": {"PyAutoScientist"},
"PyAutoBrain/bin/check_skill_line_counts.sh": {"admin_jammy", "autolens_profiling"},
"PyAutoBrain/bin/clean_slate.sh": {"PyAutoLabs"},
"PyAutoBrain/bin/ensure_workspace_labels.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "Jammy2211", "PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "PyAutoCTI", "autocti_workspace", "autocti_workspace_test", "autofit_workspace", "autofit_workspace_test", "autogalaxy_workspace", "autogalaxy_workspace_test", "autolens_workspace", "autolens_workspace_test", "euclid_strong_lens_modeling_pipeline"},
"PyAutoBrain/bin/ensure_workspace_labels.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "Jammy2211", "PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "PyAutoCTI", "autocti_workspace", "autocti_workspace_test", "autofit_workspace", "autofit_workspace_test", "autogalaxy_workspace", "autogalaxy_workspace_test", "autolens_workspace", "autolens_workspace_test", "euclid_strong_lens_modeling_pipeline"},
"PyAutoBrain/bin/install.sh": {"PyAutoFit", "PyAutoLabs", "admin_jammy", "autolens_profiling"},
"PyAutoBrain/bin/overnight_status.sh": {"PyAutoLabs", "autolens_assistant"},
"PyAutoBrain/bin/pull_all_main.sh": {"PyAutoLabs"},
"PyAutoBrain/bin/version_drift.sh": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoBrain/bin/worktree.sh": {"PyAutoArray", "PyAutoCTI", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "admin_jammy", "autolens_workspace"},
"PyAutoBrain/tests/test_activity_gate.py": {"HowToFit", "HowToLens", "PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoLens", "autolens_workspace"},
"PyAutoBrain/bin/version_drift.sh": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoBrain/bin/worktree.sh": {"PyAutoArray", "PyAutoCTI", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "admin_jammy", "autolens_workspace"},
"PyAutoBrain/tests/test_activity_gate.py": {"HowToFit", "HowToLens", "PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoLens", "autolens_workspace"},
"PyAutoBrain/tests/test_clone_conductor.py": {"autofit_assistant", "autolens_assistant"},
"PyAutoBrain/tests/test_community_conductor.py": {"Jammy2211", "PyAutoFit", "PyAutoLabs", "PyAutoLens", "admin_jammy"},
"PyAutoBrain/tests/test_mind_commit_guard.py": {"/home/jammy", "PyAutoFit", "PyAutoLabs"},
"PyAutoBrain/tests/test_policy_seams.py": {"PyAutoFit", "PyAutoLens", "autolens_workspace"},
"PyAutoBrain/tests/test_review_inplace.py": {"PyAutoArray", "PyAutoLabs"},
"PyAutoBrain/tests/test_skill_install.py": {"PyAutoLabs"},
"PyAutoBrain/tests/test_workspace_conductor.py": {"HowToGalaxy", "HowToLens", "autolens_workspace"},
"PyAutoHands/autobuild/aggregate_results.py": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHands/autobuild/build_util.py": {"PyAutoConf"},
"PyAutoHands/autobuild/aggregate_results.py": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHands/autobuild/build_util.py": {"PyAutoNerves"},
"PyAutoHands/autobuild/bump_colab_urls.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoLabs", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHands/autobuild/clone_seed.py": {"autofit_assistant"},
"PyAutoHands/autobuild/create_analysis_issue.py": {"PyAutoLabs"},
"PyAutoHands/autobuild/generate_autofit.py": {"autofit_workspace"},
"PyAutoHands/autobuild/generate_markdown.py": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens"},
"PyAutoHands/autobuild/generate_release_notes.py": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "PyAutoScientist"},
"PyAutoHands/autobuild/navigator.py": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoCTI", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens"},
"PyAutoHands/autobuild/generate_release_notes.py": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "PyAutoScientist"},
"PyAutoHands/autobuild/navigator.py": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoCTI", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens"},
"PyAutoHands/autobuild/repro_command.py": {"PyAutoLabs", "autogalaxy_workspace_test"},
"PyAutoHands/autobuild/run_all.py": {"HowToLens", "PyAutoLabs", "autolens_workspace", "euclid_strong_lens_modeling_pipeline"},
"PyAutoHands/autobuild/slack_release_notes.py": {"PyAutoArray", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens"},
"PyAutoHands/autobuild/tag_and_merge.sh": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens"},
"PyAutoHands/autobuild/tag_and_merge.sh": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens"},
"PyAutoHands/pre_build.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "admin_jammy", "autofit_workspace", "autofit_workspace_developer", "autofit_workspace_test", "autogalaxy_workspace", "autogalaxy_workspace_test", "autolens_assistant", "autolens_workspace", "autolens_workspace_developer", "autolens_workspace_test", "euclid_strong_lens_modeling_pipeline"},
"PyAutoHands/tests/test_bump_colab_urls.py": {"Jammy2211", "PyAutoFit", "PyAutoLabs", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHands/tests/test_generate_markdown.py": {"PyAutoArray", "autolens_workspace"},
Expand All @@ -582,11 +582,11 @@ def write_claude_md_pointers(root, repos):
"PyAutoHeart/heart/checks/profiling_drift.py": {"PyAutoLabs", "autolens_profiling", "autolens_workspace_test"},
"PyAutoHeart/heart/checks/script_timing.py": {"PyAutoLabs"},
"PyAutoHeart/heart/checks/test_run.py": {"PyAutoLabs"},
"PyAutoHeart/heart/checks/unit_test_timing.py": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens"},
"PyAutoHeart/heart/checks/url_check.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "Jammy2211", "PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHeart/heart/checks/unit_test_timing.py": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens"},
"PyAutoHeart/heart/checks/url_check.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "Jammy2211", "PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLabs", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHeart/heart/checks/url_check_live.py": {"PyAutoLabs", "PyAutoLens", "admin_jammy"},
"PyAutoHeart/heart/checks/url_sweep.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace", "euclid_strong_lens_modeling_pipeline"},
"PyAutoHeart/heart/checks/verify_install.sh": {"PyAutoConf", "PyAutoLabs", "PyAutoLens", "autolens_workspace"},
"PyAutoHeart/heart/checks/url_sweep.sh": {"HowToFit", "HowToGalaxy", "HowToLens", "PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace", "euclid_strong_lens_modeling_pipeline"},
"PyAutoHeart/heart/checks/verify_install.sh": {"PyAutoNerves", "PyAutoLabs", "PyAutoLens", "autolens_workspace"},
"PyAutoHeart/heart/checks/version_skew.py": {"PyAutoLabs"},
"PyAutoHeart/heart/checks/workspace_testmode_timing.py": {"PyAutoLabs", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHeart/heart/checks/worktree_drift.sh": {"PyAutoLabs"},
Expand All @@ -596,21 +596,21 @@ def write_claude_md_pointers(root, repos):
"PyAutoHeart/heart/shell/heart_prompt.sh": {"PyAutoLabs"},
"PyAutoHeart/heart/state.py": {"PyAutoFit"},
"PyAutoHeart/heart/tick.sh": {"autolens_profiling"},
"PyAutoHeart/heart/validate.py": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace", "autolens_workspace_test"},
"PyAutoHeart/heart/validate.py": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace", "autolens_workspace_test"},
"PyAutoHeart/scripts/health_audit.sh": {"PyAutoLabs"},
"PyAutoHeart/scripts/health_release.sh": {"PyAutoLabs"},
"PyAutoHeart/scripts/health_sync.sh": {"PyAutoLabs", "admin_jammy"},
"PyAutoHeart/tests/test_ci_status.py": {"PyAutoFit", "PyAutoLens", "autolens_workspace"},
"PyAutoHeart/tests/test_dashboard.py": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace"},
"PyAutoHeart/tests/test_manifest_drift.py": {"PyAutoConf", "PyAutoFit", "PyAutoLabs"},
"PyAutoHeart/tests/test_dashboard.py": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace"},
"PyAutoHeart/tests/test_manifest_drift.py": {"PyAutoNerves", "PyAutoFit", "PyAutoLabs"},
"PyAutoHeart/tests/test_noise.py": {"HowToFit", "autolens_workspace_test"},
"PyAutoHeart/tests/test_readiness.py": {"HowToLens", "PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autogalaxy_workspace", "autolens_workspace", "autolens_workspace_test"},
"PyAutoHeart/tests/test_readiness.py": {"HowToLens", "PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autogalaxy_workspace", "autolens_workspace", "autolens_workspace_test"},
"PyAutoHeart/tests/test_repo_config.py": {"PyAutoCTI", "autocti_workspace", "autocti_workspace_test"},
"PyAutoHeart/tests/test_state.py": {"PyAutoArray", "PyAutoFit"},
"PyAutoHeart/tests/test_test_run.py": {"autofit_workspace", "autolens_workspace"},
"PyAutoHeart/tests/test_unit_test_timing.py": {"PyAutoFit"},
"PyAutoHeart/tests/test_url_check.py": {"HowToFit", "HowToGalaxy", "HowToLens", "Jammy2211", "PyAutoFit", "PyAutoLabs", "autofit_workspace", "autogalaxy_workspace", "autolens_workspace"},
"PyAutoHeart/tests/test_validate.py": {"PyAutoArray", "PyAutoConf", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace", "autolens_workspace_test"},
"PyAutoHeart/tests/test_validate.py": {"PyAutoArray", "PyAutoNerves", "PyAutoFit", "PyAutoGalaxy", "PyAutoLens", "autolens_workspace", "autolens_workspace_test"},
"PyAutoHeart/tests/test_verify_install_script.py": {"Jammy2211", "PyAutoLabs", "autolens_workspace"},
"PyAutoHeart/tests/test_version_skew.py": {"HowToFit", "PyAutoFit", "PyAutoLens", "autofit_workspace", "autolens_assistant", "autolens_workspace", "autolens_workspace_test"},
"PyAutoHeart/tests/test_workspace_testmode_timing.py": {"autolens_workspace"},
Expand Down