singularity-forge/TODO.md

4.8 KiB

Raw Dump Inbox

This file is only a temporary human dump inbox. Do not treat it as durable runtime memory or an approved backlog.

Untriaged Notes

Feature Gaps & Limitations (2026-05-06)

Critical Path Gaps

  • Monolithic auto-dispatch/auto-prompts files (61KB, 123KB) — acknowledged in ADR-001 as needing decomposition. Blocks easy navigation and testing of autonomous dispatch logic.
  • Extension-provided models incomplete — Extensions cannot reliably register custom model variants. Model selection system needs refactoring to expose before_model_select hook properly.
  • No typed environment schema — SF_* env vars have no runtime validation. Missing config is silent and hard to debug. Need zod/io-ts schema in env.ts.

Backlog Features (BUILD_PLAN.md Tier 1-2)

  • Product-audit phase auto-fire — Tool callable but PhaseMerge/PhaseComplete dispatch not wired. Manual ports from gsd-2 needed.
  • Extended config-overlay keys — Missing context_compact_at, context_hard_limit, unit_timeout_by_phase, max_agents_by_phase, turn_input_required, hot_cache_turns, etc. Users cannot tune critical perf/timeout settings.
  • Architecture doc auto-update — No fast-dispatch at phase-end to detect if ARCHITECTURE.md/CONVENTIONS.md/STACK.md drifted. Auto-propose diffs for user approval.
  • Semantic checkpoint chapters — No per-turn semantic "chapter" grouping for crash-resume context. Phase transitions inferred but not labeled. Impacts Hindsight recall usefulness.
  • Custom Anthropic SSE parser — Still using @anthropic-ai/sdk client.messages.stream(). Should port pi-mono custom SSE parser (~200 LOC, 3 commits) to filter unknown-event + handle proxy events (issue #3708).
  • Symlinked package dedup — Selectors/loaders show duplicates when packages/resources/skills/sessions symlinked (dev, CI). Port from pi-mono PR #3818.
  • Extension API setWorkingVisible() — ctx.ui.setWorkingVisible() not yet added. Prevents extensions from hiding built-in working-loader; limits TUI customization.

Provider Expansion (BUILD_PLAN.md Tier 0.5 - gsd-2 ports)

  • Cloudflare Workers AI provider — Not yet in routing list. Ready in pi-mono PR #3851; 1-line port.
  • Azure Cognitive Services base URL — Azure OpenAI Responses endpoint support not ported from pi-mono PR #3799.
  • Local LLM SSE timeout (5-min cutoff) — Ollama/LM Studio over 5 min hit UND_ERR_BODY_TIMEOUT. Fix available in pi-mono d0907b6d8 (1 commit).
  • Bedrock inference profile normalization — Prompt-caching checks fail on inference profile ARNs. Fix in pi-mono 7c487bb60 (1 commit).

Testing Gaps

  • Coverage thresholds too low — 40% is acceptable but should be 60%+ for autonomous/critical paths (auto-dispatch, recovery, state machine). Add property-based testing (fast-check) for state transitions.
  • No end-to-end milestone lifecycle tests — Missing integration tests covering full milestone flow.
  • No fault-injection/chaos tests — Recovery paths (stuck-loop detection, timeout recovery, runaway guards) lack chaos/fault-injection coverage.

Minor/Polish

  • Biome schema version mismatch — biome.json v2.4.13 vs CLI v2.4.14. Run biome migrate.
  • MCP package completeness unclear — docs reference mcp-server but completeness unknown. Verify packages/mcp-server/ is production-ready and document status.
  • Headless assistant-text preview deferred — Notification categorization done; assistantTextBuffer/thinkingBuffer separation incomplete (see headless.ts).

gsd-2 Safety/Correctness Ports (BUILD_PLAN.md Tier 0.5)

  • Bash evidence persistence race — Close mid-unit re-dispatch race (gsd-2 da7dd56e7, PR #5056→#5058). Bash tool calls can lose evidence between dispatch and re-dispatch.
  • Project-controlled surface hardening — Full fix supersedes partial cherry-pick at 66ff949c1 (gsd-2 65ca5aa2e).
  • Web_search injection narrowing — Only inject web_search when provider accepts it (gsd-2 4370bedf3).
  • Symlinked .sf staging self-heal — Data-loss prevention when staging dir is symlink (gsd-2 9340f1e9b, PR #4423).
  • Milestone KNOWLEDGE injection budgeting — Prevents scope knowledge from blowing context budget (gsd-2 58d3d4d6c, PR #4721).
  • MCP-server stdout-buffer deadlock — Large-output MCP tools could hang (gsd-2 bb747ec57).
  • Workflow state machine race protection — Session transitions during agent_end, idle-wait optimization (gsd-2 commits 71114fccf, 6d7e4ccb5, c162c44bf, e3bd04551).
  • Claude-Code CLI Always-Allow persistence — Grant persistence for non-Bash tools (gsd-2 a88baeae9, PR #5096).

Processed Notes

  • SF auto-loop hardening was converted into SF milestone state on 2026-05-02. Continue from .sf/STATE.md, .sf/milestones/M013/, and .sf/milestones/M014/ instead of reusing the old raw dump.