pi-goal-list-loop-audit 0.38.32 → 0.38.33
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 +6 -0
- package/docs/INDEX.md +1 -1
- package/extensions/goal-loop-forever.ts +9 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.38.33 — findings.md indent convention normalized (2026-09-08)
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- Indented checkboxes now count and queue identically across all four findings.md readers (DECIDED 2026-09-08: normalize). The fan-out parser already queued indented boxes while `countOpenAuditFindings`, `topOpenAuditFinding`, and the `auditMeasureCmd` shell grep ignored them — metric, reprieve, and queue disagreed. All three counters accept optional leading indent, mirroring the fan-out shape; the reprieve strips the indent, never the text.
|
|
7
|
+
- Regression coverage in `tests/loop-forever.test.ts` (four-reader agreement + indent-strip pins; the exact-string measure pin and closed-FIX count updated); `tsc` clean.
|
|
8
|
+
|
|
3
9
|
## 0.38.32 — migrate-on-read backfill for pre-v0.38.21 audit histories (2026-09-08)
|
|
4
10
|
|
|
5
11
|
### 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.33 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
|
|
@@ -574,7 +574,7 @@ export function auditMeasureCmd(): string {
|
|
|
574
574
|
// no fix commit — counting them as "closed findings" inflated the
|
|
575
575
|
// monotonic metric without any fix landing and delayed the dry-well
|
|
576
576
|
// plateau stop.
|
|
577
|
-
return `c=$(grep -cE '
|
|
577
|
+
return `c=$(grep -cE '^[[:space:]]*- \\[[xX]\\] FIX' ${AUDIT_FINDINGS_REL} 2>/dev/null); echo \${c:-0}`;
|
|
578
578
|
}
|
|
579
579
|
|
|
580
580
|
/**
|
|
@@ -598,12 +598,15 @@ export const AUDIT_PLATEAU_MAX_REPRIEVES = 2;
|
|
|
598
598
|
|
|
599
599
|
/** v0.29.19: orchestrator-side count of OPEN audit findings — the honest
|
|
600
600
|
* "is the well dry" signal for audit-loop plateau decisions. The plateau
|
|
601
|
-
* stop means "the well is dry"; with K open boxes it is objectively not.
|
|
601
|
+
* stop means "the well is dry"; with K open boxes it is objectively not.
|
|
602
|
+
* v0.38.33 (DECIDED 2026-09-08 normalize): optional leading indent counts —
|
|
603
|
+
* the fan-out parser already queues indented boxes, so the metric must see
|
|
604
|
+
* them too. Mirrors the fan-out open-box shape. */
|
|
602
605
|
export function countOpenAuditFindings(cwd: string): number {
|
|
603
606
|
try {
|
|
604
607
|
const p = join(piGlaDir(cwd), "audit-loop/findings.md");
|
|
605
608
|
if (!existsSync(p)) return 0;
|
|
606
|
-
return readFileSync(p, "utf-8").split("\n").filter((l) =>
|
|
609
|
+
return readFileSync(p, "utf-8").split("\n").filter((l) => /^\s*-\s*\[[ \t]+\]/.test(l)).length;
|
|
607
610
|
} catch {
|
|
608
611
|
return 0;
|
|
609
612
|
}
|
|
@@ -615,10 +618,11 @@ export function topOpenAuditFinding(cwd: string): string | null {
|
|
|
615
618
|
try {
|
|
616
619
|
const p = join(piGlaDir(cwd), "audit-loop/findings.md");
|
|
617
620
|
if (!existsSync(p)) return null;
|
|
618
|
-
const line = readFileSync(p, "utf-8").split("\n").find((l) =>
|
|
621
|
+
const line = readFileSync(p, "utf-8").split("\n").find((l) => /^\s*-\s*\[[ \t]+\]/.test(l));
|
|
619
622
|
// v0.38.30 audit: strip with the same [ \t]+ class as the matcher
|
|
620
623
|
// (an aligned `- [ ]` box used to leak markup into the reprieve note).
|
|
621
|
-
|
|
624
|
+
// v0.38.33: strip the optional indent the matcher accepts, same shape.
|
|
625
|
+
return line ? line.replace(/^\s*-\s*\[[ \t]+\]\s*/, "").trim().slice(0, 120) : null;
|
|
622
626
|
} catch {
|
|
623
627
|
return null;
|
|
624
628
|
}
|
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.33",
|
|
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",
|