Files
oikos/plans/index.md
dtoro df393152f6 docs: nomos agent code review — gaps and improvement plan
Full read-through of cmd/nomos/ (agent.go, store.go, main.go, continue.go,
assent.go, tasks.go). Findings, ranked:

- A1 (confirmed via runnable probe): isAssent/isTypedConfirmation use
  unpadded substring matching for assent/confirm words while negation uses
  word-boundary checks — "yes" matches inside "yesterday", "confirm" matches
  inside "confirmed" with no negation word covering contracted negatives
  ("haven't"). isTypedConfirmation gates DESTRUCTIVE actions specifically.
- A2: chatWith replays a session's ENTIRE message history every turn, no
  windowing/token budget — confirmed unbounded against a documented
  production case (70 tool calls, 106KB messages).
- A3: a live turn's tool-call history is lost entirely if the client
  disconnects mid-stream (single end-of-turn save using the same
  connection-tied, possibly-cancelled context) — resumeSession already has
  the fix pattern (incremental placeholder+update), handleChat doesn't use it.
- B1: zero recover() anywhere in cmd/nomos/internal/mcp/internal/httpapi —
  every explicitly-spawned goroutine (continuation worker, resumeSession,
  executeApprovedViaAPI, sse listeners) crashes the whole process on panic.
- B2: auto-continuation processes its batch sequentially, one full LLM turn
  at a time, undercutting this session's own concurrency work on exactly the
  path autonomous tasks depend on most.
- B3: no terminal state for a permanently-failed auto-continuation.
- C1: nomos's own gateway (port 8092, directly published + mesh-reachable)
  has ZERO authentication on any endpoint — chat, session read/delete,
  chat-assent approval of gated executions, all open to anyone on the LAN.
- D1-D3: dead code (isTaskTool unused), N+1 query in recordTouched, no
  validation on complete_task's outcome enum.
- E: zero automated tests for agent.go/store.go/main.go/tasks.go — including
  today's new safety-critical logic (session-scoped windows, mcpClientPool,
  proposePlan's append-vs-replace), verified only by live manual testing.
- F1: tool list + fleet snapshot re-fetched every turn (minor).

Prioritized implementation order in the doc: A1 → C1 → B1 → B2 → A3 → D1-3 →
A2 → B3/F1, tests landing alongside each fix rather than as a deferred pass.

Also archives the now-fully-shipped concurrent-task-execution plan to done/
(all 3 required fixes deployed this session; fix 4 explicitly deferred per
its own recommendation).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 19:47:17 +02:00

3.7 KiB

Plans

Pre-flight runbooks for planned changes. When a plan is executed, move it to done/ and add changelog entries on affected node pages. If things went sideways, open an investigation.

Active

Date Title Status
2026-07-05 Oikos Prometheus LXC Planned — not started
2026-07-08 Oikos gaps, broken things, and improvements In Progress — security items (B1-B5) and doc drift (E) still open
2026-07-08 Control room web UI In Progress
2026-07-08 Liveness, drift, and UX cohesion In Progress — Phase 5 deferred
2026-07-10 General gated execution: unlimited actions, gated by risk In Progress — enum retirement + auto-act revival still open
2026-07-11 Nomos agent code review: gaps and improvement plan Planned

Done

See done/ for executed plans:

Date Title
2026-06-01 Slate AX → SODOLA managed switch migration
2026-06-04 Deprecate claudio-bot
2026-06-25 Yuvomi deployment — house.hubris.network
2026-06-29 Grimmory migration — Booklore → dedicated LXC
2026-06-24 TRMNL plugins LXC (128) + middleware deploy pipeline
2026-07-06 Adopt wiki-hq doc architecture
2026-07-07 MCP tool completion — Hermes operator interface
2026-07-07 DB as single source of truth for agent knowledge
2026-07-07 Comprehensive audit: stale files, state gaps, and next steps
2026-07-07 Client lifecycle in Go — enrollment through deprecation
2026-07-08 Fix MCP analysis tools
2026-07-06 Consolidate Oikos control plane onto mac-mini
2026-07-08 Signal triggers: host health checks
2026-07-08 Plan vs implementation cross-reference
2026-07-08 Nomos resident agent (renames Hermes)
2026-07-09 Chat sessions: reliability, cost, and session-management fixes
2026-07-09 Session execution, UX, and learning improvements
2026-07-10 Autonomous plan execution: close the observation gap
2026-07-11 Tasks: the chat page as goal-structured autonomous work
2026-07-11 Concurrent task execution: safety + throughput + frontend correctness

Conventions

  • File name: YYYY-MM-DD-<slug>.md. Use the target date if known, otherwise the planning date.
  • Status: PlannedIn ProgressDone (move to done/ on completion).
  • When done: add a changelog entry on every affected node page, then move the file to done/.
  • Plans are append-only once execution starts — don't rewrite pre-flight intent after the fact.