docs(plans): mark D.1+D.2 shipped in post-fix remainders (knowledge loop closed)
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.
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user