omnius 1.0.764 → 1.0.766

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.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: package/dist/index.js
3
- size: 38698072 bytes
4
- sha256: 8192c91f8ad948db27f44266a332f2cc90c0843963723b11985a651a77af9a87
3
+ size: 38763840 bytes
4
+ sha256: 3199bdafa0335c954b90a33a7627b68596201ba4fb4f11880d72d9ba5debd567
package/dist/library.js CHANGED
@@ -51894,6 +51894,15 @@ var init_browser_action = __esm({
51894
51894
  }
51895
51895
  });
51896
51896
 
51897
+ // packages/execution/dist/tools/email-verification.js
51898
+ var init_email_verification = __esm({
51899
+ "packages/execution/dist/tools/email-verification.js"() {
51900
+ "use strict";
51901
+ init_network_egress_policy();
51902
+ init_playwright_browser();
51903
+ }
51904
+ });
51905
+
51897
51906
  // packages/execution/dist/tools/autoresearch.js
51898
51907
  var init_autoresearch = __esm({
51899
51908
  "packages/execution/dist/tools/autoresearch.js"() {
@@ -297242,6 +297251,7 @@ var init_dist3 = __esm({
297242
297251
  init_ocr_image_advanced();
297243
297252
  init_browser_action();
297244
297253
  init_playwright_browser();
297254
+ init_email_verification();
297245
297255
  init_autoresearch();
297246
297256
  init_scheduler();
297247
297257
  init_reminder();
@@ -35711,6 +35711,84 @@
35711
35711
  }
35712
35712
  ]
35713
35713
  },
35714
+ {
35715
+ "id": "guide.work-orders-runtime-health-remediation-wo-54-case-theory-router-deferral-recovery-uppercase",
35716
+ "kind": "guide",
35717
+ "title": "WO-54: Case Theory router deferral recovery",
35718
+ "summary": "Status: complete Priority: P0 Incident: September 26, 2026, Case Theory messages 455–456 Runtime observed: globally installed Omnius 1.0.764 Owner: current implementation session",
35719
+ "keywords": [
35720
+ "work",
35721
+ "orders",
35722
+ "runtime",
35723
+ "health",
35724
+ "remediation",
35725
+ "WO",
35726
+ "54",
35727
+ "case",
35728
+ "theory",
35729
+ "router",
35730
+ "deferral",
35731
+ "recovery",
35732
+ "md"
35733
+ ],
35734
+ "maturity": "internal",
35735
+ "audiences": [
35736
+ "maintainer",
35737
+ "large-context-agent"
35738
+ ],
35739
+ "layer": "documentation",
35740
+ "interfaces": [
35741
+ {
35742
+ "type": "file",
35743
+ "target": "docs/work-orders/runtime-health-remediation/WO-54-case-theory-router-deferral-recovery.md"
35744
+ }
35745
+ ],
35746
+ "references": [
35747
+ {
35748
+ "type": "documentation",
35749
+ "target": "docs/work-orders/runtime-health-remediation/WO-54-case-theory-router-deferral-recovery.md",
35750
+ "relation": "canonical-artifact"
35751
+ }
35752
+ ]
35753
+ },
35754
+ {
35755
+ "id": "guide.work-orders-runtime-health-remediation-wo-55-telegram-pressure-recovery-uppercase",
35756
+ "kind": "guide",
35757
+ "title": "WO-55: Telegram pressure recovery without silent terminal states",
35758
+ "summary": "Status: complete Priority: P0 Incident: September 26, 2026, Case Theory messages 458-461 Owner: current implementation session",
35759
+ "keywords": [
35760
+ "work",
35761
+ "orders",
35762
+ "runtime",
35763
+ "health",
35764
+ "remediation",
35765
+ "WO",
35766
+ "55",
35767
+ "telegram",
35768
+ "pressure",
35769
+ "recovery",
35770
+ "md"
35771
+ ],
35772
+ "maturity": "internal",
35773
+ "audiences": [
35774
+ "maintainer",
35775
+ "large-context-agent"
35776
+ ],
35777
+ "layer": "documentation",
35778
+ "interfaces": [
35779
+ {
35780
+ "type": "file",
35781
+ "target": "docs/work-orders/runtime-health-remediation/WO-55-telegram-pressure-recovery.md"
35782
+ }
35783
+ ],
35784
+ "references": [
35785
+ {
35786
+ "type": "documentation",
35787
+ "target": "docs/work-orders/runtime-health-remediation/WO-55-telegram-pressure-recovery.md",
35788
+ "relation": "canonical-artifact"
35789
+ }
35790
+ ]
35791
+ },
35714
35792
  {
35715
35793
  "id": "guide.work-orders-telegram-dmn-wo-22-dmn-outreach-and-learning-uppercase",
35716
35794
  "kind": "guide",
@@ -41528,6 +41606,62 @@
41528
41606
  }
41529
41607
  ]
41530
41608
  },
41609
+ {
41610
+ "id": "tool.email-verification",
41611
+ "kind": "tool",
41612
+ "title": "Email Verification",
41613
+ "summary": "email_verification is a directly callable Omnius tool.",
41614
+ "aliases": [
41615
+ "email_verification"
41616
+ ],
41617
+ "keywords": [
41618
+ "tool",
41619
+ "email",
41620
+ "verification"
41621
+ ],
41622
+ "maturity": "stable",
41623
+ "layer": "execution",
41624
+ "audiences": [
41625
+ "coding-agent",
41626
+ "integrator",
41627
+ "service-agent"
41628
+ ],
41629
+ "use_when": [
41630
+ "The caller needs this isolated operation and live metadata confirms direct-call availability"
41631
+ ],
41632
+ "avoid_when": [
41633
+ "The live registry reports the tool unavailable or the caller lacks its required scope"
41634
+ ],
41635
+ "interfaces": [
41636
+ {
41637
+ "type": "rest-schema",
41638
+ "target": "/v1/tools/email_verification"
41639
+ },
41640
+ {
41641
+ "type": "rest-call",
41642
+ "target": "/v1/tools/email_verification/call"
41643
+ }
41644
+ ],
41645
+ "references": [
41646
+ {
41647
+ "type": "source",
41648
+ "target": "packages/execution/src/tools/email-verification.ts",
41649
+ "relation": "implementation"
41650
+ }
41651
+ ],
41652
+ "direct_callable": true,
41653
+ "live_metadata": "GET /v1/tools/email_verification",
41654
+ "source_of_truth": [
41655
+ "packages/execution/src/tools/email-verification.ts",
41656
+ "GET /v1/tools/email_verification"
41657
+ ],
41658
+ "verification": [
41659
+ {
41660
+ "check": "Inspect GET /v1/tools/email_verification before use",
41661
+ "expected": "Schema, security, exposure, and availability match the intended invocation"
41662
+ }
41663
+ ]
41664
+ },
41531
41665
  {
41532
41666
  "id": "tool.embedding-store",
41533
41667
  "kind": "tool",
package/docs/DISCOVERY.md CHANGED
@@ -605,6 +605,8 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
605
605
  | `guide.work-orders-runtime-health-remediation-wo-51-large-telegram-attachments-uppercase` | WO-51: Receive and unpack large Telegram attachments | Status: source repair complete and verified. Publication and Local Bot API live acceptance remain with the operator. |
606
606
  | `guide.work-orders-runtime-health-remediation-wo-52-steering-projection-preservation-uppercase` | WO-52: Preserve required steering instructions in the actual model request | Status: source repair complete; verified and ready for publication. Live acceptance follows the user's publication. |
607
607
  | `guide.work-orders-runtime-health-remediation-wo-53-deferred-reflection-churn-uppercase` | WO-53: Stop duplicate deferred reflection writes | Status: scoped source repair verified; publication remains with the operator. Issue: https://github.com/robit-man/open-agents/issues/3 |
608
+ | `guide.work-orders-runtime-health-remediation-wo-54-case-theory-router-deferral-recovery-uppercase` | WO-54: Case Theory router deferral recovery | Status: complete Priority: P0 Incident: September 26, 2026, Case Theory messages 455–456 Runtime observed: globally installed Omnius 1.0.764 Owner: current implementation session |
609
+ | `guide.work-orders-runtime-health-remediation-wo-55-telegram-pressure-recovery-uppercase` | WO-55: Telegram pressure recovery without silent terminal states | Status: complete Priority: P0 Incident: September 26, 2026, Case Theory messages 458-461 Owner: current implementation session |
608
610
  | `guide.work-orders-telegram-dmn-wo-22-dmn-outreach-and-learning-uppercase` | WO-22: DMN outreach, DM sharing, and outcome learning | On 2026-09-03 at 17:07 PDT the bot posted in the OMNIUS group without being addressed. The operator asked whether this was self-induced reflection. |
609
611
  | `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. |
610
612
  | `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 |
@@ -766,6 +768,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
766
768
  | `tool.desktop-describe` | Desktop Describe | desktop_describe is a directly callable Omnius tool. |
767
769
  | `tool.diagnostic` | Diagnostic | diagnostic is a directly callable Omnius tool. |
768
770
  | `tool.document` | Document | document is a directly callable Omnius tool. |
771
+ | `tool.email-verification` | Email Verification | email_verification is a directly callable Omnius tool. |
769
772
  | `tool.embedding-store` | Embedding Store | embedding_store is a directly callable Omnius tool. |
770
773
  | `tool.enter-worktree` | Enter Worktree | enter_worktree is a directly callable Omnius tool. |
771
774
  | `tool.exit-worktree` | Exit Worktree | exit_worktree is a directly callable Omnius tool. |
@@ -4,6 +4,14 @@
4
4
  **Checked-item rule:** code, focused tests, and named evidence must all exist
5
5
  **Last reconciled:** 2026-09-05
6
6
 
7
+ ## September 26 Case Theory pressure recovery
8
+
9
+ - [x] [WO-55: Telegram pressure recovery without silent terminal states](WO-55-telegram-pressure-recovery.md): generation-fenced recovery for silent inference, stale active-runner decisions, terminal review, continuation, and exact Telegram delivery receipts.
10
+
11
+ ## September 26 Case Theory router deferral recovery
12
+
13
+ - [x] [WO-54: Case Theory router deferral recovery](WO-54-case-theory-router-deferral-recovery.md): exact task-identity retirement, sequential mixed-domain repair, one scheduler-owned recovery with continuous typing and truthful exhaustion, plus canonical receipt-backed URLs with inference review and final fail-closed withholding. Implemented in `d6a6cb6e`; 251 focused Telegram tests and CLI build passed.
14
+
7
15
  ## September 5 runtime 1.0.701 rapid churn repair
8
16
 
9
17
  - [x] [WO-53: deferred reflection churn](WO-53-deferred-reflection-churn.md): persistent scoped revision receipts prevent repeated unchanged reflection appends; seven regressions and workspace build passed. [Issue #3](https://github.com/robit-man/open-agents/issues/3) retains the separate context-recovery investigation and corrected budget findings. Existing backlog and live runtime are unchanged.
@@ -0,0 +1,291 @@
1
+ # WO-54: Case Theory router deferral recovery
2
+
3
+ **Status:** complete
4
+ **Priority:** P0
5
+ **Incident:** September 26, 2026, Case Theory messages 455–456
6
+ **Runtime observed:** globally installed Omnius 1.0.764
7
+ **Owner:** current implementation session
8
+
9
+ ## Objective
10
+
11
+ Make an inference-authorized Telegram request survive typed-router repair without
12
+ leaking completed task state, silently terminating, or losing its working
13
+ indicator. Preserve the existing rule that the model—not keywords or a host
14
+ claim gate—decides whether a message warrants a reply and what work it needs.
15
+
16
+ Also make outbound Telegram URLs evidence-backed and cleanly rendered. A URL
17
+ may reach a visible Telegram message only after a successful retrieval receipt
18
+ establishes the final resolved target, followed by an inference review of
19
+ whether that verified source actually supports the surrounding answer. This is
20
+ a transport/source-evidence boundary, not a lexical factual-truth classifier.
21
+
22
+ ## Production evidence
23
+
24
+ The Case Theory bot received and bundled:
25
+
26
+ - message 455: `sure dig deeper`
27
+ - message 456, replying to bot message 454: a request for deeper analysis and
28
+ suggestions about focus, initial construction, and later scaling
29
+
30
+ The intake ledger records dispatch at `2026-09-27T02:03:15.566Z` and terminal
31
+ deferral at `2026-09-27T02:04:25.423Z`. The Ollama broker completed three
32
+ `POST /api/chat` calls with HTTP 200 during that interval. The bot health file
33
+ remained in `polling` with zero consecutive poll failures. This was therefore
34
+ not a dead bot, an unadmitted queue item, or a GPU wait.
35
+
36
+ Durable conversation state retained this obsolete task after reply 454 had
37
+ already delivered its requested links and ARR:
38
+
39
+ ```text
40
+ taskId: tgtask-1a276c4b0e77fb77d696
41
+ inputId: telegram:chat:-1003960149435:0:450
42
+ goalText: get me links to each, and ARR for each
43
+ state: open
44
+ ```
45
+
46
+ Reply 454 also exposed the current unsafe URL fallback in visible output, for
47
+ example `—relativity.com (unverified URL: https://www.relativity.com/)`. The
48
+ fallback both admitted an unverified URL and mangled the intended Markdown/
49
+ Telegram presentation. Similar entries were emitted for Reveal and Everlaw.
50
+
51
+ The production intake and conversation evidence lives outside this repository
52
+ under the `telegram_test/.omnius` runtime. Do not copy private transcripts into
53
+ fixtures; use sanitized deterministic reproductions.
54
+
55
+ ## Full root-cause chain
56
+
57
+ 1. Message 450 created an open action task.
58
+ 2. The retry at message 453 was admitted through the quick-chat path and reply
59
+ 454 visibly fulfilled the old request.
60
+ 3. The successful quick-chat return path consumed intake records but did not
61
+ retire the model-cited open task. The action-task delivery path does perform
62
+ retirement, so lifecycle behavior differs by delivery path.
63
+ 4. Messages 455–456 therefore received stale `active-task:*` evidence and an
64
+ obsolete active scope anchored to message 450.
65
+ 5. The initial router and its repairs recognized the new deeper-analysis turn,
66
+ but their typed fields did not converge on one accepted contract. At least
67
+ one repair labeled inline research as external `delivery`, contrary to the
68
+ action-plan prompt's read-only/observation semantics.
69
+ 6. Domain repair is brittle: repair is attempted only when every current issue
70
+ belongs to one domain. A mixed attention/action failure cannot be repaired
71
+ attention-first and then action-plan-second.
72
+ 7. After action-plan reconciliation, the final validation result is reduced to
73
+ `.decision`; final issue codes and the rejected repaired fragment are not
74
+ retained in diagnostics. The exact last rejection is consequently lost.
75
+ 8. Foreground router recovery then marks the intakes `deferred`, stops the
76
+ typing lease, and returns without putting the exact bounded work snapshot
77
+ back into the scheduler. `deferred` is therefore terminal in practice even
78
+ though its wording claims the unresolved task was retained.
79
+ 9. The user sees a planning card stop, no typing indication, and no reply.
80
+ 10. Separately, final Telegram delivery currently rewrites URLs lacking fetch
81
+ receipts into visible `unverified URL` annotations. This treats failed
82
+ provenance validation as presentational text instead of returning the
83
+ candidate to model self-review, and the rewrite can corrupt Markdown link
84
+ structure before Telegram HTML conversion.
85
+ 11. The rewrite happened before `convertMarkdownToTelegramHTML`: an unverified
86
+ Markdown destination was replaced with a visible inline-code URL, then the
87
+ Telegram renderer faithfully emitted the mangled annotation. Domain-shaped
88
+ link labels such as `relativity.com` could remain auto-linkable even when
89
+ the `https://` destination itself was demoted.
90
+ 12. Successful `web_fetch` calls already emitted signed-shape transport
91
+ receipts, but the terminal metacognitive reviewer did not receive a
92
+ candidate-specific URL admission receipt. It could therefore judge prose
93
+ completion without explicitly reconciling each cited URL against the exact
94
+ fetched final target and source observations.
95
+ 13. Quick chat has no retrieval tools, yet its independent semantic reviewer
96
+ was not told that a source-bearing answer must continue into the action
97
+ path. Its final boundary could only mangle an unfetched link, not obtain and
98
+ assess the evidence needed to support it.
99
+ 14. The initial repair covered the normal action, quick-chat, and admin-agent
100
+ completion boundaries, but two secondary model-authored delivery paths
101
+ remained outside that boundary: autonomous reflection follow-ups and the
102
+ model-callable Telegram `send_message`/message-edit actions.
103
+ 15. Reflection follow-ups run without tools, so they cannot obtain a current-run
104
+ WebFetch receipt. Their discretion prompt did not make that limitation
105
+ explicit and their selected text was sent directly after room/evidence
106
+ validation.
107
+ 16. Direct Telegram send/edit actions are effects performed inside an active
108
+ tool loop, before the terminal metacognitive review. Their text and media
109
+ captions therefore cannot honestly claim the final review that normal
110
+ answer delivery receives, even when another tool fetched a URL earlier.
111
+ 17. A complete invariant must consequently cover every model-authored text
112
+ effect, not merely the normal final-answer function: no-tools inference must
113
+ decline link-bearing outreach, and pre-review direct-effect tools must reject
114
+ link-bearing text/captions and return a recoverable tool error directing the
115
+ model to the normal receipt-backed reviewed delivery path.
116
+
117
+ ## Required invariants
118
+
119
+ - No deterministic keyword/direct-mention/claim gate may manufacture reply
120
+ authority or semantic task completion.
121
+ - Task retirement must be based on a fresh typed model review plus exact task
122
+ identity evidence, never merely on text similarity or the presence of a
123
+ visible message.
124
+ - Repairs may preserve independently valid model-authored fields, but must not
125
+ silently rewrite semantic decisions.
126
+ - Every queued retry must be bounded, idempotent per exact intake, and use the
127
+ normal session scheduler; no detached inference loops.
128
+ - A deferred foreground turn must either have scheduled continuation evidence
129
+ or expose a truthful terminal/blocked state. It must not look actively
130
+ retained while having no path to run again.
131
+ - The Telegram typing lease must remain active across a scheduled recovery and
132
+ stop only on delivery, a genuine no-reply decision, cancellation, supersession,
133
+ or exhausted bounded recovery.
134
+ - No live inference is required for repository acceptance. Tests use injected
135
+ model responses and mocked Telegram transport.
136
+ - Every assistant-authored visible URL must bind to a successful retrieval
137
+ receipt for its normalized final URL. Redirects must bind the emitted link to
138
+ the verified final target, not merely the requested target.
139
+ - A verified URL receipt establishes reachability and source identity only. A
140
+ fresh inference review must still judge whether the source supports the
141
+ adjacent answer claim; the host must not infer relevance from domains,
142
+ keywords, or URL shapes.
143
+ - Failed/dead/invalid links must return to bounded self-review for revision.
144
+ They must never be surfaced as an `unverified URL` annotation, malformed
145
+ pseudo-link, or invented replacement.
146
+
147
+ ## Implementation plan and durable checklist
148
+
149
+ - [x] Add a sanitized regression in which a model-cited open task is fulfilled
150
+ by a reviewed quick-chat reply; assert the exact task is retired.
151
+ - [x] Add a control proving an unrelated open task is not cleared merely
152
+ because some quick-chat reply was delivered.
153
+ - [x] Unify task retirement behind an exact task-identity helper used by both
154
+ quick-chat and action delivery paths.
155
+ - [x] Partition mixed validation issues and reconcile attention and action-plan
156
+ domains sequentially while keeping all semantic fields model-authored.
157
+ - [x] Revalidate after every repair and retain final repair-stage issue codes
158
+ plus bounded output previews in operator diagnostics.
159
+ - [x] Add mixed-domain, successful sequential repair, and still-invalid final
160
+ repair regression tests.
161
+ - [x] Add a bounded scheduler-owned router recovery attempt to the queued work
162
+ record. Preserve exact intake identity and causal bundle; do not create a
163
+ new visible activity card for each attempt.
164
+ - [x] Keep the typing lease alive while that recovery remains scheduled.
165
+ - [x] On recovery exhaustion, persist a truthful terminal diagnostic including
166
+ the final validation issues and stop typing exactly once.
167
+ - [x] Add retry-success, retry-exhaustion, no-duplicate-reply, no-runaway-card,
168
+ cancellation, and restart/persisted-intake coverage.
169
+ - [x] Trace `enforceTelegramReplyLinkEvidence` and Markdown-to-Telegram HTML
170
+ ordering against the exact message-454 corruption; record the complete
171
+ receipt/rewrite/review root cause here.
172
+ - [x] Replace visible `unverified URL` rewriting with a bounded self-review
173
+ contract supplied with exact successful/failed URL receipts. Require the
174
+ model to retain only supported verified links or revise the prose without
175
+ a URL; never manufacture a replacement link.
176
+ - [x] Enforce the final send boundary so an inference-review failure cannot
177
+ leak an unverified URL. Preserve useful prose while withholding the
178
+ unsupported link and retain a truthful diagnostic receipt.
179
+ - [x] Add regressions for live 2xx receipts, redirects to a canonical final
180
+ URL, 404/5xx/network failure, a syntactically invalid URL, Markdown links,
181
+ bare URLs, punctuation adjacency, duplicate URLs, and Telegram HTML
182
+ escaping/rendering. Assert zero visible `unverified URL` annotations.
183
+ - [x] Verify that URL self-review is bounded, cannot recursively trigger its
184
+ own link review, and cannot duplicate a visible Telegram reply.
185
+ - [x] Run focused Telegram routing, intake, task lifecycle, working-indicator,
186
+ verified-link, Markdown rendering, and delivery suites.
187
+ - [x] Run CLI typecheck/build and the complete CLI test suite if focused tests
188
+ pass.
189
+ - [x] Independently review the resulting diff for forced-reply behavior,
190
+ unbounded retries, stale scope leakage, and typing ownership regressions.
191
+ - [x] Update this work order with exact verification evidence, commit hash, and
192
+ delivery state; then mark the tracker item complete.
193
+
194
+ ### Post-closeout all-path URL audit
195
+
196
+ - [x] State in the reflection discretion prompt that the no-tools path has no
197
+ URL receipts and must choose silence when a useful follow-up requires a
198
+ destination.
199
+ - [x] Fail closed on the complete reflection message when its typed decision
200
+ nevertheless contains an external URL/domain; do not strip a destination
201
+ and send semantically damaged prose.
202
+ - [x] Reject link-bearing `send_message`, `edit_message_text`, and
203
+ `edit_message_caption` tool effects before dry-run or Telegram API I/O,
204
+ because those effects occur before terminal source-support review.
205
+ - [x] Apply the same rejection to captions supplied through model-callable
206
+ Telegram file/media delivery tools.
207
+ - [x] Return a recoverable tool error that tells the agent to fetch, inspect,
208
+ and allow the normal terminal reviewer/final-response path to deliver the
209
+ canonical receipt-bound URL; do not invent or silently rewrite a link.
210
+ - [x] Add regressions proving no Telegram API call occurs for bypass attempts,
211
+ ordinary link-free tool effects remain available, and a reflection
212
+ decision cannot leak or mangle an unverified URL.
213
+ - [x] Re-run the focused URL, reflection, Telegram-tool, and build gates; commit
214
+ and push the scoped follow-up without touching publish-version files.
215
+
216
+ ## Implemented behavior
217
+
218
+ - A fulfilled typed review now retires a prior open task only when the admitted
219
+ decision cites that exact `active-task:*` identity (or owns the exact original
220
+ input). Unrelated tasks survive.
221
+ - Mixed router issues are partitioned. Attention is repaired and revalidated
222
+ first; a still-invalid action plan is then repaired without reopening reply
223
+ authority. Final stage, issue codes, and bounded raw preview remain available
224
+ in diagnostics.
225
+ - A foreground inference-unavailable result gets one normal-scheduler replay of
226
+ the same input and causal bundle. The original completion promise and typing
227
+ lease survive the handoff. A new activity card is not registered. Success
228
+ delivers once; exhaustion records a failed terminal intake with exact issue
229
+ codes. Authenticated admin DMs retain their existing task-safe direct
230
+ admission instead of entering this public-group recovery path.
231
+ - Terminal action review receives a candidate URL admission receipt, the exact
232
+ current-run WebFetch receipts bound to those URLs, and explicit instructions
233
+ to assess source identity, relevance, and adjacent-claim support. Missing
234
+ evidence selects model-authored continuation, not host-authored completion.
235
+ - Quick-chat review knows it has no retrieval receipts and must select a typed
236
+ action continuation when a source is needed.
237
+ - The final transport boundary emits only canonical final URLs from successful
238
+ current-run receipts. It withholds unfetched, dead, malformed, alternate-
239
+ scheme, domain-shaped, and auto-linkable destinations without exposing the
240
+ old `unverified URL` annotation. A typed receipt and operator count preserve
241
+ the failure evidence.
242
+
243
+ ## Verification evidence
244
+
245
+ - `pnpm --filter omnius build` — passed.
246
+ - Seven focused Telegram files — 251 tests passed, including Case Theory mixed
247
+ repair, scheduled recovery success/exhaustion, task retirement, typing,
248
+ terminal metacognition, quick chat, canonical URL delivery, and observability.
249
+ - `telegram-intake-presentation.test.ts` — 7 tests passed after preserving the
250
+ authenticated-admin degraded admission path.
251
+ - Complete CLI suite was executed: 2,902 tests passed. Three unrelated existing
252
+ UI assertions remain red (`brand-palette`, `live-media-status`, and
253
+ `tui-resize-stability`); the one initially affected Telegram presentation test
254
+ was corrected and passes focused. No live model inference, Telegram replay,
255
+ npm publication, global-package mutation, or daemon restart was performed.
256
+ - Implementation commit: `d6a6cb6e` (`fix telegram router recovery and link
257
+ evidence`).
258
+ - Post-closeout all-path audit: 217/217 focused tests passed across the complete
259
+ Telegram bridge suite, verified-link delivery, terminal/streamed delivery,
260
+ and observability. `pnpm --filter omnius build` passed. The audit additionally
261
+ covers public live previews, private native drafts, no-tools reflection,
262
+ direct message/edit/button effects, and media captions. No live inference,
263
+ Telegram write, npm publication, installed-package mutation, or daemon
264
+ restart was performed.
265
+ - The complete CLI suite was rerun after the all-path audit: 2,906/2,909 tests
266
+ passed. The only failures are the same three unrelated pre-existing TUI
267
+ assertions (`brand-palette`, `live-media-status`, and
268
+ `tui-resize-stability`); no new failure was introduced.
269
+ - All-path URL audit implementation commit: `61070db4` (`fix telegram URL
270
+ review bypasses`).
271
+
272
+ ## Primary source targets
273
+
274
+ - `packages/cli/src/tui/telegram-bridge.ts`
275
+ - quick-chat delivery lifecycle
276
+ - open-task identity/retirement
277
+ - typed decision validation and domain reconciliation
278
+ - router-recovery scheduling and typing ownership
279
+ - bounded diagnostics
280
+ - verified URL receipt collection, self-review, and final HTML delivery
281
+ - `packages/cli/tests/telegram-bot-api-10.test.ts`
282
+ - `packages/cli/tests/telegram-working-indicator.test.ts`
283
+ - Additional focused test file only if isolation materially improves clarity.
284
+
285
+ ## Publication and runtime boundary
286
+
287
+ Repository implementation, tests, a scoped commit, and push to `origin/main`
288
+ are authorized by the repository policy. Do not publish npm, edit the installed
289
+ global package, restart the live Telegram instance, mutate its conversation
290
+ state, or replay a live message as part of this work order. The user retains
291
+ publication and field-acceptance authority.
@@ -0,0 +1,122 @@
1
+ # WO-55: Telegram pressure recovery without silent terminal states
2
+
3
+ **Status:** complete
4
+ **Priority:** P0
5
+ **Incident:** September 26, 2026, Case Theory messages 458-461
6
+ **Owner:** current implementation session
7
+
8
+ ## Objective
9
+
10
+ Keep one inference-authorized Telegram turn recoverable across broker pressure,
11
+ silent model streams, invalid router contracts, terminal-review unavailability,
12
+ and retryable Bot API failures. Recovery must retain the exact intake and exact
13
+ generated payload, remain generation-fenced, and eventually return to inference
14
+ or delivery without manufacturing canned replies or host-authored semantic
15
+ decisions.
16
+
17
+ ## Confirmed root-cause chain
18
+
19
+ 1. Case Theory admitted a direct research follow-up and ran a long tool-backed
20
+ foreground task under substantial model/context pressure.
21
+ 2. The runner produced substantive final text and crossed its internal terminal
22
+ boundary before ordinary Telegram text transport ran.
23
+ 3. Runner `visible_response` evidence describes generated model-visible text;
24
+ the ordinary Telegram message receipt is recorded later in a separate turn
25
+ delivery ledger. The two lifecycles were presented as one completed turn
26
+ even when no Telegram message ID existed.
27
+ 4. Retryable/ambiguous delivery ledger states returned `null`, after which the
28
+ outer path could label the activity complete without consuming the reply
29
+ owner or scheduling exact-payload recovery.
30
+ 5. A fresh terminal metacognitive review returning no typed contract set the
31
+ intake to `deferred` but deliberately scheduled no continuation.
32
+ 6. Incomplete terminal receipts and pre-terminal runner errors used the same
33
+ deferred-without-work pattern.
34
+ 7. The metacognitive continuation counter became a terminal three-cycle cap
35
+ even when fresh inference still selected `continue`.
36
+ 8. Router recovery made one scheduler replay, then converted another invalid or
37
+ unavailable contract into a terminal failed intake.
38
+ 9. A follow-up routed while the old runner was settling could receive a
39
+ no-reply decision against the old active-run snapshot. If the runner exited
40
+ before that decision returned, the bridge consumed the follow-up instead of
41
+ re-running inference against the new terminal/open-task state.
42
+ 10. The stale-sub-agent watchdog explicitly exempted `waitingForInference`,
43
+ while Telegram action runners set `requestTimeoutMs: 0`. A silent admitted
44
+ stream could therefore pin its chat, typing lease, queue/admission slot, and
45
+ inference-pressure lease forever.
46
+ 11. Late settlement cleanup was not identity-conditional, so simply freeing a
47
+ wedged generation could let its eventual `finally` delete newer generation
48
+ state.
49
+
50
+ ## Required invariants
51
+
52
+ - Reply authority, continuation, completion, and no-reply remain inference
53
+ decisions. Lifecycle recovery may retry an unresolved decision but cannot
54
+ invent one.
55
+ - No generated acknowledgment or canned progress reply is introduced.
56
+ - Every nonterminal intake has concrete scheduled work, an active generation,
57
+ or an explicit recoverable delivery-reconciliation state.
58
+ - A router decision made for a runner that settled before the decision returned
59
+ is stale control evidence and must be inferred again.
60
+ - Broker/capacity and typed-contract failures retry through the bounded session
61
+ scheduler with capped backoff; they never spin detached inference loops.
62
+ - A fresh metacognitive `continue` decision is obeyed regardless of how many
63
+ earlier cycles ran. The counter controls backoff/telemetry, not semantics.
64
+ - Silent inference has a bounded progress epoch. Expiry aborts and fences the
65
+ old generation, releases local admission, and requeues the exact intake.
66
+ - Late events and cleanup from a retired generation cannot mutate or delete its
67
+ replacement.
68
+ - Typing is present while a user-facing generation or recovery attempt is
69
+ actively admitted, and is stopped during true cancellation or terminal
70
+ delivery.
71
+ - Known pre-acceptance/rate-limit Telegram failures retry the same immutable
72
+ delivery operation. A stored accepted message ID is locally reconciled to a
73
+ receipt without resending.
74
+ - Transport ambiguity is never blindly resent. It becomes an explicit durable
75
+ reconciliation state with the intake and payload retained, rather than a
76
+ false completion or invisible wait.
77
+
78
+ ## Implementation checklist
79
+
80
+ - [x] Make router recovery durable and backoff-scheduled instead of terminally
81
+ exhausted.
82
+ - [x] Re-run stale active-runner no-reply decisions after runner settlement.
83
+ - [x] Requeue terminal-review, incomplete-terminal, and safe pre-action fatal
84
+ paths instead of writing inert `deferred` records.
85
+ - [x] Remove the deterministic metacognitive continuation stop; retain bounded
86
+ scheduler backoff and observability.
87
+ - [x] Retire silent admitted inference after a bounded meaningful-progress
88
+ epoch and generation-fence every late callback/finalizer.
89
+ - [x] Make old-generation cleanup conditional on ownership of the current map
90
+ entry.
91
+ - [x] Reconcile delivery records that already contain an accepted Telegram
92
+ message ID without another network send.
93
+ - [x] Retry known pre-acceptance/rate-limit failures using the same immutable
94
+ delivery operation and payload.
95
+ - [x] Keep ambiguous delivery explicit and durable for operator reconciliation
96
+ without blind resend or false completion.
97
+ - [x] Merge a recovering router snapshot behind newer same-session input so
98
+ neither intake overwrites the other and the newest retains decision
99
+ ownership.
100
+ - [x] Add deterministic regressions for every recovery boundary above.
101
+ - [x] Run focused Telegram lifecycle, intake, terminal-delivery, transport,
102
+ continuity, and typing suites.
103
+ - [x] Run the CLI build and workspace build, review the scoped diff, commit, and
104
+ push without touching publication/version files.
105
+
106
+ ## Verification evidence
107
+
108
+ - `pnpm --filter @omnius/orchestrator exec vitest run tests/inference-pressure.test.ts --reporter=dot`
109
+ passed 9/9 tests, including immediate lease release when an unresponsive
110
+ backend is aborted.
111
+ - The focused Telegram command covering steering finalization, Bot API routing,
112
+ lifecycle leak prevention, delivery continuity, transport contracts,
113
+ terminal delivery, and working indicators passed 263/263 tests across seven
114
+ files.
115
+ - `pnpm -r build` passed all 11 selected workspace projects, including the
116
+ orchestrator, CLI, API, and worker TypeScript builds.
117
+ - Deterministic regressions cover stale no-reply inference, silent admitted
118
+ generation retirement, exact-intake recovery, continuation past cycle three,
119
+ concurrent newer-intake merging, 429 exact-payload retry, accepted-receipt
120
+ restart reconciliation, and process pressure-lease release.
121
+ - No canned progress response, deterministic semantic reply gate, npm publish,
122
+ global install, daemon restart, or live Telegram mutation was added or run.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.764",
3
+ "version": "1.0.766",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.764",
9
+ "version": "1.0.766",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
@@ -2664,9 +2664,9 @@
2664
2664
  }
2665
2665
  },
2666
2666
  "node_modules/ansi-regex": {
2667
- "version": "6.3.0",
2668
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.3.0.tgz",
2669
- "integrity": "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ==",
2667
+ "version": "6.4.0",
2668
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.4.0.tgz",
2669
+ "integrity": "sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw==",
2670
2670
  "license": "MIT",
2671
2671
  "engines": {
2672
2672
  "node": ">=12"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.764",
3
+ "version": "1.0.766",
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",