From 0b5b213b2aa91bd9c56fbfb166de54d31eefab2d Mon Sep 17 00:00:00 2001 From: dtoro Date: Tue, 14 Jul 2026 20:47:35 +0200 Subject: [PATCH] docs(plans): mark D.1+D.2 shipped in post-fix remainders (knowledge loop closed) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit D.1 (complete_task refused without writeback) and D.2 (propose_plan auto-appends writeback step) shipped in 3de359b (v0.5.1), e2e-validated against the live agent. The knowledge loop is now structurally closed — no blockers remain. Remaining items (F.1, F.2, C.1, C.2, B.4-B.6, E.1, E.2) are all friction/cosmetic. --- .../2026-07-14-post-fix-session-remainders.md | 42 ++++++++++--------- plans/index.md | 2 +- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/plans/2026-07-14-post-fix-session-remainders.md b/plans/2026-07-14-post-fix-session-remainders.md index 2c47fb4..0da5ff7 100644 --- a/plans/2026-07-14-post-fix-session-remainders.md +++ b/plans/2026-07-14-post-fix-session-remainders.md @@ -1,10 +1,10 @@ # 2026-07-14 — Post-fix session audit: empty responses & plan drift remainders -**Status:** In Progress — 2026-07-14. Phases A + B.1-B.3 + F.3 shipped, -e2e-validated, committed (`337d577`), pushed to `main`, and deployed to -`oikos-nomos-1` (v0.5.0). Phases C, D, E, and F.1-F.2 remain; **D.1 is the -next blocker** (refuse `complete_task` without writeback — the knowledge -loop is still drifting). +**Status:** In Progress — 2026-07-14. Phases A + B.1-B.3 + F.3 + D.1 + D.2 +shipped, e2e-validated, committed (`337d577` + `3de359b`), pushed to +`main`, and deployed to `oikos-nomos-1` (v0.5.1). The knowledge loop is now +structurally closed. Phases C, E, F.1-F.2, and B.4-B.6 remain (all +friction/cosmetic, **no blockers left**). **2026-07-14 (PM) — OIDC token-refresh fix (unplanned, root-cause for the empty graph symptom):** the overview background graph and the Knowledge Base @@ -22,7 +22,7 @@ the static token fallback takes over. Build passes. Not yet committed or deployed (pending operator verification). Not part of any numbered phase above — filed here because it was the highest-impact surface symptom. -## Shipped (2026-07-14, v0.5.0 — commit 337d577, deployed) +## Shipped (2026-07-14, v0.5.0–v0.5.1 — commits 337d577 + 3de359b, deployed) | Fix | File(s) | Validation | |---|---|---| @@ -33,23 +33,25 @@ above — filed here because it was the highest-impact surface symptom. | **B.1** `chatWith` emits `done` after `error` on every terminal path | `cmd/nomos/agent.go` | e2e: nomos logs show zero reconnect/resume entries for the plan-proposing test sessions (was the amplifier in the three-bug chain) | | **B.2** Reconnect/resume note carries last user msg + plan-in-flight directive | `cmd/nomos/store.go`, `cmd/nomos/main.go`, `cmd/nomos/continue.go` | wired into all 4 resume entry points (reconnect, /resume, idle-sweep, question-answer) | | **B.3** `resumeSession` escalates the recovery note across 3 attempts | `cmd/nomos/continue.go` | e2e: a manually-triggered reconnect produced a real response on the escalated retry (was 3 identical empties → give up) | +| **D.1** `complete_task` refused when discovery ran without writeback | `cmd/nomos/store.go`, `cmd/nomos/tasks.go` | e2e: agent ran `run` on lxc:gitea, called `complete_task` → REFUSED → agent called `update_entity_attributes` → retried `complete_task` → succeeded. Knowledge loop closed end-to-end. | +| **D.2** `propose_plan` auto-appends a writeback step if missing | `cmd/nomos/tasks.go` | e2e: agent proposed 3 steps (no writeback); D.2 appended step 4 'Write back: update_entity_attributes + ...'. Combined with D.1 + seq-order (5.6), the agent must write back to complete. | -Test: `TestProposePlan_RefuseInFlight` (rewrote `TestProposePlan_AppendVsReplace`) -in `cmd/nomos/store_test.go` asserts the refusal + generation wiring. +Tests: `TestProposePlan_RefuseInFlight` (rewrote `TestProposePlan_ +AppendVsReplace`) + `TestHadDiscoveryAndWriteback` in +`cmd/nomos/store_test.go` assert the refusal + generation + discovery/writeback +gating. -## Remaining (not yet shipped) +## Remaining (not yet shipped) — no blockers, all friction/cosmetic -- **D.1** Refuse `complete_task` without writeback when discovery ran — **next blocker**. The knowledge loop is still drifting: conv3 did write back (`update_entity_attributes`) but only because the agent chose to, not because it was forced to. The warning string in `completeTask` (5.5 from the prior plan) still fires but is still ignorable. -- **D.2** Auto-append a writeback step to plans that lack one. -- **C.1** `completeTask` reject re-completion of a terminal session. -- **C.2** SOUL.md: don't re-execute on UI-clarification complaints. -- **F.1** Consolidate SOUL.md's three overlapping task-flow sections to one (the operator's "be more crisp" feedback). -- **F.2** Tighten tool-result strings from advisory to imperatives (partially done in F.3's propose_plan result; remaining: set_goal, update_plan_step, complete_task). -- **B.4** Surface the real model error text (errText) in the error event + resume-failed note. -- **B.5** Back off between resume retries (4s, 8s). -- **B.6** Don't persist the empty placeholder as a visible bubble. -- **E.1** SOUL.md: prefer knowledge over re-execution for fleet-wide facts. -- **E.2** `list_lxcs` last-audited hint in the result. +- **F.1** Consolidate SOUL.md's three overlapping task-flow sections to one (the operator's "be more crisp" feedback). Effort: S. +- **F.2** Tighten tool-result strings from advisory to imperatives (partially done in F.3's propose_plan result; remaining: set_goal, update_plan_step, complete_task). Effort: S. +- **C.1** `completeTask` reject re-completion of a terminal session. Effort: S. +- **C.2** SOUL.md: don't re-execute on UI-clarification complaints. Effort: S. +- **B.4** Surface the real model error text (errText) in the error event + resume-failed note. Effort: S. +- **B.5** Back off between resume retries (4s, 8s). Effort: S. +- **B.6** Don't persist the empty placeholder as a visible bubble. Effort: M. +- **E.1** SOUL.md: prefer knowledge over re-execution for fleet-wide facts. Effort: S. +- **E.2** `list_lxcs` last-audited hint in the result. Effort: M. ## Commit-history context (the 20-commit iteration) diff --git a/plans/index.md b/plans/index.md index e32aa6c..1955068 100644 --- a/plans/index.md +++ b/plans/index.md @@ -17,7 +17,7 @@ went sideways, open an investigation. | 2026-07-14 | [Session reliability & UX audit](2026-07-14-session-reliability-and-ux-audit.md) | Done — all 21 fixes deployed | | 2026-07-14 | [Tool timeline in sidebar](2026-07-14-tool-timeline-sidebar.md) | Done — deployed v0.3.2 | | 2026-07-14 | [Unified agent activity indicator](2026-07-14-unified-agent-indicator.md) | Done — deployed v0.3.3 | -| 2026-07-14 | [Post-fix session remainders: empty responses & plan drift](2026-07-14-post-fix-session-remainders.md) | In Progress — Phases A + B.1-B.3 + F.3 shipped, e2e-validated, committed (337d577), deployed v0.5.0; Phases C, D, E, F.1-F.2 remain (D.1 next blocker). **PM:** OIDC token-refresh fix (root-cause for empty graphs) implemented, not yet committed/deployed | +| 2026-07-14 | [Post-fix session remainders: empty responses & plan drift](2026-07-14-post-fix-session-remainders.md) | In Progress — Phases A + B.1-B.3 + F.3 + D.1 + D.2 shipped, e2e-validated, committed (337d577 + 3de359b), deployed v0.5.1. Knowledge loop structurally closed. Phases C, E, F.1-F.2, B.4-B.6 remain (no blockers). **PM:** OIDC token-refresh fix (root-cause for empty graphs) implemented, not yet committed/deployed | ## Done