pi-goal-list-loop-audit 0.29.6 → 0.29.7
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.
- package/README.md +38 -7
- package/docs/DESIGN.md +46 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ Five top-level commands — `/goal`, `/list`, `/loop`, `/glla`, `/review`:
|
|
|
42
42
|
/goal audit # run the isolated auditor on the current goal now — no agent turn (v0.28.27)
|
|
43
43
|
/goal tweak "<new objective>" # edit in place (Confirm dialog)
|
|
44
44
|
/goal archive # archived goals, newest first
|
|
45
|
-
/glla # settings UI table · /glla key=value · /glla stats · /glla audits [N|full] · /glla postaudit · /glla autoaccept=on
|
|
45
|
+
/glla # settings UI table · /glla key=value · /glla stats · /glla audits [N|full] · /glla postaudit · /glla wipe (nuclear reset, Confirm-gated) · /glla autoaccept=on
|
|
46
46
|
/list fix the login bug, add dark mode, write docs # dump it — the agent shapes it into items, one Confirm
|
|
47
47
|
/list plan.md # file detected → bulk import, one Confirm (sisyphus/Ralph style)
|
|
48
48
|
/list <paste a checklist> # multi-line paste → same batch flow
|
|
@@ -194,7 +194,29 @@ running, you can see it — no command needed.
|
|
|
194
194
|
A 15s heartbeat detects the precise stall condition — active goal/loop + idle
|
|
195
195
|
session + nothing scheduled + quiet for 60s — and re-fires the continuation
|
|
196
196
|
itself. Three consecutive zero-tool turns pause the goal / stop the loop.
|
|
197
|
-
No external watchdog plugin needed.
|
|
197
|
+
No external watchdog plugin needed. It also recovers **stranded audits**
|
|
198
|
+
(v0.29.1): a goal stuck in `auditing` with no auditor session alive re-runs
|
|
199
|
+
the stored claim after 90s instead of black-holing. Storm protection: the
|
|
200
|
+
send→pause→notify path rearms once per cycle and loud-stops after a 6-error
|
|
201
|
+
brake streak, so a broken provider can't spin forever.
|
|
202
|
+
|
|
203
|
+
**User aborts mean STOP** (v0.29.4): Esc-aborting a turn stands the chain
|
|
204
|
+
down with a named notify (`/goal resume` to continue) — it does NOT count
|
|
205
|
+
toward stall warnings, does NOT auto re-fire, and the stand-down survives
|
|
206
|
+
the heartbeat (v0.29.5). Five consecutive aborts still pause loudly as a
|
|
207
|
+
backstop. A queued steer interrupt (`length`/`toolResult` races) is not an
|
|
208
|
+
abort and resumes normally.
|
|
209
|
+
|
|
210
|
+
## One active thing (auto-arbitrated)
|
|
211
|
+
|
|
212
|
+
At most one goal/list-item/loop owns the active slot — activation guards
|
|
213
|
+
refuse a second live thing in-session, and **session loads auto-arbitrate
|
|
214
|
+
dirty stacked state** (v0.29.6): if a pre-guard project persisted a live
|
|
215
|
+
loop AND a live goal, the one with the most recent activity keeps the slot
|
|
216
|
+
and the loser is ARCHIVED (recoverable under `.pi-glla/archive/` / `/loop
|
|
217
|
+
status`), never silently wiped. No picker, no per-start arbitration chores.
|
|
218
|
+
The queued list is a backlog, not a second live thing — untouched.
|
|
219
|
+
`/glla wipe` remains the manual, Confirm-gated clean slate.
|
|
198
220
|
|
|
199
221
|
## Config (one global place, rarely opened)
|
|
200
222
|
|
|
@@ -206,17 +228,21 @@ No external watchdog plugin needed.
|
|
|
206
228
|
/glla tokenlimit=10000000 # per-goal token budget (default: off) → GLOBAL
|
|
207
229
|
/glla tokenlimit=0 # explicitly no cap (the default)
|
|
208
230
|
/glla wedgealert=30 # hung-command alert minutes (default: 30, 0 = off)
|
|
209
|
-
/glla autoresume=on # auto-resume goals/loops on ANY session start (default: load HELD, never auto-start — explicit /goal resume, /list resume, or /loop; off: never)
|
|
231
|
+
/glla autoresume=on # auto-resume goals/loops on ANY session start (default: load HELD, never auto-start — explicit /goal resume, /list resume, or /loop; off: never) — GLOBAL-only (v0.29.5): project-level keys are inert
|
|
210
232
|
/glla auditcap=5 # pause the goal after N consecutive auditor disapprovals (default 5, 0 = unlimited)
|
|
211
233
|
/glla aggressivemode=on # keep-going defaults: autoResume, cap 10, stuck 10, wedge off, quota auto-retry, cap→TODOs
|
|
212
234
|
/glla quotaretryminutes=60 # minutes before auto-retrying a quota-exhausted auditor
|
|
213
235
|
/glla stuckmax=10 # consecutive stuck interventions before a loop stops (default 5)
|
|
214
236
|
/glla auditfeedbackchars=800 # cap the executor-visible auditor report (default 0 = full report)
|
|
215
|
-
/glla autoaccept=on # drafts ACTIVATE without the Confirm
|
|
237
|
+
/glla autoaccept=on # drafts ACTIVATE without the Confirm dialog (v0.29.4: they start immediately — autoResume no longer gates drafts; every draft dialog also offers "always auto-accept" inline)
|
|
216
238
|
/glla project tokenlimit=500 # rare per-project override
|
|
217
239
|
```
|
|
218
240
|
|
|
219
|
-
Resolution per key: **project > global > defaults
|
|
241
|
+
Resolution per key: **project > global > defaults** — EXCEPT `autoResume`,
|
|
242
|
+
which is **global-only** (v0.29.5): per-project opt-ins from old versions
|
|
243
|
+
silently overrode the global hold at launch (the junk-runner incident), so
|
|
244
|
+
the launch-restore gate and the reviewer-enqueue gate read only the global
|
|
245
|
+
file now. The auditor defaults to
|
|
220
246
|
your pi session model. When the session provider is extension-registered the
|
|
221
247
|
auditor can't auth it — you're told once (info level) with the fix:
|
|
222
248
|
`/glla model=provider/id`, set once, rarely touched again. The plugin never
|
|
@@ -232,7 +258,12 @@ history and is available through `/goal status` regardless.
|
|
|
232
258
|
floor — every `propose_*` draft (goal, list batch, loop, task list)
|
|
233
259
|
activates the moment the agent proposes it, with a notification and a
|
|
234
260
|
`draft_autoaccepted` ledger entry (auto-accept is never silent). The seed
|
|
235
|
-
carries the intent.
|
|
261
|
+
carries the intent. Since v0.29.4 auto-accepted drafts **start immediately**
|
|
262
|
+
— the draft path is decoupled from `autoResume`, which gates ONLY
|
|
263
|
+
launch-time restore of persisted state ("load it but don't auto-start it").
|
|
264
|
+
For fully unattended rigs you typically want both on; for attended rigs,
|
|
265
|
+
`autoaccept=on` + `autoresume=off` is the sweet spot (new drafts go, old
|
|
266
|
+
state holds).
|
|
236
267
|
|
|
237
268
|
## Subagents
|
|
238
269
|
|
|
@@ -330,7 +361,7 @@ prompts/
|
|
|
330
361
|
goal-loop-forever-draft.md # /loop drafting prompt
|
|
331
362
|
scripts/
|
|
332
363
|
smoke.sh # live integration harness (tmux + real models)
|
|
333
|
-
tests/ #
|
|
364
|
+
tests/ # 613 tests across 58 files, no live pi required (mock-ctx harness drives the orchestrator)
|
|
334
365
|
docs/DESIGN.md # architectural decisions
|
|
335
366
|
PLAN.md # milestones, decisions, gates
|
|
336
367
|
```
|
package/docs/DESIGN.md
CHANGED
|
@@ -44,6 +44,52 @@ below; later releases append addenda rather than rewrite history.
|
|
|
44
44
|
- **`notify=<cmd>`**: fire-and-forget shell-out on goal complete / goal pause /
|
|
45
45
|
loop stop, message as `$1`. Settings parser is quote-aware.
|
|
46
46
|
|
|
47
|
+
## Addendum v0.5.0–v0.29.6 (current state — the long-session era)
|
|
48
|
+
|
|
49
|
+
The v0.4.0 addendum closed the scaffold era. v0.5.0 through v0.29.6 are 25+
|
|
50
|
+
releases of unattended-rig hardening; the full record is CHANGELOG.md. The
|
|
51
|
+
architectural decisions that changed the SHAPE of the system:
|
|
52
|
+
|
|
53
|
+
- **Self-watchdog is baked in** (v0.5.0): a 15s heartbeat owns liveness —
|
|
54
|
+
supervising + idle + nothing scheduled + 60s quiet → re-fire. External
|
|
55
|
+
liveness plugins are retired.
|
|
56
|
+
- **The restore gate** (v0.26.9 tri-state; hardened v0.28.30, v0.29.4): a
|
|
57
|
+
bare `pi` start HOLDS everything and paints it — nothing auto-starts from
|
|
58
|
+
persisted state. In-session reload/fork/compaction continues automatically.
|
|
59
|
+
`autoResume` (on → any session start resumes; off → never) is **global-only**
|
|
60
|
+
(v0.29.5) after a stale per-project opt-in silently overrode the global hold.
|
|
61
|
+
- **Drafts and restores are decoupled** (v0.29.4): `autoAcceptDrafts` is the
|
|
62
|
+
pre-consent for in-session drafts — they START immediately. `autoResume`
|
|
63
|
+
gates only launch-time restore. "The session auto-starts in some cases ok;
|
|
64
|
+
launching pi must not."
|
|
65
|
+
- **User aborts mean STOP** (v0.29.4/0.29.5): an aborted turn is exempt from
|
|
66
|
+
stall accounting, stands the chain down with no auto re-fire, and the
|
|
67
|
+
stand-down gates the heartbeat + post-compaction refires. The 5-abort loud
|
|
68
|
+
pause is the backstop.
|
|
69
|
+
- **One active thing, auto-arbitrated** (v0.28.21 guards; v0.29.6 load-time
|
|
70
|
+
arbitration): at most one live artifact. Dirty stacked states at load are
|
|
71
|
+
resolved deterministically — most recent activity keeps the slot, the loser
|
|
72
|
+
is archived (recoverable), no picker. `/glla wipe` (v0.28.31) is the manual,
|
|
73
|
+
Confirm-gated clean slate.
|
|
74
|
+
- **The completion lifecycle owns its pauses** (v0.29.1): storm/stall
|
|
75
|
+
escalation never pauses `auditing` goals; a stranded `auditing` state (no
|
|
76
|
+
live auditor, 90s stale) re-runs the stored claim; send/pause/notify storms
|
|
77
|
+
rearm once per cycle; the provider-error brake (v0.28.13) keeps cross-cycle
|
|
78
|
+
memory and parks after 6 consecutive errors.
|
|
79
|
+
- **The audit loop is the project reviewer** (v0.29.0): `/loop audit` runs
|
|
80
|
+
fresh audit passes every iteration, appends findings to
|
|
81
|
+
`.pi-glla/audit-loop/findings.md`, fixes the top open ones; the orchestrator
|
|
82
|
+
counts open boxes as the measure and the plateau stop ends it. The
|
|
83
|
+
reviewer's reflexive fire-audit-on-clean cascade is opt-in (it paid for
|
|
84
|
+
verification twice and was hydra fuel).
|
|
85
|
+
- **Git discipline is prompt-law** (v0.29.2): continuation/draft prompts
|
|
86
|
+
forbid inventing git identities or branches (field incidents: agents
|
|
87
|
+
committing as `phase-e-agent <phase-e@local>`).
|
|
88
|
+
- **Reviewer = strategist, not verifier** (v0.24.6–v0.29.0): the reviewer
|
|
89
|
+
scans sources and proposes list items through the standard drafting +
|
|
90
|
+
Confirm path; it never audits work — the isolated auditor is the only
|
|
91
|
+
verifier.
|
|
92
|
+
|
|
47
93
|
## Addendum v0.4.0 (completion)
|
|
48
94
|
|
|
49
95
|
- **Auditor compaction enabled** (flaw #3 — the last open one). Safety:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-goal-list-loop-audit",
|
|
3
|
-
"version": "0.29.
|
|
3
|
+
"version": "0.29.7",
|
|
4
4
|
"description": "Goal. Loop. Audit. Done. \u2014 a pi-coding-agent extension that supervises long-running work, with isolated auditor on each completion. Beat bamboozling by design: the auditor runs in a fresh session with no extensions, no skills, no editor \u2014 only the read tools needed to verify your goal.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "dracon",
|