Sub-project 4b (scheduled + incremental analysis — spec: `docs/superpowers/specs/2026-08-04-analyzer-autonomy-design.md`) shipped. Items deferred at final review, none blocking.
⚠️ Operator-visible behavior change (release-note material)
Linear's `FetchIssuesByStates` now honors the runtime project filter the same way `FetchCandidateIssues` always did. Consequence: with a runtime project filter set, cron/poll automations, the dashboard issue list, and the TUI backlog now narrow to the filtered projects. The pre-fix behavior (automations acting on issues outside the filtered working set) was the anomaly; cross-project blocker resolution on audit rows is unaffected (identifier-based fetches).
Deferrals
- IssuesScanned / CLI "analyzed N issues" report the fetch count, not the analyzed count — actively misleading under incremental default (a revalidation-only run says "analyzed 50" when 0 hit the agent). Fix opportunistically: "scanned N / analyzed M".
- Guard no-op leaves `DepsLastAnalyzedAt` at the last successful pass (deliberate: the guard writes nothing).
- `DedupeInferredEdges` tie-break ignores `InferredAt` (pre-existing; tie case untested).
- `startDepsAutoAnalyze` wired inside `if srvListener != nil` — always taken today; would silently disable auto-analysis under a future headless mode.
- `resolveProfile` reads two cfgMu sections non-atomically (transient spurious warn, self-heals next tick).
- Content edits to an already-terminal issue never trigger re-analysis (signal rule iterates candidates only) — harmless, terminal issues don't gate.
- An Analyzed entry whose recorded state is later removed from `active_states` config won't signal on absence — self-corrects on the next pass.
- The Linear project-filter merge block is now duplicated between `FetchCandidateIssues` and `FetchIssuesByStates` (mirrors pre-existing structure).
- The dashboard "auto" badge on analyzer jobs is visible only via the click-driven poll loop, not as a passive background indicator (spec-sanctioned; a passive surface needs snapshot/SSE plumbing).
Test-shape lesson, third occurrence
All three completed sub-projects' sole production-fatal bugs were fixture-shape-vs-production-shape (reason strings; audit map keys; this time: `Analyzed` built from the union fetch diffed against active-only candidates — proven as 24 scheduler fires per 24 quiescent hours). The fix's regression tests now cover terminal-issue and blank-state sidecar shapes. Tests that diff two data sources must draw both from their real producers.
🤖 Generated with Claude Code
Sub-project 4b (scheduled + incremental analysis — spec: `docs/superpowers/specs/2026-08-04-analyzer-autonomy-design.md`) shipped. Items deferred at final review, none blocking.
Linear's `FetchIssuesByStates` now honors the runtime project filter the same way `FetchCandidateIssues` always did. Consequence: with a runtime project filter set, cron/poll automations, the dashboard issue list, and the TUI backlog now narrow to the filtered projects. The pre-fix behavior (automations acting on issues outside the filtered working set) was the anomaly; cross-project blocker resolution on audit rows is unaffected (identifier-based fetches).
Deferrals
Test-shape lesson, third occurrence
All three completed sub-projects' sole production-fatal bugs were fixture-shape-vs-production-shape (reason strings; audit map keys; this time: `Analyzed` built from the union fetch diffed against active-only candidates — proven as 24 scheduler fires per 24 quiescent hours). The fix's regression tests now cover terminal-issue and blank-state sidecar shapes. Tests that diff two data sources must draw both from their real producers.
🤖 Generated with Claude Code