From f8492afd71e509922068614929831b9bb4e07b5c Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Jul 2026 15:10:17 +0000 Subject: [PATCH] refactor(cli): point autobuild monitoring shims at pyauto-heart (not pyauto-pulse) The verify_install / url_check / watch / status / tick / fix subcommands still delegated to the obsolete `pyauto-pulse` binary and resolved a ~/Code/PyAutoLabs/PyAutoPulse checkout that no longer exists (the repo was renamed to PyAutoHeart). This only worked via PyAutoHeart's back-compat `bin/pyauto-pulse` shim. Rename the resolver and every delegation string to PyAutoHeart / pyauto-heart so the CLI calls the canonical binary directly, matching what this repo's CLAUDE.md already documents. Behaviour is unchanged (the pulse shim forwarded here anyway); this just removes the stale double-hop and the dead PyAutoPulse path. Co-Authored-By: Claude Opus 4.8 --- bin/autobuild | 114 +++++++++++++++++++++++++------------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/bin/autobuild b/bin/autobuild index 6e6eb26..87fe0fd 100755 --- a/bin/autobuild +++ b/bin/autobuild @@ -43,7 +43,7 @@ SUBCOMMAND_ORDER=( tag_and_merge "# Triage support" repro_command - "# Monitoring daemon (delegates to PyAutoPulse)" + "# Monitoring daemon (delegates to PyAutoHeart)" watch status tick @@ -54,8 +54,8 @@ SUBCOMMAND_ORDER=( declare -A SHORT_DESC=( [pre_build]="Format, generate, push workspaces, then dispatch release.yml" - [verify_install]="Shim → pyauto-pulse verify_install (deep install-path checks)" - [url_check]="Shim → pyauto-pulse url_check (forbidden Binder/Colab URL guard)" + [verify_install]="Shim → pyauto-heart verify_install (deep install-path checks)" + [url_check]="Shim → pyauto-heart url_check (forbidden Binder/Colab URL guard)" [bump_colab_urls]="Rewrite Colab URLs in cwd from old date-tag to new date-tag" [generate]="Convert workspace scripts/ to notebooks/ (run from a workspace root)" [run]="Execute notebooks in a workspace folder" @@ -68,10 +68,10 @@ declare -A SHORT_DESC=( [create_analysis_issue]="Open a GitHub issue with the release report and assign Copilot" [tag_and_merge]="Commit and tag every library repo for a release" [repro_command]="Emit the shell command autobuild uses to run one script (for triage handoffs)" - [watch]="Start the PyAutoPulse monitoring daemon (Ctrl-C to stop)" - [status]="Print the latest PyAutoPulse state cache with green/yellow/red" - [tick]="Force one PyAutoPulse refresh cycle" - [fix]="Bundle context for a Pulse failure topic and emit a Claude invocation" + [watch]="Start the PyAutoHeart monitoring daemon (Ctrl-C to stop)" + [status]="Print the latest PyAutoHeart state cache with green/yellow/red" + [tick]="Force one PyAutoHeart refresh cycle" + [fix]="Bundle context for a Heart failure topic and emit a Claude invocation" [help]="List subcommands or show details for one" ) @@ -118,36 +118,36 @@ help_verify_install() { cat <<'EOF' autobuild verify_install [CHECKS...] [--version VERSION] [--keep] -Shim → `pyauto-pulse verify_install`. Release-readiness checking is Pulse's -job now (PyAutoBuild is a pure executor), so this delegates to PyAutoPulse, +Shim → `pyauto-heart verify_install`. Release-readiness checking is Heart's +job now (PyAutoBuild is a pure executor), so this delegates to PyAutoHeart, which owns the install-path checks (pip & conda, A–E) and writes the JSON -sidecar that `pyauto-pulse readiness` consumes. +sidecar that `pyauto-heart readiness` consumes. -See `pyauto-pulse help verify_install` for full docs. +See `pyauto-heart help verify_install` for full docs. EOF } cmd_verify_install() { - local pulse_bin - pulse_bin="$(_pulse_resolve)" || return $? - exec "$pulse_bin" verify_install "$@" + local heart_bin + heart_bin="$(_heart_resolve)" || return $? + exec "$heart_bin" verify_install "$@" } help_url_check() { cat <<'EOF' autobuild url_check [directory] -Shim → `pyauto-pulse url_check`. URL hygiene is PyAutoPulse's job now +Shim → `pyauto-heart url_check`. URL hygiene is PyAutoHeart's job now (PyAutoBuild is a pure executor). Scans rst/md/ipynb/py under (default cwd) for forbidden Binder/Colab/owner URL patterns. -The ecosystem-wide sweep runs from PyAutoPulse's central url-check.yml -workflow; see `pyauto-pulse help url_sweep`. +The ecosystem-wide sweep runs from PyAutoHeart's central url-check.yml +workflow; see `pyauto-heart help url_sweep`. EOF } cmd_url_check() { - local pulse_bin - pulse_bin="$(_pulse_resolve)" || return $? - exec "$pulse_bin" url_check "$@" + local heart_bin + heart_bin="$(_heart_resolve)" || return $? + exec "$heart_bin" url_check "$@" } help_bump_colab_urls() { @@ -394,42 +394,42 @@ cmd_repro_command() { _python_in_autobuild repro_command.py "$@" } -# ----- Monitoring daemon (delegates to PyAutoPulse) ----- +# ----- Monitoring daemon (delegates to PyAutoHeart) ----- # -# These four subcommands shim through to the standalone `pyauto-pulse` -# binary installed from the sibling PyAutoLabs/PyAutoPulse repo. The -# split is deliberate: PyAutoBuild produces releases; PyAutoPulse +# These four subcommands shim through to the standalone `pyauto-heart` +# binary installed from the sibling PyAutoLabs/PyAutoHeart repo. The +# split is deliberate: PyAutoBuild produces releases; PyAutoHeart # monitors developer state continuously. Co-locating the CLI surface # (via these shims) without sharing Python code keeps both repos # independently releasable. # -# If `pyauto-pulse` is not on PATH, the shim prints an install hint and +# If `pyauto-heart` is not on PATH, the shim prints an install hint and # exits 127. -_pulse_resolve() { - # Resolve a path/command for the pyauto-pulse binary. Try: - # 1. PATH (works if `pip install pyautopulse` made the entry point global) - # 2. The bin script in the sibling PyAutoPulse repo checkout +_heart_resolve() { + # Resolve a path/command for the pyauto-heart binary. Try: + # 1. PATH (works if `pip install pyautoheart` made the entry point global) + # 2. The bin script in the sibling PyAutoHeart repo checkout # Prints the resolved invocation on stdout, returns 0 on success. - if command -v pyauto-pulse >/dev/null 2>&1; then - printf 'pyauto-pulse' + if command -v pyauto-heart >/dev/null 2>&1; then + printf 'pyauto-heart' return 0 fi - local pulse_bin="$HOME/Code/PyAutoLabs/PyAutoPulse/bin/pyauto-pulse" - if [[ -x "$pulse_bin" ]]; then - printf '%s' "$pulse_bin" + local heart_bin="$HOME/Code/PyAutoLabs/PyAutoHeart/bin/pyauto-heart" + if [[ -x "$heart_bin" ]]; then + printf '%s' "$heart_bin" return 0 fi cat >&2 < [args...] -Shim → `pyauto-pulse fix`. Bundle context for a specific failing topic +Shim → `pyauto-heart fix`. Bundle context for a specific failing topic and emit a Claude Code invocation you can paste/run. Topics: @@ -496,9 +496,9 @@ Topics: EOF } cmd_fix() { - local pulse_bin - pulse_bin="$(_pulse_resolve)" || return $? - exec "$pulse_bin" fix "$@" + local heart_bin + heart_bin="$(_heart_resolve)" || return $? + exec "$heart_bin" fix "$@" } # ----- Meta -----