aepkit 0.7.2__tar.gz → 0.7.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aepkit-0.7.2 → aepkit-0.7.4}/CHANGELOG.md +51 -1
- {aepkit-0.7.2/src/aepkit.egg-info → aepkit-0.7.4}/PKG-INFO +25 -7
- {aepkit-0.7.2 → aepkit-0.7.4}/README.md +22 -4
- {aepkit-0.7.2 → aepkit-0.7.4}/pyproject.toml +2 -2
- {aepkit-0.7.2 → aepkit-0.7.4}/references/autonomous-mode.md +13 -0
- aepkit-0.7.4/src/aepkit/__init__.py +1 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/skill/references/autonomous-mode.md +13 -0
- {aepkit-0.7.2 → aepkit-0.7.4/src/aepkit.egg-info}/PKG-INFO +25 -7
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit.egg-info/requires.txt +2 -2
- aepkit-0.7.2/src/aepkit/__init__.py +0 -1
- {aepkit-0.7.2 → aepkit-0.7.4}/LICENSE +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/MANIFEST.in +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/SKILL.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/references/failure-modes-and-example.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/references/handoffs.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/references/tasks-and-gates.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/setup.cfg +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/__main__.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/cli.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/install_skill.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/lint.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/negcontrol.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/py.typed +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/scaffold.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/skill/SKILL.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/skill/references/failure-modes-and-example.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/skill/references/handoffs.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/skill/references/tasks-and-gates.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/status.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/templates/compliance-log.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/templates/execution-guide.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit/templates/plan-of-record.md +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit.egg-info/SOURCES.txt +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit.egg-info/dependency_links.txt +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit.egg-info/entry_points.txt +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/src/aepkit.egg-info/top_level.txt +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/run.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_cli.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_install_skill.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_lint.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_negcontrol.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_readme_claims.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_scaffold.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_skill_sync.py +0 -0
- {aepkit-0.7.2 → aepkit-0.7.4}/tests/test_status.py +0 -0
|
@@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.7.4] - 2026-11-08
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- `references/autonomous-mode.md`: "Tool versions at the start of a run". Before the first task
|
|
14
|
+
the Auditor updates the tools the run depends on (`aepkit`, any plugin or harness) and records
|
|
15
|
+
their versions in the plan of record; the Auditor brief gains a `TOOLS` field for it.
|
|
16
|
+
- `aeprogress` 0.4.0:
|
|
17
|
+
- Expandable phases: each phase row opens its full title, its bar and count, and its tasks and
|
|
18
|
+
gate as state chips (approved, conditional, in progress with the worker, awaiting audit,
|
|
19
|
+
pending, rejected). The active phase opens by itself; a phase the owner closes stays closed.
|
|
20
|
+
Where the surface reports hover (desktop app, fullscreen terminal), a closed phase shows the
|
|
21
|
+
same in a card.
|
|
22
|
+
- Update check: the pane and `/aeprogress` say when a newer version exists, from the
|
|
23
|
+
marketplace catalog Claude Code keeps on disk and, at most once a day, from the version
|
|
24
|
+
published on GitHub (one request for a public file; option **Update check**: `daily`,
|
|
25
|
+
`offline` or `off`; skipped for copies from the claude.ai directory and when
|
|
26
|
+
`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` is set). The README explains how to turn on
|
|
27
|
+
auto-update for this marketplace.
|
|
28
|
+
- An icon (`.claude-plugin/icon.png`, source in `assets/icon.svg`), and `documentationUrl`,
|
|
29
|
+
`supportUrl` and `privacyPolicyUrl` in `plugin.json`, for the plugin directory. The README
|
|
30
|
+
gains "What it does on your machine" (every process it starts, the files and variables it
|
|
31
|
+
reads, the one network request, and what it can refuse) and "Privacy", and shows its
|
|
32
|
+
screenshots as Markdown images inside the plugin.
|
|
33
|
+
|
|
34
|
+
## [0.7.3] - 2026-11-08
|
|
35
|
+
|
|
36
|
+
No change to the package's code. This release puts the new README on PyPI: the protocol's
|
|
37
|
+
Guided and Autonomous modes, the `aeprogress` section with screenshots, and the DOI badge.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
- CI runs `claude plugin validate` (the mod and the marketplace) and `claude plugin test` for
|
|
41
|
+
`aeprogress`, on Claude Code 2.1.319, the release the mod is tested against.
|
|
42
|
+
- Dev dependencies: ruff 0.17.3, mypy 2.4.1; GitHub Actions bumped (Dependabot #20, #22).
|
|
43
|
+
- `CITATION.cff` and the README carry the Zenodo concept DOI, 10.5281/zenodo.23633244, which
|
|
44
|
+
resolves to the latest archived release.
|
|
45
|
+
- `aeprogress` 0.3.1: a worker's name in the pane no longer repeats the task ID it carries
|
|
46
|
+
(`P2-T3 Executor P2-T3` is now `P2-T3 Executor`), for subagents, Orca workers and lines
|
|
47
|
+
from a workers command. README screenshots of the pane, the launch limit and the
|
|
48
|
+
compaction countdown.
|
|
49
|
+
|
|
10
50
|
## [0.7.2] - 2026-11-08
|
|
11
51
|
|
|
12
52
|
### Added
|
|
@@ -62,6 +102,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
62
102
|
that used it showed the task as awaiting audit in `aepkit status`. The four sentences
|
|
63
103
|
now say `APPROVED`.
|
|
64
104
|
|
|
105
|
+
## [0.6.1] - 2026-10-25
|
|
106
|
+
|
|
107
|
+
### Added
|
|
108
|
+
- `CITATION.cff`, so each GitHub release is archived on Zenodo with citation metadata. This
|
|
109
|
+
release is the first archived one (10.5281/zenodo.23633245). No code changes, and it was not
|
|
110
|
+
published to PyPI: the package still reported 0.6.0.
|
|
111
|
+
|
|
65
112
|
## [0.6.0] - 2026-10-24
|
|
66
113
|
|
|
67
114
|
### Added
|
|
@@ -346,10 +393,13 @@ Fixes from an independent review of 0.3.0.
|
|
|
346
393
|
- Multi-framework agent installation support for Antigravity, Claude Code, and Cursor.
|
|
347
394
|
- Zero-dependency test runner (`tests/run.py`).
|
|
348
395
|
|
|
349
|
-
[Unreleased]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.7.
|
|
396
|
+
[Unreleased]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.7.4...HEAD
|
|
397
|
+
[0.7.4]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.7.3...v0.7.4
|
|
398
|
+
[0.7.3]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.7.2...v0.7.3
|
|
350
399
|
[0.7.2]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.7.1...v0.7.2
|
|
351
400
|
[0.7.1]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.7.0...v0.7.1
|
|
352
401
|
[0.7.0]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.6.0...v0.7.0
|
|
402
|
+
[0.6.1]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.6.0...v0.6.1
|
|
353
403
|
[0.6.0]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.5.1...v0.6.0
|
|
354
404
|
[0.5.1]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.5.0...v0.5.1
|
|
355
405
|
[0.5.0]: https://github.com/tBeltty/auditor-executor-protocol/compare/v0.4.0...v0.5.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aepkit
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4
|
|
4
4
|
Summary: Mechanical support for the Auditor/Executor protocol: scaffold, lint, and negative-control the document set for a multi-phase, multi-agent execution.
|
|
5
5
|
Author-email: tBeltty <jhonatan@tbelt.online>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -30,8 +30,8 @@ Requires-Dist: pytest-cov>=4.0; extra == "test"
|
|
|
30
30
|
Provides-Extra: dev
|
|
31
31
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
32
32
|
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
33
|
-
Requires-Dist: ruff==0.
|
|
34
|
-
Requires-Dist: mypy==2.4.
|
|
33
|
+
Requires-Dist: ruff==0.17.3; extra == "dev"
|
|
34
|
+
Requires-Dist: mypy==2.4.1; extra == "dev"
|
|
35
35
|
Requires-Dist: build==1.6.1; extra == "dev"
|
|
36
36
|
Requires-Dist: twine==7.0.0; extra == "dev"
|
|
37
37
|
Dynamic: license-file
|
|
@@ -44,13 +44,14 @@ Dynamic: license-file
|
|
|
44
44
|
[](https://opensource.org/licenses/MIT)
|
|
45
45
|
[](https://github.com/astral-sh/ruff)
|
|
46
46
|
[](https://mypy-lang.org/)
|
|
47
|
+
[](https://doi.org/10.5281/zenodo.23633244)
|
|
47
48
|
[](https://github.com/tBeltty/auditor-executor-protocol/blob/main/pyproject.toml)
|
|
48
49
|
|
|
49
50
|
A two-role protocol for running multi-phase work through AI agents without the plan drifting into open-ended discussion and without "all tests pass" masquerading as verification.
|
|
50
51
|
|
|
51
52
|
The **Auditor** defines what "done" means and proves it independently. The **Executor** implements one numbered task at a time and logs command output. Neither role crosses into the other.
|
|
52
53
|
|
|
53
|
-
[`SKILL.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/SKILL.md) specifies the protocol core; [`references/`](https://github.com/tBeltty/auditor-executor-protocol/tree/main/references) holds the parts an agent loads only when it reaches that step (task and gate writing, handoff templates, Autonomous mode, failure modes and a worked example). `aepkit` is a zero-dependency Python CLI that automates scaffolding, drift linting, negative controls, status tallies, and installing the skill into your agent.
|
|
54
|
+
[`SKILL.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/SKILL.md) specifies the protocol core; [`references/`](https://github.com/tBeltty/auditor-executor-protocol/tree/main/references) holds the parts an agent loads only when it reaches that step (task and gate writing, handoff templates, Autonomous mode, failure modes and a worked example). `aepkit` is a zero-dependency Python CLI that automates scaffolding, drift linting, negative controls, status tallies, and installing the skill into your agent. On Claude Code, the optional [`aeprogress`](#6-optional-aeprogress-for-claude-code) mod shows a run's progress beside the chat, holds back Executor launches when the machine is busy, and compacts the Auditor's session when a phase closes.
|
|
54
55
|
|
|
55
56
|
---
|
|
56
57
|
|
|
@@ -84,6 +85,8 @@ The Auditor never takes the Executor's word for a result: it re-runs every verif
|
|
|
84
85
|
|
|
85
86
|
One person can run this workflow alone by switching hats between two isolated agent sessions. Keep them isolated, so the Auditor is never checking its own work.
|
|
86
87
|
|
|
88
|
+
The owner picks one of two modes at the start of a run. In **Guided** mode the owner pastes each handoff into a fresh Executor session and sees every verdict. In **Autonomous** mode the Auditor launches Executors as subagents with an explicit model per task, answers their `BLOCKED` questions with a decision entry in the log, and reports once per closed phase, interrupting the owner only for a numbered critical-risk list ([`references/autonomous-mode.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/references/autonomous-mode.md)).
|
|
89
|
+
|
|
87
90
|
---
|
|
88
91
|
|
|
89
92
|
## The Four-Document Paper Trail
|
|
@@ -176,16 +179,31 @@ The `sed -i ''` form above is BSD/macOS sed; on GNU/Linux use `sed -i 's/.../...
|
|
|
176
179
|
|
|
177
180
|
A failure only proves something if it is the failure you meant. A syntax error, a missing import or a mistyped test command also makes the test exit non-zero. `--expect` takes a regular expression that the failing run's output must match, and the control fails if it does not. Without `--expect`, output that looks like a syntax, import, collection or command-not-found error is flagged with a `WARNING` next to the `OK`, and you need to read the transcript to confirm the reason.
|
|
178
181
|
|
|
179
|
-
### Optional:
|
|
182
|
+
### 6. Optional: `aeprogress` for Claude Code
|
|
183
|
+
|
|
184
|
+
`aeprogress` is a Claude Code mod for runs where the Auditor launches Executors as subagents or as workers of a harness such as Orca. The protocol does not depend on it, and it reads the run only through `aepkit status --json`.
|
|
185
|
+
|
|
186
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/pane.png" alt="The aeprogress pane: 43.3% overall, a bar per phase, the active phase P2 open with its task chips, P2-T3 in progress on a subagent, P2-T4 awaiting audit and P2-T2 conditional" width="420">
|
|
187
|
+
|
|
188
|
+
It does three things:
|
|
189
|
+
|
|
190
|
+
1. **A pane beside the chat** with the overall percentage, one bar per phase (weighted by an optional `Weight` column in the plan), who is working on which task ID (Claude Code subagents, Orca workers, or any harness through a command of your own), what awaits audit, what needs attention, and the machine's load. It refreshes after each turn, and every 20 seconds while it is open.
|
|
191
|
+
2. **A launch limit.** While a run is found, it refuses to launch another Executor past 2 live workers, 1 building worker, or a machine more than 75% busy for a build, and the refusal says which limit was hit. A handoff that builds nothing carries the line `Load: docs-only` ([`references/handoffs.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/references/handoffs.md)) and only answers to the worker count. On macOS it also recommends excluding the project from Spotlight when indexing keeps the machine busy.
|
|
192
|
+
|
|
193
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/launch-limit.png" alt="A second building Executor refused: 1 building worker is live (limit 1)">
|
|
194
|
+
|
|
195
|
+
3. **Compaction when a phase closes.** In Autonomous mode, once a gate is `APPROVED` and the Auditor brief is up to date on disk, the Auditor calls the mod's `compact_and_resume` tool. After its turn, a 40-second countdown lets you cancel; then the session is compacted and the Auditor resumes from its own message. Typing a prompt, pressing Esc or running `/compact` yourself takes over.
|
|
196
|
+
|
|
197
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/compact-countdown.png" alt="The countdown band: Compacting in 33s, with Cancel and Compact now">
|
|
180
198
|
|
|
181
|
-
|
|
199
|
+
Install it at the prompt of a Claude Code terminal session, then open it:
|
|
182
200
|
|
|
183
201
|
```
|
|
184
202
|
/plugin install aeprogress --marketplace tBeltty/auditor-executor-protocol
|
|
185
203
|
/aeprogress docs/<task-name>
|
|
186
204
|
```
|
|
187
205
|
|
|
188
|
-
It works in the terminal and in the desktop app's local sessions.
|
|
206
|
+
It works in the terminal and in the desktop app's local sessions (in the app: **+** next to the prompt, **Plugins**, **Add marketplace**). Every limit and feature is an option in `/config`. It needs Claude Code 2.1.287 or later and sends no data about you anywhere (its one network request, a daily version check, can be turned off); its README lists every process it starts and everything it can refuse. To get new versions on their own, turn on auto-update once: `/plugin`, **Marketplaces**, `auditor-executor-protocol`, **Enable auto-update**. Setup, options and how each number is computed: [integrations/claude-code/aeprogress](https://github.com/tBeltty/auditor-executor-protocol/tree/main/integrations/claude-code/aeprogress).
|
|
189
207
|
|
|
190
208
|
---
|
|
191
209
|
|
|
@@ -6,13 +6,14 @@
|
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
[](https://github.com/astral-sh/ruff)
|
|
8
8
|
[](https://mypy-lang.org/)
|
|
9
|
+
[](https://doi.org/10.5281/zenodo.23633244)
|
|
9
10
|
[](https://github.com/tBeltty/auditor-executor-protocol/blob/main/pyproject.toml)
|
|
10
11
|
|
|
11
12
|
A two-role protocol for running multi-phase work through AI agents without the plan drifting into open-ended discussion and without "all tests pass" masquerading as verification.
|
|
12
13
|
|
|
13
14
|
The **Auditor** defines what "done" means and proves it independently. The **Executor** implements one numbered task at a time and logs command output. Neither role crosses into the other.
|
|
14
15
|
|
|
15
|
-
[`SKILL.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/SKILL.md) specifies the protocol core; [`references/`](https://github.com/tBeltty/auditor-executor-protocol/tree/main/references) holds the parts an agent loads only when it reaches that step (task and gate writing, handoff templates, Autonomous mode, failure modes and a worked example). `aepkit` is a zero-dependency Python CLI that automates scaffolding, drift linting, negative controls, status tallies, and installing the skill into your agent.
|
|
16
|
+
[`SKILL.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/SKILL.md) specifies the protocol core; [`references/`](https://github.com/tBeltty/auditor-executor-protocol/tree/main/references) holds the parts an agent loads only when it reaches that step (task and gate writing, handoff templates, Autonomous mode, failure modes and a worked example). `aepkit` is a zero-dependency Python CLI that automates scaffolding, drift linting, negative controls, status tallies, and installing the skill into your agent. On Claude Code, the optional [`aeprogress`](#6-optional-aeprogress-for-claude-code) mod shows a run's progress beside the chat, holds back Executor launches when the machine is busy, and compacts the Auditor's session when a phase closes.
|
|
16
17
|
|
|
17
18
|
---
|
|
18
19
|
|
|
@@ -46,6 +47,8 @@ The Auditor never takes the Executor's word for a result: it re-runs every verif
|
|
|
46
47
|
|
|
47
48
|
One person can run this workflow alone by switching hats between two isolated agent sessions. Keep them isolated, so the Auditor is never checking its own work.
|
|
48
49
|
|
|
50
|
+
The owner picks one of two modes at the start of a run. In **Guided** mode the owner pastes each handoff into a fresh Executor session and sees every verdict. In **Autonomous** mode the Auditor launches Executors as subagents with an explicit model per task, answers their `BLOCKED` questions with a decision entry in the log, and reports once per closed phase, interrupting the owner only for a numbered critical-risk list ([`references/autonomous-mode.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/references/autonomous-mode.md)).
|
|
51
|
+
|
|
49
52
|
---
|
|
50
53
|
|
|
51
54
|
## The Four-Document Paper Trail
|
|
@@ -138,16 +141,31 @@ The `sed -i ''` form above is BSD/macOS sed; on GNU/Linux use `sed -i 's/.../...
|
|
|
138
141
|
|
|
139
142
|
A failure only proves something if it is the failure you meant. A syntax error, a missing import or a mistyped test command also makes the test exit non-zero. `--expect` takes a regular expression that the failing run's output must match, and the control fails if it does not. Without `--expect`, output that looks like a syntax, import, collection or command-not-found error is flagged with a `WARNING` next to the `OK`, and you need to read the transcript to confirm the reason.
|
|
140
143
|
|
|
141
|
-
### Optional:
|
|
144
|
+
### 6. Optional: `aeprogress` for Claude Code
|
|
145
|
+
|
|
146
|
+
`aeprogress` is a Claude Code mod for runs where the Auditor launches Executors as subagents or as workers of a harness such as Orca. The protocol does not depend on it, and it reads the run only through `aepkit status --json`.
|
|
147
|
+
|
|
148
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/pane.png" alt="The aeprogress pane: 43.3% overall, a bar per phase, the active phase P2 open with its task chips, P2-T3 in progress on a subagent, P2-T4 awaiting audit and P2-T2 conditional" width="420">
|
|
149
|
+
|
|
150
|
+
It does three things:
|
|
151
|
+
|
|
152
|
+
1. **A pane beside the chat** with the overall percentage, one bar per phase (weighted by an optional `Weight` column in the plan), who is working on which task ID (Claude Code subagents, Orca workers, or any harness through a command of your own), what awaits audit, what needs attention, and the machine's load. It refreshes after each turn, and every 20 seconds while it is open.
|
|
153
|
+
2. **A launch limit.** While a run is found, it refuses to launch another Executor past 2 live workers, 1 building worker, or a machine more than 75% busy for a build, and the refusal says which limit was hit. A handoff that builds nothing carries the line `Load: docs-only` ([`references/handoffs.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/references/handoffs.md)) and only answers to the worker count. On macOS it also recommends excluding the project from Spotlight when indexing keeps the machine busy.
|
|
154
|
+
|
|
155
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/launch-limit.png" alt="A second building Executor refused: 1 building worker is live (limit 1)">
|
|
156
|
+
|
|
157
|
+
3. **Compaction when a phase closes.** In Autonomous mode, once a gate is `APPROVED` and the Auditor brief is up to date on disk, the Auditor calls the mod's `compact_and_resume` tool. After its turn, a 40-second countdown lets you cancel; then the session is compacted and the Auditor resumes from its own message. Typing a prompt, pressing Esc or running `/compact` yourself takes over.
|
|
158
|
+
|
|
159
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/compact-countdown.png" alt="The countdown band: Compacting in 33s, with Cancel and Compact now">
|
|
142
160
|
|
|
143
|
-
|
|
161
|
+
Install it at the prompt of a Claude Code terminal session, then open it:
|
|
144
162
|
|
|
145
163
|
```
|
|
146
164
|
/plugin install aeprogress --marketplace tBeltty/auditor-executor-protocol
|
|
147
165
|
/aeprogress docs/<task-name>
|
|
148
166
|
```
|
|
149
167
|
|
|
150
|
-
It works in the terminal and in the desktop app's local sessions.
|
|
168
|
+
It works in the terminal and in the desktop app's local sessions (in the app: **+** next to the prompt, **Plugins**, **Add marketplace**). Every limit and feature is an option in `/config`. It needs Claude Code 2.1.287 or later and sends no data about you anywhere (its one network request, a daily version check, can be turned off); its README lists every process it starts and everything it can refuse. To get new versions on their own, turn on auto-update once: `/plugin`, **Marketplaces**, `auditor-executor-protocol`, **Enable auto-update**. Setup, options and how each number is computed: [integrations/claude-code/aeprogress](https://github.com/tBeltty/auditor-executor-protocol/tree/main/integrations/claude-code/aeprogress).
|
|
151
169
|
|
|
152
170
|
---
|
|
153
171
|
|
|
@@ -104,6 +104,16 @@ Do not end a turn between a verdict and the next launch unless something on the
|
|
|
104
104
|
critical-risk list is open. A run that stops to report an `APPROVED` and wait is Guided
|
|
105
105
|
mode by accident.
|
|
106
106
|
|
|
107
|
+
### Tool versions at the start of a run
|
|
108
|
+
|
|
109
|
+
Before launching the first task, the Auditor updates the tools the run depends on (`aepkit`
|
|
110
|
+
with `pipx upgrade aepkit`; any plugin or harness the run uses, such as the optional
|
|
111
|
+
`aeprogress` mod with `claude plugin update aeprogress@auditor-executor-protocol`) and
|
|
112
|
+
records the versions it ends up on as a governance decision in the plan of record. A run
|
|
113
|
+
then uses one set of tools from its first task to its last, and whoever reads the log
|
|
114
|
+
later knows which `aepkit lint` rules and which launch limits judged it. Updating mid-run
|
|
115
|
+
is a decision like any other: record it, with the reason.
|
|
116
|
+
|
|
107
117
|
### Starting the Auditor (the Auditor brief)
|
|
108
118
|
|
|
109
119
|
An autonomous run is started by giving a fresh Auditor session a brief, the same way an
|
|
@@ -132,6 +142,9 @@ DOCUMENTS: <plan of record, guide, log — what each contains and who writes whe
|
|
|
132
142
|
|
|
133
143
|
STATE: <local/pushed commits, clean tree or not, first task and its model>.
|
|
134
144
|
|
|
145
|
+
TOOLS: <the tools the run depends on and the versions to update to and record before task 1
|
|
146
|
+
(aepkit; any plugin or harness), per "Tool versions at the start of a run">.
|
|
147
|
+
|
|
135
148
|
GOAL (non-negotiable): <the owner's objective, in their own words>. Splitting into
|
|
136
149
|
phases, yes; shrinking it, no. RUN COMPLETE only with <final gate> APPROVED.
|
|
137
150
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.7.4"
|
|
@@ -104,6 +104,16 @@ Do not end a turn between a verdict and the next launch unless something on the
|
|
|
104
104
|
critical-risk list is open. A run that stops to report an `APPROVED` and wait is Guided
|
|
105
105
|
mode by accident.
|
|
106
106
|
|
|
107
|
+
### Tool versions at the start of a run
|
|
108
|
+
|
|
109
|
+
Before launching the first task, the Auditor updates the tools the run depends on (`aepkit`
|
|
110
|
+
with `pipx upgrade aepkit`; any plugin or harness the run uses, such as the optional
|
|
111
|
+
`aeprogress` mod with `claude plugin update aeprogress@auditor-executor-protocol`) and
|
|
112
|
+
records the versions it ends up on as a governance decision in the plan of record. A run
|
|
113
|
+
then uses one set of tools from its first task to its last, and whoever reads the log
|
|
114
|
+
later knows which `aepkit lint` rules and which launch limits judged it. Updating mid-run
|
|
115
|
+
is a decision like any other: record it, with the reason.
|
|
116
|
+
|
|
107
117
|
### Starting the Auditor (the Auditor brief)
|
|
108
118
|
|
|
109
119
|
An autonomous run is started by giving a fresh Auditor session a brief, the same way an
|
|
@@ -132,6 +142,9 @@ DOCUMENTS: <plan of record, guide, log — what each contains and who writes whe
|
|
|
132
142
|
|
|
133
143
|
STATE: <local/pushed commits, clean tree or not, first task and its model>.
|
|
134
144
|
|
|
145
|
+
TOOLS: <the tools the run depends on and the versions to update to and record before task 1
|
|
146
|
+
(aepkit; any plugin or harness), per "Tool versions at the start of a run">.
|
|
147
|
+
|
|
135
148
|
GOAL (non-negotiable): <the owner's objective, in their own words>. Splitting into
|
|
136
149
|
phases, yes; shrinking it, no. RUN COMPLETE only with <final gate> APPROVED.
|
|
137
150
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aepkit
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4
|
|
4
4
|
Summary: Mechanical support for the Auditor/Executor protocol: scaffold, lint, and negative-control the document set for a multi-phase, multi-agent execution.
|
|
5
5
|
Author-email: tBeltty <jhonatan@tbelt.online>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -30,8 +30,8 @@ Requires-Dist: pytest-cov>=4.0; extra == "test"
|
|
|
30
30
|
Provides-Extra: dev
|
|
31
31
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
32
32
|
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
33
|
-
Requires-Dist: ruff==0.
|
|
34
|
-
Requires-Dist: mypy==2.4.
|
|
33
|
+
Requires-Dist: ruff==0.17.3; extra == "dev"
|
|
34
|
+
Requires-Dist: mypy==2.4.1; extra == "dev"
|
|
35
35
|
Requires-Dist: build==1.6.1; extra == "dev"
|
|
36
36
|
Requires-Dist: twine==7.0.0; extra == "dev"
|
|
37
37
|
Dynamic: license-file
|
|
@@ -44,13 +44,14 @@ Dynamic: license-file
|
|
|
44
44
|
[](https://opensource.org/licenses/MIT)
|
|
45
45
|
[](https://github.com/astral-sh/ruff)
|
|
46
46
|
[](https://mypy-lang.org/)
|
|
47
|
+
[](https://doi.org/10.5281/zenodo.23633244)
|
|
47
48
|
[](https://github.com/tBeltty/auditor-executor-protocol/blob/main/pyproject.toml)
|
|
48
49
|
|
|
49
50
|
A two-role protocol for running multi-phase work through AI agents without the plan drifting into open-ended discussion and without "all tests pass" masquerading as verification.
|
|
50
51
|
|
|
51
52
|
The **Auditor** defines what "done" means and proves it independently. The **Executor** implements one numbered task at a time and logs command output. Neither role crosses into the other.
|
|
52
53
|
|
|
53
|
-
[`SKILL.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/SKILL.md) specifies the protocol core; [`references/`](https://github.com/tBeltty/auditor-executor-protocol/tree/main/references) holds the parts an agent loads only when it reaches that step (task and gate writing, handoff templates, Autonomous mode, failure modes and a worked example). `aepkit` is a zero-dependency Python CLI that automates scaffolding, drift linting, negative controls, status tallies, and installing the skill into your agent.
|
|
54
|
+
[`SKILL.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/SKILL.md) specifies the protocol core; [`references/`](https://github.com/tBeltty/auditor-executor-protocol/tree/main/references) holds the parts an agent loads only when it reaches that step (task and gate writing, handoff templates, Autonomous mode, failure modes and a worked example). `aepkit` is a zero-dependency Python CLI that automates scaffolding, drift linting, negative controls, status tallies, and installing the skill into your agent. On Claude Code, the optional [`aeprogress`](#6-optional-aeprogress-for-claude-code) mod shows a run's progress beside the chat, holds back Executor launches when the machine is busy, and compacts the Auditor's session when a phase closes.
|
|
54
55
|
|
|
55
56
|
---
|
|
56
57
|
|
|
@@ -84,6 +85,8 @@ The Auditor never takes the Executor's word for a result: it re-runs every verif
|
|
|
84
85
|
|
|
85
86
|
One person can run this workflow alone by switching hats between two isolated agent sessions. Keep them isolated, so the Auditor is never checking its own work.
|
|
86
87
|
|
|
88
|
+
The owner picks one of two modes at the start of a run. In **Guided** mode the owner pastes each handoff into a fresh Executor session and sees every verdict. In **Autonomous** mode the Auditor launches Executors as subagents with an explicit model per task, answers their `BLOCKED` questions with a decision entry in the log, and reports once per closed phase, interrupting the owner only for a numbered critical-risk list ([`references/autonomous-mode.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/references/autonomous-mode.md)).
|
|
89
|
+
|
|
87
90
|
---
|
|
88
91
|
|
|
89
92
|
## The Four-Document Paper Trail
|
|
@@ -176,16 +179,31 @@ The `sed -i ''` form above is BSD/macOS sed; on GNU/Linux use `sed -i 's/.../...
|
|
|
176
179
|
|
|
177
180
|
A failure only proves something if it is the failure you meant. A syntax error, a missing import or a mistyped test command also makes the test exit non-zero. `--expect` takes a regular expression that the failing run's output must match, and the control fails if it does not. Without `--expect`, output that looks like a syntax, import, collection or command-not-found error is flagged with a `WARNING` next to the `OK`, and you need to read the transcript to confirm the reason.
|
|
178
181
|
|
|
179
|
-
### Optional:
|
|
182
|
+
### 6. Optional: `aeprogress` for Claude Code
|
|
183
|
+
|
|
184
|
+
`aeprogress` is a Claude Code mod for runs where the Auditor launches Executors as subagents or as workers of a harness such as Orca. The protocol does not depend on it, and it reads the run only through `aepkit status --json`.
|
|
185
|
+
|
|
186
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/pane.png" alt="The aeprogress pane: 43.3% overall, a bar per phase, the active phase P2 open with its task chips, P2-T3 in progress on a subagent, P2-T4 awaiting audit and P2-T2 conditional" width="420">
|
|
187
|
+
|
|
188
|
+
It does three things:
|
|
189
|
+
|
|
190
|
+
1. **A pane beside the chat** with the overall percentage, one bar per phase (weighted by an optional `Weight` column in the plan), who is working on which task ID (Claude Code subagents, Orca workers, or any harness through a command of your own), what awaits audit, what needs attention, and the machine's load. It refreshes after each turn, and every 20 seconds while it is open.
|
|
191
|
+
2. **A launch limit.** While a run is found, it refuses to launch another Executor past 2 live workers, 1 building worker, or a machine more than 75% busy for a build, and the refusal says which limit was hit. A handoff that builds nothing carries the line `Load: docs-only` ([`references/handoffs.md`](https://github.com/tBeltty/auditor-executor-protocol/blob/main/references/handoffs.md)) and only answers to the worker count. On macOS it also recommends excluding the project from Spotlight when indexing keeps the machine busy.
|
|
192
|
+
|
|
193
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/launch-limit.png" alt="A second building Executor refused: 1 building worker is live (limit 1)">
|
|
194
|
+
|
|
195
|
+
3. **Compaction when a phase closes.** In Autonomous mode, once a gate is `APPROVED` and the Auditor brief is up to date on disk, the Auditor calls the mod's `compact_and_resume` tool. After its turn, a 40-second countdown lets you cancel; then the session is compacted and the Auditor resumes from its own message. Typing a prompt, pressing Esc or running `/compact` yourself takes over.
|
|
196
|
+
|
|
197
|
+
<img src="https://raw.githubusercontent.com/tBeltty/auditor-executor-protocol/main/integrations/claude-code/aeprogress/assets/compact-countdown.png" alt="The countdown band: Compacting in 33s, with Cancel and Compact now">
|
|
180
198
|
|
|
181
|
-
|
|
199
|
+
Install it at the prompt of a Claude Code terminal session, then open it:
|
|
182
200
|
|
|
183
201
|
```
|
|
184
202
|
/plugin install aeprogress --marketplace tBeltty/auditor-executor-protocol
|
|
185
203
|
/aeprogress docs/<task-name>
|
|
186
204
|
```
|
|
187
205
|
|
|
188
|
-
It works in the terminal and in the desktop app's local sessions.
|
|
206
|
+
It works in the terminal and in the desktop app's local sessions (in the app: **+** next to the prompt, **Plugins**, **Add marketplace**). Every limit and feature is an option in `/config`. It needs Claude Code 2.1.287 or later and sends no data about you anywhere (its one network request, a daily version check, can be turned off); its README lists every process it starts and everything it can refuse. To get new versions on their own, turn on auto-update once: `/plugin`, **Marketplaces**, `auditor-executor-protocol`, **Enable auto-update**. Setup, options and how each number is computed: [integrations/claude-code/aeprogress](https://github.com/tBeltty/auditor-executor-protocol/tree/main/integrations/claude-code/aeprogress).
|
|
189
207
|
|
|
190
208
|
---
|
|
191
209
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.7.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|