go-ai/TODO.md
Snider 4d73fa250c feat(ml): Phase 2 — migrate ml_backends to go-inference registry
- Make go-inference a direct dependency (was indirect)
- Rewrite mlBackends() to use inference.List()/Get()/Default()
  instead of ml.Service.Backends()/Backend()/DefaultBackend()
- Add documentation comments clarifying generation flow
- mlGenerate/mlScore/mlProbe unchanged (work via go-ml.Service)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 06:01:30 +00:00

3 KiB

TODO — go-ai

Virgil dispatches tasks. Mark [x] when done, note commit hash.


Phase 1: Post-Split Cleanup

  • Remove test-mlx.go — Deleted standalone test script from module root.
  • Verify go build ./... passes — Clean build, no stale import paths.
  • Verify go vet ./... passes — No vet warnings.
  • Run full test suite — All tests pass. Fixed TestSandboxing_Symlinks_Blocked (renamed; asserts sandbox blocks symlink escape) and TestNewTCPTransport_Warning (added missing security warning to NewTCPTransport).

Phase 2: go-inference Migration

go-ml is migrating to use go-inference shared interfaces. Once that's done, go-ai's ML subsystem should use go-inference too.

  • Update tools_ml.go MLSubsystem — mlGenerate/mlScore/mlProbe unchanged (work correctly via go-ml.Service → InferenceAdapter → inference.TextModel). Added flow documentation comments.
  • Update ml_backends tool — Rewritten to use inference.List()/Get()/Default() instead of ml.Service.Backends()/Backend()/DefaultBackend().
  • Update ml_score and ml_probe — Kept go-ml dependency for scoring/probes (that's where the scoring engine lives). Generation flows through go-inference via InferenceAdapter. Added documentation comments.
  • Add go-inference to go.mod — Promoted from indirect to direct require. Replace directive already present.

Phase 3: MCP Transport Testing

  • Stdio transport e2e — Test core mcp serve over stdin/stdout with a mock MCP client. Verify tool discovery + file_read round-trip.
  • TCP transport e2e — Test MCP_ADDR=:9100 core mcp serve. Connect, list tools, call file_read, verify response.
  • Unix transport — Currently untested. Add basic connect + tool call test.
  • Webview tools CI guardtools_webview.go tools require Chrome. Add testing.Short() skip or build tag so CI doesn't fail.

Phase 4: IDE Subsystem Hardening

  • Bridge reconnection test — Kill mock Laravel WS server, verify exponential backoff + reconnect in bridge.go.
  • Add auth to bridgebridge.go connects unauthenticated. Add token header on WebSocket upgrade.
  • Dashboard tools beyond stubstools_dashboard.go returns empty data. Implement real data fetching or document as stub.

Phase 5: Testing Gaps

  • Process tools CI teststools_process.go needs CI-safe tests (start/stop lightweight processes like echo or sleep).
  • RAG tools mocktools_rag.go needs Qdrant + Ollama mocks for CI. Test rag_query, rag_ingest, rag_collections without live services.
  • ML tools mocktools_ml.go needs mock backend for CI. No real inference in tests.
  • Metrics benchmark — Benchmark metrics_record + metrics_query at scale (10K+ JSONL events).

Workflow

  1. Virgil in core/go writes tasks here after research
  2. This repo's session picks up tasks in phase order
  3. Mark [x] when done, note commit hash
  4. New discoveries → add tasks, flag in FINDINGS.md