Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .canopy/agent.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
],
"model": "claude-opus-4-8",
"source": "builtin",
"runtime": "pi",
"provider": "anthropic"
}
}

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions .seeds/issues.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -727,7 +727,7 @@
{"id":"warren-5755","title":"Fix unbounded /workspaces growth: bound the conversation card's ancestor height in src/ui/src/pages/conversation-detail/conversation-surface.tsx (min-h-[60vh] → a bounded height) so Chat.tsx's existing internal flex-1 min-h-0 overflow-y-auto engages and the transcript scrolls internally instead of growing the page; no new scroll container","status":"open","type":"bug","priority":2,"plan_step_index":1,"description":"<!-- seeds:plan-backref:start -->\nStep 2 of plan pl-2e59.\n\nParent seed: warren-faab — Cleanup batch → 0.9.1: logging hardening (pl-f700) + workspace chat fixes + leaked transcript removal + version bump\nPlan template: feature\nPlan approach: Walk the net-new tail serially — one seed per PR, each gated on the prior PR merging — mirroring the polish-pass convention and the Plot's stated constraint. Order: chat ordering/dedup fix → chat unbounded-growth fix → leaked-transcript…\n\nRun `sd plan show pl-2e59` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n<!-- seeds:plan-backref:end -->","createdAt":"2026-06-14T05:54:42.639Z","updatedAt":"2026-06-14T05:54:42.639Z","plan_id":"pl-2e59","blockedBy":["warren-f4b8"],"blocks":["warren-4c8d","warren-faab"]}
{"id":"warren-fade","title":"Bump version to 0.9.1: set package.json \"version\" and src/index.ts VERSION to 0.9.1 in sync (release workflow fails on drift) and add a matching CHANGELOG.md 0.9.1 section summarizing the logging hardening (pl-f700), workspace chat fixes, and leaked-transcript removal; land last, after every pl-f700 logging PR plus the chat + transcript PRs merge","status":"open","type":"task","priority":1,"plan_step_index":3,"description":"<!-- seeds:plan-backref:start -->\nStep 4 of plan pl-2e59.\n\nParent seed: warren-faab — Cleanup batch → 0.9.1: logging hardening (pl-f700) + workspace chat fixes + leaked transcript removal + version bump\nPlan template: feature\nPlan approach: Walk the net-new tail serially — one seed per PR, each gated on the prior PR merging — mirroring the polish-pass convention and the Plot's stated constraint. Order: chat ordering/dedup fix → chat unbounded-growth fix → leaked-transcript…\n\nRun `sd plan show pl-2e59` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n<!-- seeds:plan-backref:end -->","createdAt":"2026-06-14T05:54:42.639Z","updatedAt":"2026-06-14T05:54:42.639Z","plan_id":"pl-2e59","blockedBy":["warren-4c8d"],"blocks":["warren-faab"]}
{"id":"warren-d426","title":"gatewatch: 4 Article IX-protected merges in window lack human sign-off record","status":"open","type":"task","priority":1,"createdAt":"2026-06-14T10:15:36.224Z","updatedAt":"2026-06-14T10:15:36.224Z","description":"Constitution Article IX requires that any merged change to docs/CONSTITUTION.md, the gatewatch/ratchetwatch/tastewatch entries in .canopy/, or audit entries in .warren/triggers.yaml carry EXPLICIT human review, recorded in the seed tracker (the warren-ea20 ratification-record pattern: 'explicitly human-reviewed and human-merged by the operator... This seed is the sign-off evidence gatewatch's Article IX check looks for'). Four PRs merged in the last 36h touch protected paths and NONE has a corresponding ratification/sign-off seed. The auto-merge.yml Article IX gate (intact, untouched in window) would have BLOCKED auto-merge on these, implying a human merge occurred — but with no recorded ratification, gatewatch cannot verify the gate was honest. Per gatewatch mandate item 6, file priority 1.\n\nEVIDENCE (each modifies its own mandate / the constitution):\n- SHA 7d3cf95e (PR #364): docs/CONSTITUTION.md — adds the 'Audit Warden boundary' section (ingestion rule, digest cadence, meta-Plot, autonomy-promotion constraints). Closes warren-05ef (a WORK seed, not a sign-off record).\n- SHA e2d88409 (PR #362): .warren/triggers.yaml — adds the 'warden-digest' cron audit entry (0 5 * * 0). The constitution explicitly names warden-digest as Article IX-protected. Closes warren-4240 (work seed).\n- SHA f8ead2ff (PR #361): .canopy/prompts.jsonl — bumps gatewatch (v2), ratchetwatch (v2), tastewatch (v3) auditor system prompts to add warden-delivery instructions; ALSO edits the three audit prompt entries in .warren/triggers.yaml. This is the audit population editing its own running mandate (including this very gatewatch prompt). Work seed warren-7f62, not a ratification record.\n- SHA 5f41fef5 (PR #338): .canopy/prompts.jsonl — repins the tastewatch agent model claude-fable-5 -> claude-opus-4-8 (tastewatch entry v1 -> v2). Modifies a protected auditor .canopy entry. No ratification record. (Same PR also adds a biome.json formatter-exempt override carrying tracker pl-cf2a — Article II satisfied there; the Article IX gap is the .canopy auditor change.)\n\nWHAT ARTICLE IX REQUIRES: a recorded human sign-off (warren-ea20-style) per protected-path merge, OR revert. The gate forcing human-merge is necessary but not sufficient — the constitution treats the recorded ratification seed as the audit evidence.\n\nREMEDIATION IS NON-MECHANICAL (no plan attached): the fix is a human decision — file a ratification record for each PR (#364, #362, #361, #338) attesting the operator reviewed and merged it, or revert. A mechanical plan-run cannot self-grant this, and any plan touching these protected paths would itself re-trigger Article IX. Routed to the warden for human triage.\n\nDedupe: not covered by warren-d5e5 (PR #270), warren-4c8d (PR #340), or warren-ea20 (PR #337 only). warden delivery: undeliverable this patrol (WARREN_API_TOKEN unset -> /conversations 401); seed is the durable record.","labels":["audit","gatewatch"]}
{"id":"warren-60ee","title":"ratchetwatch tightening: 2026-06-14","status":"open","type":"task","priority":3,"createdAt":"2026-06-14T10:45:24.898Z","updatedAt":"2026-06-14T10:46:18.235Z","description":"Mechanical ratchet tightening for the 2026-06-14 patrol (Constitution Article II — ratchets only tighten).\n\nMeasurements (clean env; node_modules repaired via bun install --frozen-lockfile):\n- Coverage: functions 88.90% vs floor 88.60% (slack 0.30pt); lines 91.65% vs floor 91.54% (slack 0.11pt). Both < 0.75pt → no floor raise this patrol.\n- File-size: no grandfathered entry has dropped below the 500-line global limit (smallest = src/plots/aggregate.ts at 506), so no satisfied entries to remove.\n- Bundle: 7-day net gzip-js -221 B (re-baseline-down in #384); raises sum ~1.9 KB << 20 KB → no finding.\n- Debt allowlist: empty → no finding.\n\nThe single mechanical tightening this patrol is the one-file-per-patrol grandfather decomposition: src/runs/pr.ts (659 lines, furthest over the 500 limit, not covered by any open seed). See the attached refactor plan. Per Article III no release step is included — this hygiene batches into the next real release.","labels":["audit","ratchetwatch"],"plan_id":"pl-88bb","blockedBy":["warren-db9a","warren-70d7"]}
{"id":"warren-60ee","title":"ratchetwatch tightening: 2026-06-14","status":"open","type":"task","priority":3,"createdAt":"2026-06-14T10:45:24.898Z","updatedAt":"2026-06-14T10:53:27.319Z","description":"Mechanical ratchet tightening for the 2026-06-14 patrol (Constitution Article II — ratchets only tighten).\n\nMeasurements (clean env; node_modules repaired via bun install --frozen-lockfile):\n- Coverage: functions 88.90% vs floor 88.60% (slack 0.30pt); lines 91.65% vs floor 91.54% (slack 0.11pt). Both < 0.75pt → no floor raise this patrol.\n- File-size: no grandfathered entry has dropped below the 500-line global limit (smallest = src/plots/aggregate.ts at 506), so no satisfied entries to remove.\n- Bundle: 7-day net gzip-js -221 B (re-baseline-down in #384); raises sum ~1.9 KB << 20 KB → no finding.\n- Debt allowlist: empty → no finding.\n\nThe single mechanical tightening this patrol is the one-file-per-patrol grandfather decomposition: src/runs/pr.ts (659 lines, furthest over the 500 limit, not covered by any open seed). See the attached refactor plan. Per Article III no release step is included — this hygiene batches into the next real release.","labels":["audit","ratchetwatch"],"plan_id":"pl-88bb","blockedBy":["warren-70d7"]}
{"id":"warren-889a","title":"Grandfather-at-birth: src/runs/stream/bridge.test.ts pushed to 521 lines and exempted in be18ba73 (within 24h)","status":"open","type":"task","priority":3,"createdAt":"2026-06-14T10:45:36.305Z","updatedAt":"2026-06-14T10:45:36.305Z","description":"Constitution Article II finding (ratchets only tighten / nothing grandfathered at birth).\n\nEvidence (Article VIII):\n- File: src/runs/stream/bridge.test.ts — current 521 lines (limit 500).\n- Budget entry \"src/runs/stream/bridge.test.ts\": 521 ADDED in commit be18ba73e20fd4f3beee5cdb7e0563ef6b90cb6a (Jaymin West, 2026-06-13 11:51:08 -0700 = 18:51 UTC; tracker warren-df71, 'feat(runs): keep conversation runs alive...'), i.e. within the trailing 24h of this 2026-06-14 10:42 UTC patrol.\n- The file pre-existed (created 2026-05-27 in 22d16f5d) and was previously UNDER budget; warren-df71 grew it past 500 and added a fresh grandfather exception in the same diff rather than keeping the test under the limit (Article II: 'a new file written over the size limit is decomposed before merge, not exempted at write time' — same spirit applies to pushing a compliant file over the line).\n\nSeverity is low: only 21 lines over. Remedy is a small split/trim of bridge.test.ts back under 500 and removal of its budget entry — NOT planned by ratchetwatch this patrol because the one-decomposition-per-patrol slot went to the furthest-over file (src/runs/pr.ts, 659). Filed for human/gatewatch attention.\n\nDedupe: no existing seed matches 'bridge.test' or 'df71' (searched). Coordinate with gatewatch on be18ba73/warren-df71 rather than double-filing.","labels":["audit","ratchetwatch"]}
{"id":"warren-db9a","title":"Create src/runs/pr-checks.ts and move the PR-merge/URL-parse group into it. Move checkPullRequestMerged, mergePullRequest, parsePullRequestUrl, parsePullRequestRef, isRateLimited and their associated exported types/regexes (CheckPullRequestMergedInput, CheckPrMergedResult, MergePullRequestInput, MergePullRequestResult, PR_URL_RE, PR_SHORT_RE) out of src/runs/pr.ts into the new src/runs/pr-checks.ts, carrying any private helpers they need (buildHeaders/readJson/readText/truncate may need to be shared — if so, keep one copy and import it, do NOT duplicate, or jscpd check:dups will flag it). Re-export every moved PUBLIC symbol from src/runs/pr.ts (export { ... } from \"./pr-checks.ts\") so the path src/runs/pr.ts still resolves all of them. Verify: `wc -l src/runs/pr.ts` shows < 500 AND `bun run typecheck` is clean AND `bun test src/runs/pr.test.ts` is green with the same test count as before the split.","status":"open","type":"task","priority":2,"plan_step_index":0,"description":"<!-- seeds:plan-backref:start -->\nStep 1 of plan pl-88bb.\n\nParent seed: warren-60ee — ratchetwatch tightening: 2026-06-14\nPlan template: refactor\nPlan approach: Split along the existing seam: move the PR-merge / URL-parsing group (checkPullRequestMerged, parsePullRequestUrl, parsePullRequestRef, mergePullRequest, isRateLimited, plus their…\n\nRun `sd plan show pl-88bb` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n<!-- seeds:plan-backref:end -->","createdAt":"2026-06-14T10:46:18.235Z","updatedAt":"2026-06-14T10:46:18.235Z","labels":["ratchetwatch"],"plan_id":"pl-88bb","blocks":["warren-60ee"]}
{"id":"warren-db9a","title":"Create src/runs/pr-checks.ts and move the PR-merge/URL-parse group into it. Move checkPullRequestMerged, mergePullRequest, parsePullRequestUrl, parsePullRequestRef, isRateLimited and their associated exported types/regexes (CheckPullRequestMergedInput, CheckPrMergedResult, MergePullRequestInput, MergePullRequestResult, PR_URL_RE, PR_SHORT_RE) out of src/runs/pr.ts into the new src/runs/pr-checks.ts, carrying any private helpers they need (buildHeaders/readJson/readText/truncate may need to be shared — if so, keep one copy and import it, do NOT duplicate, or jscpd check:dups will flag it). Re-export every moved PUBLIC symbol from src/runs/pr.ts (export { ... } from \"./pr-checks.ts\") so the path src/runs/pr.ts still resolves all of them. Verify: `wc -l src/runs/pr.ts` shows < 500 AND `bun run typecheck` is clean AND `bun test src/runs/pr.test.ts` is green with the same test count as before the split.","status":"closed","type":"task","priority":2,"plan_step_index":0,"description":"<!-- seeds:plan-backref:start -->\nStep 1 of plan pl-88bb.\n\nParent seed: warren-60ee — ratchetwatch tightening: 2026-06-14\nPlan template: refactor\nPlan approach: Split along the existing seam: move the PR-merge / URL-parsing group (checkPullRequestMerged, parsePullRequestUrl, parsePullRequestRef, mergePullRequest, isRateLimited, plus their…\n\nRun `sd plan show pl-88bb` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n<!-- seeds:plan-backref:end -->","createdAt":"2026-06-14T10:46:18.235Z","updatedAt":"2026-06-14T10:53:27.319Z","labels":["ratchetwatch"],"plan_id":"pl-88bb","blocks":["warren-60ee"],"extensions":{"role":"pi","lastRunId":"run_etn8ndfywq3k","lastRunAt":"2026-06-14T10:48:41.120Z"},"closedAt":"2026-06-14T10:53:27.319Z"}
{"id":"warren-70d7","title":"Remove the \"src/runs/pr.ts\": 659 entry from scripts/file-size-budgets.json (delete that one line). Do NOT add a budget entry for src/runs/pr-checks.ts — it must default-pass under the 500 threshold (confirm `wc -l src/runs/pr-checks.ts` < 500). Per Constitution Article VI, before declaring done run a repo-wide search for any reference to the old single-file assumption and the new path across ALL file types — `rg -n \"runs/pr\\\\.ts|runs/pr-checks\" --hidden -g '!node_modules'` plus an explicit sweep of Dockerfile, docker-compose.yml, .github/workflows/*.yml, src/supervisor/ spawn/config strings, and docs/ — and fix any stale reference (file moves have broken production here before; encode the check, do not assume it). Verify: `bun run check:size` exits 0 AND `bun run check:dups` exits 0 AND `bun run check:all` is fully green (every gate stays green, the raised-tightness budget still passes against current actuals).","status":"open","type":"task","priority":2,"plan_step_index":1,"description":"<!-- seeds:plan-backref:start -->\nStep 2 of plan pl-88bb.\n\nParent seed: warren-60ee — ratchetwatch tightening: 2026-06-14\nPlan template: refactor\nPlan approach: Split along the existing seam: move the PR-merge / URL-parsing group (checkPullRequestMerged, parsePullRequestUrl, parsePullRequestRef, mergePullRequest, isRateLimited, plus their…\n\nRun `sd plan show pl-88bb` for the full plan (context, alternatives, sibling steps, acceptance criteria).\n<!-- seeds:plan-backref:end -->","createdAt":"2026-06-14T10:46:18.235Z","updatedAt":"2026-06-14T10:46:18.235Z","labels":["ratchetwatch"],"plan_id":"pl-88bb","blocks":["warren-60ee"]}
1 change: 1 addition & 0 deletions biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
"src/runs/cost-analytics.ts",
"src/runs/interactive.ts",
"src/runs/pause.ts",
"src/runs/pr-checks.ts",
"src/runs/pr-template.ts",
"src/runs/pr.ts",
"src/runs/reap/mulch.ts",
Expand Down
Loading