Skip to content

Commit 4c73289

Browse files
authored
Merge pull request #11 from PyAutoLabs/feature/build-pulse-agent-separation
Docs: canonical Build/Pulse/Agent boundary (Stage 5)
2 parents 5240d40 + b283249 commit 4c73289

4 files changed

Lines changed: 66 additions & 13 deletions

File tree

AGENTS.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# PyAutoPulse — Agent Guidance
2+
3+
PyAutoPulse is the **health authority** of the PyAuto release ecosystem: it owns
4+
all health and release-readiness checking plus continuous monitoring of the
5+
PyAuto repos. `pyauto-pulse readiness` is the authoritative "is it safe to
6+
release?" gate.
7+
8+
## The boundary (one description, mirrored in all three repos)
9+
10+
- **PyAutoPulse — the health authority.** All health/readiness logic lives here:
11+
version drift, install-path, URL hygiene, CI/worktree/timing monitoring.
12+
`pyauto-pulse readiness` is the **authoritative** green/yellow/red verdict —
13+
the single "is it safe to release?" gate. Pulse is an observer: it reads and
14+
emits verdicts; it never writes into other repos and never triggers Build.
15+
- **PyAutoBuild — the executor.** Packaging, tagging, notebook generation, and
16+
PyPI publication via `release.yml`. Build runs **no** readiness checks of its
17+
own and never re-derives a gate decision; it just executes.
18+
- **PyAutoAgent — the brain.** Hosts the agents that connect the two. It owns no
19+
checks and no release steps; it gates on Pulse and delegates execution to
20+
Build.
21+
22+
## The call chain (always this order)
23+
24+
```
25+
Agent → Pulse (gate) → Build (execute)
26+
```
27+
28+
The agent asks `pyauto-pulse readiness --json`; only on a **green** verdict does
29+
it trigger Build's release. Pulse never triggers Build; Build never re-derives a
30+
gate decision the agent already made.
31+
32+
## Where things live
33+
34+
- Continuous checks (cheap, in the <30s `tick`): repo state, CI status, open PRs,
35+
worktree drift, script timing, version skew.
36+
- Deep checks (on-demand / cloud cron, never in the tick): `verify_install` (pip
37+
& conda install-path) and the URL-hygiene sweep (`url_sweep` + the central
38+
`.github/workflows/url-check.yml`).
39+
- `readiness` rolls these into the authoritative verdict (URL hygiene is
40+
monitoring only and does **not** gate it).
41+
42+
See [`CLAUDE.md`](CLAUDE.md) for Pulse's internals — the check framework, the
43+
<30s tick budget, how to add a check, and the hard rules (observer-only, colour
44+
coding, atomic state writes).

CLAUDE.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,20 @@ discovering this repository.
55

66
## What this repo is
77

8-
PyAutoPulse is a continuous-monitoring daemon for the PyAuto ecosystem.
9-
It polls 18 PyAuto repos every N minutes and surfaces drift (CI status,
10-
dirty checkouts, branch ahead/behind, open PRs, worktree state, script
11-
timing regressions) with green/yellow/red colour coding.
12-
13-
It is **separate** from PyAutoBuild on purpose: PyAutoBuild produces
14-
PyPI releases; Pulse monitors developer state continuously. Pulse shells
15-
out to `autobuild` primitives but never imports PyAutoBuild Python.
16-
17-
See `README.md` for user-facing docs.
8+
PyAutoPulse is the **health authority** of the PyAuto ecosystem. It owns all
9+
health and release-readiness checking: continuous monitoring (CI status, dirty
10+
checkouts, branch ahead/behind, open PRs, worktree state, script-timing
11+
regressions, version skew) plus deep on-demand/cloud checks (install
12+
verification, URL hygiene), all green/yellow/red colour coded. `pyauto-pulse
13+
readiness` is the **authoritative** "is it safe to release?" gate.
14+
15+
It is **separate** from PyAutoBuild on purpose: PyAutoBuild is a pure executor
16+
(it produces PyPI releases and runs no readiness checks); Pulse owns the
17+
checking. Pulse shells out to `autobuild` primitives but never imports
18+
PyAutoBuild Python, never writes into other repos, and never triggers Build.
19+
20+
See [`AGENTS.md`](AGENTS.md) for the canonical Build/Pulse/Agent boundary and the
21+
`Agent → Pulse → Build` call chain, and `README.md` for user-facing docs.
1822

1923
## Hard rules
2024

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# PyAutoPulse
22

3-
Continuous-monitoring daemon for the PyAuto ecosystem.
3+
The **health authority** of the PyAuto ecosystem: a continuous-monitoring daemon
4+
that also owns all release-readiness checking. `pyauto-pulse readiness` is the
5+
authoritative "is it safe to release?" gate — [PyAutoBuild](https://github.com/PyAutoLabs/PyAutoBuild)
6+
is a pure executor and the [PyAutoAgent](https://github.com/PyAutoLabs/PyAutoAgent)
7+
release agent dispatches a release only on a green verdict. See `AGENTS.md` for
8+
the boundary.
49

510
## What it does
611

pulse/checks/url_check_live.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,8 +417,8 @@ def render_markdown_issue(results: list[Result], repo_label: str) -> str:
417417
lines.append(f" - … and {len(r.locations) - 20} more")
418418
lines.append("")
419419
lines.append("---")
420-
lines.append("*Generated by `PyAutoBuild/autobuild/url_check_live.py`. "
421-
"Re-runs every Monday 04:00 UTC.*")
420+
lines.append("*Generated by `PyAutoPulse/pulse/checks/url_check_live.py` "
421+
"(central `url-check.yml`). Re-runs every Monday 04:00 UTC.*")
422422
return "\n".join(lines) + "\n"
423423

424424

0 commit comments

Comments
 (0)