feat: pyauto-status shell function for cross-repo drift dashboard - #3
Merged
Conversation
Add scripts/pyauto_status.sh defining a `pyauto-status` shell function
that prints a one-line-per-repo dashboard for every git repo under
~/Code/PyAutoLabs/: branch, upstream tracking ref, behind/ahead counts
vs @{u}, dirty file count, and a single-glyph flag column. Fetches run
in parallel — full sweep of ~21 repos completes in under 5s on cold
cache.
Handles the failure modes the 2026-04-27 audit surfaced:
- missing upstream -> prints NONE and `!` flag (don't crash)
- non-default upstream -> uses @{u}, not hard-coded origin/main
- non-git directories -> skipped cleanly
- fetch failures -> marked `!`, sweep continues
Also extends scripts/status.sh with a `--repos` flag that delegates to
`pyauto-status` so existing users of status.sh have a one-stop entry
point.
Closes #2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Jammy2211
pushed a commit
that referenced
this pull request
Jun 22, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jun 22, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jun 25, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 8, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 8, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 10, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 10, 2026
…> complete; research anchor retired
Jammy2211
pushed a commit
that referenced
this pull request
Jul 10, 2026
…rged-unchanged, #3 amended)
Jammy2211
pushed a commit
that referenced
this pull request
Jul 17, 2026
…iterature corpus, all validation green Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jammy2211
pushed a commit
that referenced
this pull request
Jul 17, 2026
…egs 1-3 hold Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Jammy2211
pushed a commit
that referenced
this pull request
Aug 23, 2026
) The follow-up filed at the end of the stale-jax-pin ship bundled two different jobs and sized too-large (score 11) against a declared medium. Split per hard rule #3: - active/run_smoke_per_script_timeout.md — bounded, now ISSUED as autogalaxy_workspace_test#108 and registered in active.md. - draft/research/workspaces/intermittent_smoke_hang_jax_mge.md — re-homed from bug/ to research/ and re-sized large; the open-ended half, left in draft. Investigating the timeout task changed it materially. It is not a new feature but DRIFT: autolens_workspace_test's run_smoke.py already implements the per-script timeout (PyAutoHands#226/#227) at 193 lines, while autogalaxy, autocti and autofit still carry the un-capped 113-line copy. Those three are identical in code — differing only in one docstring paragraph — so it is one diff applied three times. That also explains the hang's asymmetry: autolens would have capped mge.py and carried on; autogalaxy had nothing to stop it and ran 59 minutes silent. Sizing overridden to low/direct against the Feature Agent's large/phased verdict, which was formed on the pre-investigation draft. Recorded in the prompt with the reason rather than silently ignored. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KMknTjH347FBZUE82nNEby
Jammy2211
pushed a commit
that referenced
this pull request
Aug 26, 2026
Follow-up to #337, which handled repo identity (PyAutoBuild/PyAutoConf) and left the lowercase package name for its own pass because some sites are code snippets whose correctness depends on the package as it is today. Verified against PyAutoNerves main before editing: the package is `autonerves`, there is NO `autoconf` back-compat shim, and both `autonerves/jax_wrapper.py` and `autonerves/dictable.py` exist (`from_json` at dictable.py:352). So `from autoconf.dictable import from_json` in read_through_issues.md was not merely stale wording — it is broken code, and that line is example code a reader would copy. - graphical_scoping.md: `autoconf.jax_wrapper` -> `autonerves.jax_wrapper`; the autoconf-side helper -> autonerves-side. - graphical_scoping.md also QUOTED PyAutoFit's guidance as "shared utilities go in autoconf". Checked the source: PyAutoFit's AGENTS.md:15 now reads "Shared utilities (e.g. `test_mode`, `jax_wrapper`) belong in autonerves", and its CLAUDE.md is a one-line @-import of AGENTS.md. Quote and file reference both corrected, so it is faithful to what the file actually says. - ep_scoping.md: autoconf-shared -> autonerves-shared helper. - rectangular_bilinear_rtu_mesh_split.md, config_key_mirror_drift.md: the yaml-key-lowercasing behaviour is autonerves'. Left as historical, deliberately: - slope_hierarchy_n25_scale_up.md:61 "(autoconf renamed; PRs #2/#3 landed 2026-07-18)" — a correct note explaining the rename. - nightly_release_blocked_eight_nights.md:156 "the retired **autoconf**" — a dated dependency-resolution record. Consistent with complete/2026/07/rename-autobuild-to-autohands.md's guardrail on preserving historical old-name references; nothing under complete/ or issued/ is touched. Dashboard unchanged (body-only edits, no header fields); lifecycle check OK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01APqqbJS8zqLC5DYYGmv4d9
This was referenced Aug 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a cross-repo git sync dashboard (
pyauto-status) to PyAutoPrompt — a sourceable shell function that prints behind/ahead/dirty/upstream state for every git repo under~/Code/PyAutoLabs/in under 5 seconds. Designed to be sourced from~/.bashrcand called automatically after thePyAutovenv-activation aliases so the user always sees drift state before starting work. Closes #2.API Changes
None — internal changes only. PyAutoPrompt has no public Python API; this PR only adds shell tooling.
Test Plan
source PyAutoPrompt/scripts/pyauto_status.sh && pyauto-statusfrom a fresh shell completes in <10s.~/Code/PyAutoLabs/appear in one screen.NONEwith a!flag.bash PyAutoPrompt/scripts/status.sh --reposprints the same dashboard via the existingstatus.shentry point.bash PyAutoPrompt/scripts/status.sh(no args) still prints the prompt-registry dashboard unchanged.Implementation details
Files Added
scripts/pyauto_status.sh— new sourceable shell file definingpyauto-status().Files Modified
scripts/status.sh— added--reposarg handling near the top that sourcespyauto_status.shand runspyauto-status, then exits. Default and--fullbehaviour unchanged.Out of scope (handled by other prompts in
autoprompt/)/syncslash command).Personal env (out of PR, applied separately to
~/.bashrc)sourceline so the function is available in every shell.pyauto-statuscall appended to thePyAuto,PyAutoGPU,PyAutoNoJAXvenv-activation functions so the dashboard prints automatically after entering the workspace.Naming-clash note
There is already a
/pyauto-statusslash command (PyAutoPrompt/skills/pyauto-status/) that prints the workflow-registry dashboard (planned / active / complete tasks). The shell function reuses the name in the terminal namespace for git drift. Different surfaces, no collision — but the docstring at the top ofpyauto_status.shcalls this out for future-readers.🤖 Generated with Claude Code