pi-goal-list-loop-audit 0.38.37 → 0.38.38
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 +12 -0
- package/docs/INDEX.md +1 -1
- package/extensions/goal-loop-display.ts +8 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.38.38 — elapsed-time duplication cut + PR #47 closed (2026-09-09)
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **Elapsed time in two places (field 20260909_002132):** the `setStatus` one-liner no longer carries `total …` on the idle/busy/working branches — other sessions' tab strips showed `glla: [WORKING] total …` under a card already reading it. The card head keeps the timer unconditionally; state + task/queue counts stay on the status line. (`Chrome Bridge`/`(indefinite)` framing is pi core, not GLLA — only our timer text was cut.)
|
|
8
|
+
- **PR #47 triage:** KV-cache checkpoint complaint verified real on main but the strip shape is unsafe as-is (post-compaction blindness, no compensating pointer) — replied per-piece, gave the contributor a merge-based re-sync command, closed without merging per the #45/#46 precedent (live `active.jsonl`, 39-behind divergence, bundled features). Per-task audits stay held pending cost review.
|
|
9
|
+
|
|
10
|
+
### Verification
|
|
11
|
+
|
|
12
|
+
- New pins: status-without-timer + card-keeps-timer; full `release:check` 0 failures; `tsc --noEmit` clean.
|
|
13
|
+
- Evidence: `audit/ELAPSED-DUPLICATION-PR47-2026-09-09.md`. No open PRs.
|
|
14
|
+
|
|
3
15
|
## 0.38.37 — bullets + deliberate non-do (2026-09-09)
|
|
4
16
|
|
|
5
17
|
### Fixed
|
package/docs/INDEX.md
CHANGED
|
@@ -18,7 +18,7 @@ For shipped docs, the relevant entry points are:
|
|
|
18
18
|
failback; v0.35.9 hardened cross-version npm tarball checks; v0.35.10
|
|
19
19
|
handles multi-entry npm dry-run reports; v0.35.11 accepts both npm report
|
|
20
20
|
shapes; v0.35.12 supports npm 12's keyed pack reports; v0.35.13 fixes stale-API recovery loops.
|
|
21
|
-
v0.35.14–v0.38.
|
|
21
|
+
v0.35.14–v0.38.38 continue through the supervisor freeze (`/glla pause`),
|
|
22
22
|
load hold, auditor picker parity, Windows launch fix, zombie-watchdog
|
|
23
23
|
subagent carve-out, due-wait backstop, the `/glla agents` visibility panel,
|
|
24
24
|
durable state-root selection, blank-until-resume auditor context, frozen
|
|
@@ -1323,8 +1323,11 @@ function buildStatusTextBase(state: State, audit?: AuditDisplayProgress | null,
|
|
|
1323
1323
|
// state + counts only. Freshness tails (`last host activity`,
|
|
1324
1324
|
// `last stream`) duplicated the card-head `stream {age}` readout —
|
|
1325
1325
|
// one surface owns liveness so the two can never disagree.
|
|
1326
|
+
// v0.38.38 (field 20260909_002132): the elapsed `total …` duplicated
|
|
1327
|
+
// the card head too (other sessions' tab strips showed
|
|
1328
|
+
// `glla: [WORKING] total …` under a card already reading it) — the
|
|
1329
|
+
// card owns the timer now; the status line keeps state + counts.
|
|
1326
1330
|
const idleDetails = [
|
|
1327
|
-
goalTotalText(g, now),
|
|
1328
1331
|
(state.list?.length ?? 0) > 0 ? `${state.list!.length} queued` : "",
|
|
1329
1332
|
].filter(Boolean);
|
|
1330
1333
|
return `glla: ${activityStateBadge("IDLE", theme, "warning")}${idleDetails.length > 0 ? ` ${idleDetails.join(" · ")}` : ""}${heldSuffix}`;
|
|
@@ -1335,7 +1338,6 @@ function buildStatusTextBase(state: State, audit?: AuditDisplayProgress | null,
|
|
|
1335
1338
|
// like progress. Queued work is neither idle nor currently executing.
|
|
1336
1339
|
if (activity === "busy") {
|
|
1337
1340
|
const busyDetails = [
|
|
1338
|
-
goalTotalText(g, now),
|
|
1339
1341
|
g.taskList ? `${countDone(g)}/${countTotal(g)} tasks` : "",
|
|
1340
1342
|
(state.list?.length ?? 0) > 0 ? `${state.list!.length} queued` : "",
|
|
1341
1343
|
].filter(Boolean);
|
|
@@ -1370,11 +1372,11 @@ function buildStatusTextBase(state: State, audit?: AuditDisplayProgress | null,
|
|
|
1370
1372
|
const recovery = state.mainModelRecovery;
|
|
1371
1373
|
const blockedByRecovery = queued && recovery && recovery.retryAt;
|
|
1372
1374
|
const recoverySuffix = blockedByRecovery ? ` · parked on provider recovery` : "";
|
|
1373
|
-
// Keep the screenshot-proven order: state,
|
|
1374
|
-
//
|
|
1375
|
-
//
|
|
1375
|
+
// Keep the screenshot-proven order: state, then queue/task context.
|
|
1376
|
+
// It scans like a compact instrument readout and remains useful when
|
|
1377
|
+
// the above-editor card is hidden or scrolled away. Elapsed `total …`
|
|
1378
|
+
// lives on the card head only (v0.38.38, field 20260909_002132).
|
|
1376
1379
|
const details = [
|
|
1377
|
-
goalTotalText(g, now),
|
|
1378
1380
|
g.taskList ? `${countDone(g)}/${countTotal(g)} tasks` : "",
|
|
1379
1381
|
// v0.34.124: the QUEUED "why" — an accepted dispatch that pi has not
|
|
1380
1382
|
// started. (The last-activity age that used to ride here moved to the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-goal-list-loop-audit",
|
|
3
|
-
"version": "0.38.
|
|
3
|
+
"version": "0.38.38",
|
|
4
4
|
"description": "Mission control for autonomous pi: interview-drafted goals, an audited task queue, and forever-loops (metric, spec, project-audit) that run for hours. A detached extension-less auditor process re-verifies every completion with raw evidence without holding the main pi turn; confirmed drafts, decision pauses and consent gates keep you in charge.",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"author": "dracon",
|