pi-goal-list-loop-audit 0.38.113 → 0.39.8

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/CHANGELOG.md CHANGED
@@ -2,6 +2,140 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.39.8 — consistent recovery and completed project UI (2026-10-05)
6
+
7
+ ### Preserve work across model changes
8
+
9
+ - Manually selecting a model during loop recovery leaves a visible, resumable
10
+ hold with its objective and iteration history retained. Cancellation no
11
+ longer leaves an invisible loop with an obsolete retry countdown.
12
+ - Existing loops stranded with a main-model recovery stop reason remain
13
+ visible and can resume through `/loop resume` or `/glla resume`.
14
+
15
+ ### Dismiss completed projects
16
+
17
+ - Completed projects disappear from the live widget and footer. Their
18
+ archived summary and `/loop status` remain available for inspection.
19
+ Unfinished queued work still renders its own UI.
20
+ - Loading terminal-only state no longer engages a work-resume hold or warns
21
+ that the completed project must resume. Legacy terminal-only load holds
22
+ clear on restore; explicit supervisor pauses remain intact.
23
+ - Empty or terminal-only blank sessions no longer advertise a work-resume
24
+ action while waiting for a transcript to load.
25
+
26
+ ### Make recovery commands consistent
27
+
28
+ - `/glla resume` recognises the same held-loop reasons as `/loop resume`,
29
+ including stalled project audits, manual pauses, auditor infrastructure
30
+ failures and project bounds. It delegates to the loop handler, preserving
31
+ the saved claim, blocker checks and branch restrictions.
32
+ - `/list resume` admits auditing list heads to the existing claim-recovery
33
+ path. `/goal pause`, `cancel` and `verify` preserve terminal goals.
34
+ - Manual verify and review refuse stale hosts. Decision pickers revalidate
35
+ both the session and the exact pending decision after selection, execute
36
+ list/loop control options through their real handlers, and leave work
37
+ paused when a content choice cannot be delivered.
38
+ - Goal pause, resume and manual verify stop when their state transaction
39
+ cannot be persisted, avoiding false success messages and dispatches.
40
+ - Explicitly stopped project audits say **Audit stopped** and stop advertising
41
+ an unavailable resume command.
42
+ - `/goal decide` is discoverable in completion; status points to `/list show`
43
+ for inspection. Resume descriptions and bound-stop hints match admission.
44
+ - A real command-to-worker regression resumes a stalled project audit and
45
+ verifies its retained claim through independent approval and archival.
46
+
47
+ ### Explain recovery and updates
48
+
49
+ - A new recovery guide explains resume command choice, audit progress versus
50
+ tool waits, manual model changes, completed UI and the opportunistic 200k
51
+ compaction target.
52
+ - README and installation instructions link to that guide. The docs index
53
+ leads with practical reading paths; unpublished milestones are consolidated
54
+ into this release entry.
55
+
56
+ ## 0.39.4 — project builder, audit recovery and opportunistic compaction (2026-10-05)
57
+
58
+ ### check compaction before idle loop dispatch
59
+
60
+ - Metric loops and project builder turns check the configured context-token
61
+ threshold at their actual idle dispatch boundary, matching goal/list sends.
62
+ Hosts without a settled-turn event can still attempt opportunistic compaction.
63
+ - A failed optional compaction resumes the same active loop through a fresh
64
+ owner context. Busy hosts, queued messages, paused work and audit dispatches
65
+ retain their guards; an attempted episode is not retried every turn.
66
+
67
+ ### preserve project audit boundaries and recovery evidence
68
+
69
+ - Startup and manual audit-job cleanup preserve jobs belonging to unresolved
70
+ goal or project increment claims, including held work. Once those claims
71
+ settle, ordinary age and worker-identity retention applies again.
72
+ - Health reports exclude claim-protected jobs from cleanup candidates. Cleanup
73
+ also refuses to delete jobs when the durable claim journal cannot be read.
74
+ - Settled-turn and idle-boundary transcript compaction wait while an exact
75
+ project increment audit dispatch owns the boundary.
76
+ - The project-audit heartbeat regression now exercises six actual heartbeat
77
+ ticks during a dispatched worker run, beyond the stall escalation threshold.
78
+
79
+ ### protect project increment audits from continuation stalls
80
+
81
+ - The main-session heartbeat no longer counts failed continuation attempts
82
+ while the exact project increment audit dispatch is running. Detached worker
83
+ timeout handling remains responsible for the audit. A saved claim alone, a
84
+ replacement claim, or a cancelled dispatch cannot suppress the heartbeat.
85
+ - Held project audits say **Audit held** and show the recorded stop reason
86
+ instead of displaying an ambiguous auditing phase with generic held text.
87
+
88
+ ### explain long audit tool waits
89
+
90
+ - Audit cards keep the current tool's ticking elapsed time and timeout visible
91
+ when it stops producing events. The card says it is waiting on the tool,
92
+ rather than turning the current call into a historical "last tool" row.
93
+ - Compact footers lead with the tool wait and its elapsed/timeout clock.
94
+ Waiting is distinct from fresh activity; cancelled, overdue and invalid
95
+ telemetry cannot claim a healthy wait. Timeout handling stays automatic.
96
+ - Automatic and manual audit progress use the worker's effective granted tool
97
+ timeout, matching the watchdog rather than showing only the base budget.
98
+
99
+ ### respec project builder
100
+
101
+ - `/loop respec [project direction]` drafts intended requirements for confirmation,
102
+ builds coherent increments, runs isolated audits and replans unfinished work.
103
+ Task claims and spec checkboxes cannot verify requirements. Later audits cover
104
+ previous capabilities as regressions; completion requires all adopted criteria.
105
+ - Scope refinements require confirmation, retain removal/task history and fence
106
+ old verdicts by revision. Blockers stay visible; all-blocked projects park,
107
+ and clearing a blocker preserves pause until explicit resume.
108
+ - Durable audit identities recover saved verdicts across restart, concurrent
109
+ wakes share one worker, pause/stop cancels audits, and archive failures retain
110
+ approved evidence for settlement retry. Completion archives the project before
111
+ exposing terminal state and announces waiting queue items.
112
+ - Project audit cards show live worker/retry state, model, elapsed time and last
113
+ activity. `/loop status` lists every requirement and its acceptance/evidence.
114
+ Verified project summaries use semantic colors and bold, archive before
115
+ delivery, and replay unacknowledged receipts on reload.
116
+ - Full audit fixes persistence rollback, supervisor freeze/retry gating,
117
+ rapid pause/resume rearming, blocked-project resume and continuous audit
118
+ visibility. Project receipts use the shared durable outbox across project
119
+ replacement; large summaries disclose omissions and retain full archives.
120
+ Generic loop recaps preserve verified project summaries.
121
+ - Project cards/status expose phase, increment, verified/remaining coverage,
122
+ blockers, evidence and next action using the existing semantic palette.
123
+ - Regression-shield rejection reports unfinished work and carries missing
124
+ contract evidence into replanning. Stale audit wakes are rejected before
125
+ model resolution or dispatch.
126
+
127
+ ### semantic summary colors
128
+
129
+ - Summary emphasis uses bold, including Markdown italic emphasis and quotes;
130
+ summaries do not render italics.
131
+ - Terminal completion summaries use the active theme’s semantic colors for
132
+ outcomes, remaining work, next actions and verification results. Unknown
133
+ verification stays neutral; reported or skipped checks use amber, and
134
+ failures use red without recoloring unrelated approval references.
135
+ - Styling is applied by a registered renderer. Saved summary Markdown,
136
+ archive content, receipt identity and headless output retain plain content;
137
+ continuation messages continue through Pi’s default renderer.
138
+
5
139
  ## 0.38.113 — make background audits clear (2026-10-03)
6
140
 
7
141
  - The live audit widget uses a compact card, keeping audit state, completed
package/INSTALL.md CHANGED
@@ -201,7 +201,10 @@ Useful controls:
201
201
  ```
202
202
 
203
203
  `/glla pause` freezes supervisor automation without killing active work.
204
- `/glla resume` releases it. A BUSY/no-stream Pi turn is aborted and parked by
204
+ `/glla resume` releases it and resumes eligible saved work, including held
205
+ projects through the same recovery path as `/loop resume`.
206
+ See the [recovery guide](docs/RECOVERY.md) for command choice, audit progress,
207
+ model changes, completed projects and compaction. A BUSY/no-stream Pi turn is aborted and parked by
205
208
  GLLA, then automatically re-dispatched within the **Zero-stream retries**
206
209
  budget (default 3, configurable from 0–10); exhaustion requires an explicit
207
210
  mode-correct resume. A user abort means stop; recovery is not silently
@@ -276,7 +279,7 @@ PI_CODING_AGENT_DIR=/tmp/bare-agent pi -p "say ok" --model "provider/model-id"
276
279
  ### Work restored but not running
277
280
 
278
281
  That is a consent/supervision state, not proof of loss. Inspect `/glla status`
279
- and use `/goal resume`, `/list resume`, `/list next`, or `/loop resume` as
282
+ and use `/glla resume`, or `/goal resume`, `/list resume`, `/list next`, or `/loop resume` as
280
283
  appropriate. Keep `Auto-resume` enabled only when automatic restart after
281
284
  session load is intentional.
282
285
 
package/README.md CHANGED
@@ -214,6 +214,8 @@ drafting flow. Ambiguous context is never queued automatically.
214
214
  /loop start "reduce flaky tests" measure="..." direction=min
215
215
  /loop start "keep improving the spec" measure=none max=20 cadence=900
216
216
  /loop audit # recurring project-audit cadence
217
+ /loop respec [project direction] # draft intended scope, build, audit and replan
218
+ /loop refine <suggestion> # steer the next round; scope changes need confirmation
217
219
  /loop status
218
220
  /loop stop
219
221
  ```
@@ -238,7 +240,42 @@ There are three loop styles:
238
240
  - **Project audit:** each iteration looks for the next important finding,
239
241
  appends evidence to the audit ledger, and works through the findings.
240
242
 
241
- If the work has a finish line, use `/goal`, not an endless loop.
243
+ Use `/goal` for one defined outcome, `/list` for a known task queue, and
244
+ `/loop respec` for developing a project through evolving build and audit batches.
245
+
246
+ `/loop respec` develops a project through substantial increments. It researches
247
+ the code and root `SPEC.md` (or `spec.md`), drafts intended capabilities with
248
+ observable acceptance criteria, and asks you to confirm that scope. Existing
249
+ behavior and desired behavior are kept distinct; missing features become work
250
+ to build. `## Rules` remains binding project guidance.
251
+
252
+ After confirmation, the builder plans a coherent batch, implements it, and
253
+ submits it to the isolated auditor. A task marked implemented is a claim;
254
+ only independent approval verifies its requirements. Failed checks and unfinished
255
+ requirements feed replanning. Each later audit also checks previously verified
256
+ capabilities for regressions. The project finishes only when every adopted
257
+ requirement is independently verified and the project archive is written.
258
+
259
+ The widget and `/loop status` show phase, increment, verified/remaining coverage
260
+ and blockers. During auditing, the card shows the actual worker state, model,
261
+ elapsed time and last activity, including retries; a restored claim without
262
+ live telemetry is shown as waiting for dispatch. `/loop status` lists every
263
+ requirement, its acceptance criteria, blocker and verification evidence.
264
+ Verified completion posts a semantic summary of shipped capabilities,
265
+ acceptance checks and evidence, saved in the journal and project archive;
266
+ unacknowledged delivery uses the durable outbox and retries on reload, even
267
+ after a new project replaces the old loop, without rerunning the audit. Large
268
+ summary cards name omitted requirements/reports; the archive and `/loop status`
269
+ retain the full criteria and evidence.
270
+ After completion, the project widget and GLLA footer disappear. The archive
271
+ and `/loop status` retain the result; other unfinished work remains visible.
272
+ `/loop pause` holds work, `/loop resume` continues saved state, and
273
+ `/loop stop` stops it without calling unfinished work complete. If all remaining
274
+ work is blocked, automation parks with reasons; clearing a blocker leaves work
275
+ paused until resume. `/loop refine <suggestion>` supplies direction for the next
276
+ round. Changes to adopted requirements show current/proposed acceptance criteria
277
+ and need your confirmation. Text after `respec` is project direction, not metric
278
+ or budget option syntax. Generic `/loop start` remains the metric/bounded path.
242
279
 
243
280
  ## The autonomy model
244
281
 
@@ -420,7 +457,8 @@ proof of a quota or billing state.
420
457
  and re-dispatched within the configurable **Zero-stream retries** budget
421
458
  (default 3, range 0 to 10), then requires explicit resume;
422
459
  - `/goal resume`, `/list resume`, and `/loop resume` are explicit recovery
423
- paths;
460
+ paths; `/glla resume` is the broad recovery command and routes eligible held
461
+ projects through the same handler as `/loop resume`;
424
462
  - a user abort means stop, not “try again behind my back”;
425
463
  - a loaded objective can be displayed without injecting stale auditor context
426
464
  until continuation consent exists;
@@ -433,6 +471,10 @@ Use `/glla pause` to freeze supervisor automation without killing active work,
433
471
  `/glla resume` to release it, `/glla bug [message]` to capture failure context to `bugs/` without touching durable goal state, and `/glla status` or `/goal status` to inspect
434
472
  what happened.
435
473
 
474
+ See the [recovery guide](docs/RECOVERY.md) for the resume command table,
475
+ audit progress indicators, model changes, completed projects and compaction
476
+ above the default 200k target.
477
+
436
478
  ### Settings worth knowing
437
479
 
438
480
  Open `/glla` for the settings table. The most important choices are:
package/docs/INDEX.md CHANGED
@@ -2,58 +2,19 @@
2
2
 
3
3
  Ordered by reading path, not alphabetically.
4
4
 
5
- ## Active focus (recent work, durable artifacts)
6
-
7
- Policy contracts and recent changes live in the `audit/` directory of the
8
- **repository checkout**; that directory is not shipped in the npm tarball
9
- (see "Repository-only material" below). The shipped entry points are:
10
-
11
- - `../CHANGELOG.md`: user-facing changelog; an `Unreleased` section may lead
12
- the file, followed by the current released version. v0.35.5 adopted the six-label completion
13
- recap; v0.35.6 added typed-boundary regression pins; v0.35.7 added
14
- deterministic fast-fail pre-audits, zero-pause autonomous execution, and
15
- task milestone gating; v0.35.8 added main-model preferred-primary
16
- failback; v0.35.9 hardened cross-version npm tarball checks; v0.35.10
17
- handles multi-entry npm dry-run reports; v0.35.11 accepts both npm report
18
- shapes; v0.35.12 supports npm 12's keyed pack reports; v0.35.13 fixes stale-API recovery loops.
19
- v0.35.14–v0.38.113 continue through the supervisor freeze (`/glla pause`),
20
- load hold, auditor picker parity, Windows launch fix, zombie-watchdog
21
- subagent carve-out, due-wait backstop, the `/glla agents` visibility panel,
22
- durable state-root selection, blank-until-resume auditor context, frozen
23
- subagent recovery, bounded repair/replan recovery, production RPC child
24
- stopping, mandatory hermetic auditor-extension validation, optional provider
25
- extensions, bounded zero-stream retry containment, crash-safe persistence,
26
- packed-artifact release verification, and the 2026-09-07 display/lifecycle/
27
- settings audit pass (abort-latch send guards, ownership compare-and-swap,
28
- auditor inherit/clear parity), the v0.38.25 post-objective summary
29
- (canonical approval render, persist + replay, audit-goal counts line), the v0.38.27 selective port of PRs #45/#46 (`/loop pause` soft-hold, widget subtask count), the v0.38.28 provenance-row closure fix, the v0.38.29 compact active-card recovery/judgment projection, and the v0.38.53 consent-safe `glla-delegate`
30
- skill/list-drafting release, and the v0.38.54 opt-in context-checkpoint
31
- projection (prompt-cache continuity, issue #53), and the v0.38.55 full-parity
32
- terminal card, unified auditor-retry envelope, and agent-side resume_goal;
33
- and the v0.38.106 audit repairs, versionless companion guidance and refreshed
34
- store icon; v0.38.107 recovers completed detached audit results before retry,
35
- preserves second-pass visibility, and fits the store thumbnail to its 8:5 card.
36
- v0.38.109 keeps work moving after optional compaction failures and fixes
37
- settings-editor ownership, narrow rendering, and stale approved-summary text.
38
- v0.38.112 audits the full terminal UI: responsive settings, search, focus
39
- continuity, picker height, scrollable draft review, and settlement wording.
40
- v0.38.111 applies project optional tool arguments with schema validation.
41
- v0.38.110 audits /glla menus and commands: model policy, narrow picker
42
- rendering, concurrent edits, mutation guards, and accurate option wording.
43
- See CHANGELOG.md for the full trail.
44
- - `../README.md`: what the plugin is, install, quickstart, and the
45
- architectural guarantee (drafting + confirm + detached auditor).
46
- - `../INSTALL.md`: source install / local development setup and the
47
- recommended companion plugins.
48
-
49
- ## Entry points
50
- - `../README.md`: what the plugin is, install, quickstart
51
- - `SETTINGS.md`: canonical settings reference (files, precedence, every key)
52
- - `../INSTALL.md`: source install / local development setup
53
- - `../skills/glla-delegate/SKILL.md`: normal-chat goal/list delegation and consent ladder
54
- - `../CHANGELOG.md`: user-facing changelog; the first versioned heading is
55
- the current released package version (use `/glla version` to compare with
56
- the registry); post-release work may appear in `Unreleased` above it.
5
+ ## Start here
6
+
7
+ - [README](../README.md): install, first goal, and choosing goal/list/loop work.
8
+ - [Recovery guide](RECOVERY.md): resume commands, audit progress, model changes,
9
+ completed projects and opportunistic compaction.
10
+ - [Settings](SETTINGS.md): settings files, precedence and every option.
11
+ - [Installation and updating](../INSTALL.md): npm/source setup, companions and
12
+ reloading existing sessions.
13
+ - [Delegation skill](../skills/glla-delegate/SKILL.md): normal-chat goal/list
14
+ delegation and confirmation.
15
+ - [Changelog](../CHANGELOG.md): changes shipped in each release. The history
16
+ spans v0.35.14–v0.39.8; `/glla version` shows the installed version and the
17
+ registry comparison command. A checkout can contain unpublished changes.
57
18
 
58
19
  ## Architecture
59
20
  - `ARCHITECTURE.md`: 20-minute newcomer overview (three loops, audit lifecycle, persistence)
@@ -0,0 +1,85 @@
1
+ # Recovering and inspecting work
2
+
3
+ Start with `/glla status`. For full saved details, use `/goal status`,
4
+ `/list show`, or `/loop status`, depending on the work surface.
5
+
6
+ ## Which resume command?
7
+
8
+ | Command | Use it for |
9
+ | --- | --- |
10
+ | `/glla resume` | Broad recovery: release supervisor/load holds, retry saved model recovery, or resume the current goal, list item or eligible held loop. If a paused goal and held loop both qualify, the UI asks which one. |
11
+ | `/goal resume` | Resume the current goal through its goal recovery path. |
12
+ | `/list resume` | Resume the current list item, including recovery of its pending completion audit. |
13
+ | `/loop resume` | Resume an eligible held metric loop or project builder, retaining its target, iteration and audit claim. |
14
+
15
+ For a held project, `/glla resume` delegates to the same loop recovery as
16
+ `/loop resume`. Both retain blocker and branch checks. Neither overrides an
17
+ explicit `/loop stop` or declares unfinished work complete. Resume feedback
18
+ explains when work cannot restart.
19
+
20
+ After loading a session, **Loaded without starting** means the saved work is
21
+ restored but automation awaits your decision. Load the intended conversation,
22
+ inspect its state, then resume. Enable **Auto-resume** in `/glla` only if you
23
+ want automation to restart after future loads.
24
+
25
+ ## Is an audit progressing?
26
+
27
+ Read the auditor rows, rather than the main session's spinner alone:
28
+
29
+ | Display | Meaning and next step |
30
+ | --- | --- |
31
+ | **Auditing**, recent activity | The detached auditor is producing events. Tool completions and changing evidence provide stronger progress evidence than elapsed time alone. A long duration alone does not establish a stall. |
32
+ | Waiting on a tool, elapsed/timeout | A tool is still running. Its ticking timer is a wait indicator; timeout handling remains automatic. |
33
+ | Waiting for dispatch | A saved claim exists, but no live worker activity is observed yet. Inspect status for restoration or recovery holds. |
34
+ | **Audit held** | Automation parked with a recorded reason. Inspect `/loop status`, resolve the cause, then resume through the command shown. |
35
+ | **Audit stopped** | The project was explicitly stopped. Resume is not offered for that stop. |
36
+ | Completion review disapproved | The auditor found an unmet contract. Read its required fixes; repair work can continue automatically. Rejection does not mean approval is stuck. |
37
+
38
+ If progress stops and the UI reports a wedged main session, follow its recovery
39
+ message: interrupt the stuck turn with Escape if needed, then resume. Use
40
+ `/glla bug <what you observed>` to capture GLLA diagnostics without changing
41
+ the saved objective. A process that has exited cannot reconcile an audit;
42
+ load/resume the original session before inspecting its pending claim again.
43
+
44
+ ## Changing models during recovery
45
+
46
+ Manually selecting a model cancels the current automatic main-model recovery
47
+ episode. A recovery-held loop keeps its objective and iteration history,
48
+ stays visible, and offers `/loop resume` or `/glla resume` to continue using
49
+ the selected model. Changing the model alone does not resume loop supervision.
50
+
51
+ If an older loaded extension still hides the objective or shows an obsolete
52
+ retry countdown, update GLLA and run `/reload`, inspect `/loop status`, then
53
+ resume. Saved legacy recovery holds are supported from 0.39.8 onward.
54
+
55
+ ## When a project completes
56
+
57
+ Project completion requires independent verification of every adopted
58
+ requirement and a written archive. After completion, the project widget and
59
+ GLLA footer disappear; other unfinished work can still show its own UI.
60
+ The semantic completion summary, `/loop status` and archive retain the
61
+ verification evidence. There is no resume action for an already completed
62
+ project. Start a new project when its intended scope changes.
63
+
64
+ ## Why context can exceed 200k
65
+
66
+ **200,000 tokens is the default opportunistic compaction target.** Configure
67
+ `compactionTokenThreshold` through the global settings; see [SETTINGS.md](SETTINGS.md).
68
+ GLLA checks at safe idle boundaries during supervised work. Active tools,
69
+ audits, queued messages and pauses can defer an attempt. An idle conversation
70
+ without active GLLA work does not start automation simply by crossing the target.
71
+
72
+ Pi's summarizer can fail, for example when its output hits the model's token
73
+ cap. GLLA records that failure and continues eligible work. It does not retry
74
+ the same failed compaction episode every turn. The episode rearms when a later
75
+ safe check observes context below half the configured target. Pi's `/compact`
76
+ is available for a manual attempt; summarizer success is not guaranteed by
77
+ GLLA's scheduling. Compare current context with the recorded attempt time
78
+ before treating an older high-token sample as the current transcript size.
79
+
80
+ ## Updating a running session
81
+
82
+ The npm package is also the Pi plugin; there is no separate Pi-only release.
83
+ Follow the [update instructions](../INSTALL.md), run `/reload` in existing
84
+ sessions, and use `/glla version` to check the version actually loaded.
85
+ Publishing a package does not replace code already loaded in a live session.
@@ -2,25 +2,25 @@
2
2
 
3
3
  Generated by `node scripts/generate-inventory.mjs`. Run with `--check` to detect drift. Counts describe files and literal registrations, not executed coverage.
4
4
 
5
- - Extension/script files: 91
6
- - Extension/script lines: 64275
7
- - Top-level test files: 342
5
+ - Extension/script files: 96
6
+ - Extension/script lines: 65038
7
+ - Top-level test files: 348
8
8
  - Ambient bridge names: 179 (audit baseline: 183)
9
9
  - Commands: `/glla`, `/goal`, `/list`, `/loop`, `/review`
10
- - Tools: `complete_goal`, `complete_task`, `list_activate`, `list_add`, `list_status`, `pause_goal`, `propose_goal_draft`, `propose_loop_draft`, `propose_loop_refine`, `propose_task_list`, `record_goal_judgment`, `resume_goal`, `update_task_batch`, `update_task_status`
10
+ - Tools: `audit_project_increment`, `block_project_requirement`, `claim_project_task`, `complete_goal`, `complete_task`, `list_activate`, `list_add`, `list_status`, `pause_goal`, `plan_project_increment`, `propose_goal_draft`, `propose_loop_draft`, `propose_loop_refine`, `propose_project_refinement`, `propose_project_requirements`, `propose_task_list`, `record_goal_judgment`, `resume_goal`, `unblock_project_requirement`, `update_task_batch`, `update_task_status`
11
11
 
12
12
  ## Largest modules
13
13
 
14
14
  | Module | Lines |
15
15
  |---|---:|
16
16
  | [extensions/goal-loop-core.ts](../extensions/goal-loop-core.ts) | 4966 |
17
- | [extensions/loops/goal-tools.ts](../extensions/loops/goal-tools.ts) | 4147 |
18
- | [extensions/loops/goal-activation.ts](../extensions/loops/goal-activation.ts) | 3738 |
19
- | [extensions/goal-commands.ts](../extensions/goal-commands.ts) | 3526 |
20
- | [extensions/goal-loop-display.ts](../extensions/goal-loop-display.ts) | 2685 |
21
- | [extensions/goal-loop-auditor-process.ts](../extensions/goal-loop-auditor-process.ts) | 2664 |
22
- | [extensions/loops/goal-auditor-hooks.ts](../extensions/loops/goal-auditor-hooks.ts) | 2655 |
23
- | [extensions/goal-heartbeat.ts](../extensions/goal-heartbeat.ts) | 2093 |
17
+ | [extensions/loops/goal-tools.ts](../extensions/loops/goal-tools.ts) | 4172 |
18
+ | [extensions/loops/goal-activation.ts](../extensions/loops/goal-activation.ts) | 3762 |
19
+ | [extensions/goal-commands.ts](../extensions/goal-commands.ts) | 3557 |
20
+ | [extensions/goal-loop-display.ts](../extensions/goal-loop-display.ts) | 2747 |
21
+ | [extensions/goal-loop-auditor-process.ts](../extensions/goal-loop-auditor-process.ts) | 2675 |
22
+ | [extensions/loops/goal-auditor-hooks.ts](../extensions/loops/goal-auditor-hooks.ts) | 2656 |
23
+ | [extensions/goal-heartbeat.ts](../extensions/goal-heartbeat.ts) | 2098 |
24
24
  | [extensions/loops/goal-session.ts](../extensions/loops/goal-session.ts) | 2062 |
25
25
  | [extensions/loops/goal-settings-ui.ts](../extensions/loops/goal-settings-ui.ts) | 2023 |
26
26
 
@@ -55,6 +55,11 @@ function durableStateSignature(state: State, liveSubagentCount: number): string
55
55
  iteration: state.loop.iteration,
56
56
  stopReason: state.loop.stopReason,
57
57
  bestValue: state.loop.bestValue,
58
+ builder: state.loop.builder ? {
59
+ phase: state.loop.builder.phase, revision: state.loop.builder.revision,
60
+ cycle: state.loop.builder.cycle, attemptId: state.loop.builder.audit?.attemptId,
61
+ requirements: state.loop.builder.requirements?.map(r => ({ id: r.id, status: r.status })),
62
+ } : undefined,
58
63
  }
59
64
  : null;
60
65
  const recovery = state.mainModelRecovery
@@ -85,6 +90,7 @@ export function activeSupervisionPlanes(state: State, liveSubagentCount = 0): Su
85
90
  if (goal.status === "auditing" || !!goal.pendingCompletion) planes.push("auditor");
86
91
  }
87
92
  if (state.loop?.active) planes.push("loop");
93
+ if (state.loop?.builder?.phase === "auditing" && state.loop.builder.audit && !planes.includes("auditor")) planes.push("auditor");
88
94
  if ((state.list?.length ?? 0) > 0) planes.push("queue");
89
95
  if (state.mainModelRecovery) planes.push("provider-recovery");
90
96
  if (liveSubagentCount > 0) planes.push("subagent");