omnius 1.0.688 → 1.0.690

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33786,6 +33786,84 @@
33786
33786
  }
33787
33787
  ]
33788
33788
  },
33789
+ {
33790
+ "id": "guide.work-orders-runtime-health-remediation-wo-20-exact-session-continuation-uppercase",
33791
+ "kind": "guide",
33792
+ "title": "WO-20: Exact session continuation across exit and restart",
33793
+ "summary": "On 2026-09-03, the telegramtest TUI displayed the latest pentest task during startup, but the first restored model context combined a completed breach.py handoff with an unrelated, older page.tsx todo tree. The user then entered continue, and Omnius continued the stale tree instead of the task that was active before /quit.",
33794
+ "keywords": [
33795
+ "work",
33796
+ "orders",
33797
+ "runtime",
33798
+ "health",
33799
+ "remediation",
33800
+ "WO",
33801
+ "20",
33802
+ "exact",
33803
+ "session",
33804
+ "continuation",
33805
+ "md"
33806
+ ],
33807
+ "maturity": "internal",
33808
+ "audiences": [
33809
+ "maintainer",
33810
+ "large-context-agent"
33811
+ ],
33812
+ "layer": "documentation",
33813
+ "interfaces": [
33814
+ {
33815
+ "type": "file",
33816
+ "target": "docs/work-orders/runtime-health-remediation/WO-20-exact-session-continuation.md"
33817
+ }
33818
+ ],
33819
+ "references": [
33820
+ {
33821
+ "type": "documentation",
33822
+ "target": "docs/work-orders/runtime-health-remediation/WO-20-exact-session-continuation.md",
33823
+ "relation": "canonical-artifact"
33824
+ }
33825
+ ]
33826
+ },
33827
+ {
33828
+ "id": "guide.work-orders-runtime-health-remediation-wo-21-task-convergence-and-todo-scope-uppercase",
33829
+ "kind": "guide",
33830
+ "title": "WO-21: Task convergence and todo scope",
33831
+ "summary": "On 2026-09-03, a user reported that Omnius remained at task 2/8 for about 40 turns. The report did not include a screenshot or run artifact, so the exact label remains unverified. Omnius has two similar counters:",
33832
+ "keywords": [
33833
+ "work",
33834
+ "orders",
33835
+ "runtime",
33836
+ "health",
33837
+ "remediation",
33838
+ "WO",
33839
+ "21",
33840
+ "task",
33841
+ "convergence",
33842
+ "and",
33843
+ "todo",
33844
+ "scope",
33845
+ "md"
33846
+ ],
33847
+ "maturity": "internal",
33848
+ "audiences": [
33849
+ "maintainer",
33850
+ "large-context-agent"
33851
+ ],
33852
+ "layer": "documentation",
33853
+ "interfaces": [
33854
+ {
33855
+ "type": "file",
33856
+ "target": "docs/work-orders/runtime-health-remediation/WO-21-task-convergence-and-todo-scope.md"
33857
+ }
33858
+ ],
33859
+ "references": [
33860
+ {
33861
+ "type": "documentation",
33862
+ "target": "docs/work-orders/runtime-health-remediation/WO-21-task-convergence-and-todo-scope.md",
33863
+ "relation": "canonical-artifact"
33864
+ }
33865
+ ]
33866
+ },
33789
33867
  {
33790
33868
  "id": "guide.work-orders-telegram-dropbear-context-rca-workorder",
33791
33869
  "kind": "guide",
package/docs/DISCOVERY.md CHANGED
@@ -558,6 +558,8 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
558
558
  | `guide.work-orders-runtime-health-remediation-wo-18-interruption-evidence-uppercase` | WO-18 interruption lifecycle evidence | Scope: /pause, /resume, /stop, safe-boundary ownership, recovery, and stale-effect prevention. This record is independent of the shared remediation tracker and records only verified WO-18 implementation evidence. |
559
559
  | `guide.work-orders-runtime-health-remediation-wo-19-clean-build-evidence-uppercase` | WO-19 Clean Build Evidence | WO-19 is implemented in commit 5f253c05. |
560
560
  | `guide.work-orders-runtime-health-remediation-wo-19-clean-build-reproducibility-uppercase` | WO-19: Clean Build and Optional-Dependency Reproducibility | Status: deterministic acceptance complete Risk: medium Depends on: WO-00 |
561
+ | `guide.work-orders-runtime-health-remediation-wo-20-exact-session-continuation-uppercase` | WO-20: Exact session continuation across exit and restart | On 2026-09-03, the telegramtest TUI displayed the latest pentest task during startup, but the first restored model context combined a completed breach.py handoff with an unrelated, older page.tsx todo tree. The user then entered continue, and Omnius continued the stale tree instead of the task that was active before /quit. |
562
+ | `guide.work-orders-runtime-health-remediation-wo-21-task-convergence-and-todo-scope-uppercase` | WO-21: Task convergence and todo scope | On 2026-09-03, a user reported that Omnius remained at task 2/8 for about 40 turns. The report did not include a screenshot or run artifact, so the exact label remains unverified. Omnius has two similar counters: |
561
563
  | `guide.work-orders-telegram-dropbear-context-rca-workorder` | Telegram Dropbear Context Engineering RCA Work Order | Observed run: /home/roko/Documents/Projects/Adjacent/telegramtest/.omnius, run id 1782873796963-i5r7mv. |
562
564
  | `guide.work-orders-wo-am-gaps-uppercase` | Associative Memory Gap Work Orders | Generated: 2026-04-13 Source: Deep audit of multimodal associative memory systems Status: READY FOR IMPLEMENTATION |
563
565
  | `guide.work-orders-world-class-memory-compiler-readme-uppercase` | World-Class Memory Compiler Program | Status: active implementation program Owner: Omnius orchestration and memory packages Last updated: 2026-07-13 |
@@ -309,3 +309,17 @@ deterministically repaired P0 or P1 defect.
309
309
  accessibility, and mocked inference end-to-end tests.
310
310
  - [x] WO-18 pause, stop, and resume use one durable interruption lifecycle and
311
311
  pass cancellation, restart, ownership, external-effect, and isolation tests.
312
+ - [x] WO-20 exit and restart preserve one exact typed task continuation. Generic
313
+ context restoration cannot mix or activate unrelated historical artifacts.
314
+ - [x] WO-21 task convergence and todo scope prevent stale `tasks N/M` displays,
315
+ cross-runner todo leakage, and activity-only re-engagement.
316
+ - [x] Bind todo tools to immutable runner-owned sessions.
317
+ - [x] Clear the active persisted checklist at a fresh task boundary after
318
+ archival.
319
+ - [x] Count only typed authoritative advancement as progress.
320
+ - [x] Latch an advisory convergence review when the leaf frontier is static.
321
+ - [x] Make loop, reminder, budget, and workboard progress semantics truthful.
322
+ - [x] Pass deterministic race, stasis, display, typecheck, and build tests.
323
+ - [x] A recovered pause no longer strands its session. Submitting a new task
324
+ retires the superseded generation instead of refusing every later prompt,
325
+ while unreconciled external effects still fence admission.
@@ -0,0 +1,88 @@
1
+ # WO-20: Exact session continuation across exit and restart
2
+
3
+ ## Incident
4
+
5
+ On 2026-09-03, the `telegram_test` TUI displayed the latest pentest task during
6
+ startup, but the first restored model context combined a completed `breach.py`
7
+ handoff with an unrelated, older `page.tsx` todo tree. The user then entered
8
+ `continue`, and Omnius continued the stale tree instead of the task that was
9
+ active before `/quit`.
10
+
11
+ ## Root causes
12
+
13
+ - `/quit`, `/exit`, readline close, and fallback exit abort an active runner.
14
+ The explicit quit paths also delete `.omnius/history/pending-task.json`.
15
+ - Startup selects handoff, completion ledger, todo state, context chronology,
16
+ and visual history independently. These projections need not identify the
17
+ same session or run.
18
+ - Generic restore mutates the process-wide task session, even though the
19
+ restored transcript is historical orientation only.
20
+ - The host interprets words such as `continue` with a regular expression and
21
+ uses that classification to reuse a restored task identity.
22
+ - A resumed task is submitted as a generated wrapper. The wrapper can replace
23
+ the original user goal in new completion, workboard, and handoff records.
24
+ - Pending-task consumption checks only phase and session. It does not prove the
25
+ recovered run, epoch, and owner generation.
26
+ - Updating an existing session-context entry changes its timestamp in place,
27
+ but does not move it into chronological order. Tail readers can therefore
28
+ report an older task as latest.
29
+
30
+ ## Required invariants
31
+
32
+ - [x] An active task receives a typed, atomic continuation checkpoint before a
33
+ resumable exit.
34
+ - [x] `/quit`, `/exit`, readline close, and graceful process termination pause
35
+ and preserve the active run. Explicit `/stop`, Ctrl+C, and double-Esc remain
36
+ terminal and delete the pending checkpoint.
37
+ - [x] A checkpoint identifies the project, original goal, session, run, task
38
+ epoch, owner generation, lifecycle phase, exit reason, and capture time.
39
+ - [x] Manual startup automatically adopts a checkpoint explicitly marked for
40
+ restart, without requiring an updater environment variable.
41
+ - [x] Exact continuation context is scoped to the checkpoint session and run.
42
+ A global handoff, ledger, todo tree, or transcript cannot replace it.
43
+ - [x] Generic context restore is orientation only. It does not bind task/todo
44
+ identity or mutate `OMNIUS_SESSION_ID`.
45
+ - [x] Continuation authority comes from typed lifecycle state or an explicit
46
+ command. It never comes from semantic keyword or regular-expression
47
+ classification of user prose.
48
+ - [x] The resumed runner receives the exact original user goal. Progress and
49
+ historical orientation remain separate context.
50
+ - [x] A pending checkpoint is consumed only after the runner proves the same
51
+ session, run, epoch, and owner generation in the running phase.
52
+ - [x] Session-context entries remain ordered by their effective save time after
53
+ merge or replacement.
54
+ - [x] Corrupt, cross-project, incomplete, or identity-mismatched checkpoints
55
+ fail closed and remain available for diagnosis unless explicitly stopped.
56
+
57
+ ## Deterministic verification
58
+
59
+ - [x] Pending checkpoint round-trip and schema validation.
60
+ - [x] Exact four-field adoption match and one-field-at-a-time mismatch table.
61
+ - [x] Quit wiring has no abort/discard path for an active resumable run.
62
+ - [x] Restart continuation remains exact in the presence of a newer handoff,
63
+ higher-scoring stale ledger, unrelated todos, and unrelated visual history.
64
+ - [x] Generic restore cannot bind a subsequent fresh task to historical todos.
65
+ - [x] A resumed run persists the original goal, not a synthetic continuation
66
+ wrapper.
67
+ - [x] Session-context merge reorders the updated entry chronologically.
68
+ - [x] Focused CLI typecheck/build and affected tests pass.
69
+
70
+ ## Delivery evidence
71
+
72
+ Implemented in the CLI session directory, TUI lifecycle coordinator, command
73
+ surface, and runner continuation gate. Verification on 2026-09-03:
74
+
75
+ - Focused CLI interruption, restore, session-diary, and command suites: 52
76
+ passed.
77
+ - Focused orchestrator context and interruption suites: 67 passed.
78
+ - Complete orchestrator suite: 2,292 passed, 14 skipped.
79
+ - Complete CLI suite: 2,425 passed. Two unrelated tests timed out while the CLI
80
+ and orchestrator suites ran concurrently; both passed alone, 35 of 35.
81
+ - CLI and orchestrator typechecks passed.
82
+ - CLI and orchestrator builds passed.
83
+ - A two-process, no-inference harness wrote the checkpoint in one process and
84
+ recovered the exact `harness-session/harness-run/epoch-3` selection in a
85
+ second process.
86
+
87
+ No live inference or service restart was required for this host-side
88
+ state-machine repair.
@@ -0,0 +1,115 @@
1
+ # WO-21: Task convergence and todo scope
2
+
3
+ ## Incident
4
+
5
+ On 2026-09-03, a user reported that Omnius remained at `task 2/8` for about
6
+ 40 turns. The report did not include a screenshot or run artifact, so the
7
+ exact label remains unverified. Omnius has two similar counters:
8
+
9
+ - `tasks 2/8` is the completed-leaf count in the pinned TUI checklist.
10
+ - `Loop intervention 2/8` is the second repetition intervention in a
11
+ model-tier-specific series.
12
+
13
+ The source audit found defects in both paths. These defects are sufficient to
14
+ produce the reported symptom even though they do not prove which counter the
15
+ reporter saw.
16
+
17
+ ## Root causes
18
+
19
+ - A TUI process reuses one todo session across tasks. A fresh runner hides old
20
+ todo IDs in its private view but leaves the persisted checklist unchanged.
21
+ The TUI reads that unchanged file and can display a stale `tasks 2/8` row.
22
+ - Todo tools fall back to one mutable process-global session ID. Concurrent
23
+ parent, Telegram, background, and child runners can redirect one another's
24
+ unscoped reads and writes.
25
+ - Any unique non-noop tool result increments the counter used to permit turn
26
+ extension and brute-force re-engagement. Varying reads, searches, and error
27
+ text therefore masquerade as task advancement.
28
+ - The repeated-loop counter resets after its maximum intervention even though
29
+ no task state changed. Its status says that user guidance was requested, but
30
+ it does not create a user-input boundary.
31
+ - A failed `todo_write` advances the reminder clock. The visible checklist can
32
+ remain unchanged for ten more turns without a reminder.
33
+ - Small-model budget text says that a todo update resets the phase budget, but
34
+ the implementation resets only after a context-tree phase transition.
35
+ - Workboard `lastSubstantiveProgress` treats successful discovery reads as
36
+ progress. This conflicts with the task and completion ledgers, where a read
37
+ is evidence but not advancement.
38
+
39
+ ## Required invariants
40
+
41
+ - [x] Every runner binds todo tools to its own immutable session scope.
42
+ - [x] Model-supplied todo session IDs cannot override the host scope.
43
+ - [x] Concurrent runners cannot redirect one another's todo reads or writes.
44
+ - [x] A fresh task archives the prior checklist and clears the active persisted
45
+ projection so the TUI, runner, REST, and Telegram views agree.
46
+ - [x] Only a confirmed mutation, todo transition, workboard transition,
47
+ assertive verifier receipt, or delivery receipt counts as authoritative task
48
+ progress.
49
+ - [x] Reads, searches, runtime-authored blocks, no-ops, and changing errors do
50
+ not extend the run or re-arm brute-force execution. Entry into the first
51
+ re-engagement cycle is deliberately not gated on prior authoritative
52
+ progress: that cycle is the rescue attempt for a run that has only read.
53
+ If it also advances nothing, re-engagement stops at cycle 2.
54
+ - [x] Repeated stasis creates one latched, model-visible convergence review.
55
+ - [x] The convergence review remains advisory. It does not infer completion,
56
+ manufacture a blocker, or force a user question.
57
+ - [x] The loop intervention maximum does not silently reset without
58
+ authoritative progress.
59
+ - [x] Todo reminders advance only after a successful state-changing write.
60
+ - [x] Budget exhaustion text describes the actual reset condition.
61
+ - [x] Workboard progress metadata uses the same authoritative distinction.
62
+ - [x] Todo stagnation compares completed leaves, matching the TUI counter.
63
+
64
+ ## Status
65
+
66
+ Implemented and verified on 2026-09-03.
67
+
68
+ | Invariant | Implementation | Test |
69
+ | --- | --- | --- |
70
+ | Immutable runner-owned todo scope | `packages/execution/src/tools/todo-write.ts` `bindExecutionScope` | `todo-store.test.ts` "binds todo tools to a host session that model arguments cannot replace" |
71
+ | Concurrent runner isolation | `AgenticRunner` constructor resolves one immutable `_sessionId`; `registerTool` binds it | `todo-store.test.ts` "keeps concurrent runner-scoped todo writes isolated" |
72
+ | Fresh task clears the active projection | `_hidePriorSessionTodosForFreshTask` writes an empty active checklist after archival | `fresh-task-todo-boundary.test.ts` |
73
+ | Typed authoritative progress only | `packages/orchestrator/src/convergence-progress.ts` | `task-convergence-progress.test.ts` (8 cases) |
74
+ | Latched advisory convergence review | `agenticRunner.ts` convergence review block | `task-convergence-progress.test.ts` "latches one advisory review and clears it only after typed progress" |
75
+ | Loop intervention maximum stays latched | `Math.min(maxInterventions, loopInterventionCount + 1)` | `agenticRunner-context-behavior.test.ts` "latches the loop-intervention maximum instead of cycling it back to one" |
76
+ | Workboard progress uses the same distinction | `recordWorkboardToolCall` returns a status-fingerprint transition | `workboard-run-continuity.test.ts` "does not record a successful discovery read as task advancement" |
77
+
78
+ Full suites run green: `@omnius/execution` 1507 passed, `@omnius/orchestrator`
79
+ 2303 passed (200 files, 2 skipped), `omnius` CLI 2428 passed (258 files).
80
+ Typecheck passes for all three packages and `pnpm -r build` completes.
81
+
82
+ The reported counter was never attributed to a specific field run. The evidence
83
+ request below stays open.
84
+
85
+ One correction was made during verification. An earlier draft of this work also
86
+ refused to enter brute-force cycle 1 whenever the primary run recorded no
87
+ authoritative advancement. That inverted the purpose of re-engagement and broke
88
+ eight existing brute-force tests, because a run that has only read is exactly
89
+ the run that still needs one push to act. The cycle-2 gate already bounds the
90
+ thrash this work order set out to stop, so the cycle-1 refusal was removed.
91
+
92
+ ## Deterministic verification
93
+
94
+ - [x] Scoped todo tools ignore conflicting model-supplied session IDs.
95
+ - [x] Concurrent scoped todo tools write isolated session files.
96
+ - [x] A same-session fresh task clears the old visible todo projection after
97
+ archiving it.
98
+ - [x] Forty distinct reads produce zero authoritative progress.
99
+ - [x] Changing failures produce zero authoritative progress.
100
+ - [x] Mutations, todo transitions, workboard transitions, assertive verifiers,
101
+ and delivery receipts produce typed progress.
102
+ - [x] A convergence review latches after the configured unchanged frontier and
103
+ clears only after typed progress.
104
+ - [x] The loop intervention maximum stays latched instead of cycling to one.
105
+ - [x] Focused execution, orchestrator, and CLI tests pass.
106
+ - [x] Affected package typechecks and builds pass.
107
+
108
+ ## Evidence request for exact field attribution
109
+
110
+ If the original run is available, collect only a redacted structural slice:
111
+ the exact counter line or screenshot, Omnius version, model/backend, launch
112
+ surface, incident time and timezone, session/run IDs, five turns before the
113
+ stall through ten turns after it, todo IDs/statuses/revisions, workboard card
114
+ statuses, and completion-ledger statuses. Do not copy a complete `.omnius`
115
+ directory because debug previews can contain user text and source fragments.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.688",
3
+ "version": "1.0.690",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.688",
9
+ "version": "1.0.690",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.688",
3
+ "version": "1.0.690",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/library.js",