omnius 1.0.851 → 1.0.852

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: 37231093 bytes
4
- sha256: 93c9f8bae03b447f603c3245a796b32b7ee51da12389a99929489dcb2335ca27
3
+ size: 37242365 bytes
4
+ sha256: 36c6a7172915a3edc9dc2a355ee9628f64a2d865e8e0cc3547b10e88d37a45e2
package/dist/library.js CHANGED
@@ -343033,13 +343033,15 @@ function parseKeylessInferenceRegistry(html) {
343033
343033
  // packages/orchestrator/dist/inference-provider-error.js
343034
343034
  var object4 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
343035
343035
  var reasons = /* @__PURE__ */ new Set(["unsupported_schema", "request", "rate", "auth", "upstream"]);
343036
- var knownUnsupportedKeywords = /* @__PURE__ */ new Set(["uniqueItems", "rootAnyOf"]);
343036
+ var knownUnsupportedKeywords = /* @__PURE__ */ new Set(["uniqueItems", "rootAnyOf", "requiredAllProperties"]);
343037
+ var optionalPropertyName = /^[A-Za-z_][A-Za-z0-9_-]{0,127}$/;
343037
343038
  var InferenceProviderError = class extends Error {
343038
343039
  status;
343039
343040
  reason;
343040
343041
  retryAfterMs;
343041
343042
  unsupportedKeywords;
343042
- constructor(status2, reason, retryAfterMs, unsupportedKeywords = []) {
343043
+ unsupportedOptionalProperty;
343044
+ constructor(status2, reason, retryAfterMs, unsupportedKeywords = [], unsupportedOptionalProperty) {
343043
343045
  const safeStatus = Number.isInteger(status2) && status2 >= 400 && status2 <= 599 ? status2 : 500;
343044
343046
  const safeReason = reasons.has(reason) ? reason : "upstream";
343045
343047
  super(`Inference provider rejected the request (${safeReason}; HTTP ${safeStatus}).`);
@@ -343047,6 +343049,8 @@ var InferenceProviderError = class extends Error {
343047
343049
  this.status = safeStatus;
343048
343050
  this.reason = safeReason;
343049
343051
  this.unsupportedKeywords = Object.freeze(safeReason === "unsupported_schema" && Array.isArray(unsupportedKeywords) ? [...new Set(unsupportedKeywords.filter((keyword) => knownUnsupportedKeywords.has(keyword)))] : []);
343052
+ if (this.unsupportedKeywords.includes("requiredAllProperties") && typeof unsupportedOptionalProperty === "string" && optionalPropertyName.test(unsupportedOptionalProperty))
343053
+ this.unsupportedOptionalProperty = unsupportedOptionalProperty;
343050
343054
  if (typeof retryAfterMs === "number" && Number.isFinite(retryAfterMs) && retryAfterMs > 0)
343051
343055
  this.retryAfterMs = Math.min(864e5, Math.ceil(retryAfterMs));
343052
343056
  }
@@ -343093,7 +343097,11 @@ function normalizeInferenceProviderError(value, headers) {
343093
343097
  const fields2 = [detail, response ?? {}, value];
343094
343098
  const codes = fields2.flatMap((field) => [code(field.code), code(field.type)]).filter((item) => item !== void 0);
343095
343099
  const knownStatus = fields2.flatMap((field) => [status(field.status), status(field.status_code), status(field.code)]).find((item) => item !== void 0);
343096
- const unsupportedKeywords = [...new Set(fields2.flatMap((field) => unsupportedGrammarKeywords(field.message)))];
343100
+ const missingProperty = detail.type === "invalid_request_error" && detail.param === "schema" && typeof detail.message === "string" ? /^'required' is required to be supplied and to be an array including every key in properties\. Missing '([A-Za-z_][A-Za-z0-9_-]{0,127})'\.$/.exec(detail.message)?.[1] : void 0;
343101
+ const unsupportedKeywords = [.../* @__PURE__ */ new Set([
343102
+ ...fields2.flatMap((field) => unsupportedGrammarKeywords(field.message)),
343103
+ ...missingProperty ? ["requiredAllProperties"] : []
343104
+ ])];
343097
343105
  let reason = "upstream", inferredStatus = 500;
343098
343106
  if (knownStatus === 429 || codes.some((item) => rateCodes.has(item))) {
343099
343107
  reason = "rate";
@@ -343124,7 +343132,7 @@ function normalizeInferenceProviderError(value, headers) {
343124
343132
  }
343125
343133
  }
343126
343134
  if (unsupportedKeywords.length && reason !== "rate" && reason !== "auth")
343127
- return new InferenceProviderError(400, "unsupported_schema", void 0, unsupportedKeywords);
343135
+ return new InferenceProviderError(400, "unsupported_schema", void 0, unsupportedKeywords, missingProperty);
343128
343136
  return new InferenceProviderError(knownStatus ?? inferredStatus, reason, reason === "rate" ? retryAfterMs : void 0);
343129
343137
  }
343130
343138
  function normalizeInferenceHttpSchemaError(httpStatus, responseBody, headers) {
@@ -344148,8 +344156,20 @@ function collectOpenCodeResponsesResponse(response, request, options) {
344148
344156
  }
344149
344157
 
344150
344158
  // packages/orchestrator/dist/provider-schema-adapter.js
344151
- var SUPPORTED_PROVIDER_SCHEMA_ADAPTATIONS = Object.freeze(["uniqueItems", "rootAnyOf"]);
344159
+ var SUPPORTED_PROVIDER_SCHEMA_ADAPTATIONS = Object.freeze(["uniqueItems", "rootAnyOf", "requiredAllProperties"]);
344152
344160
  var object9 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
344161
+ function hasProviderRequiredAllPropertiesConflict(format, missingProperty) {
344162
+ if (format.type !== "json_schema")
344163
+ return false;
344164
+ const wrapper = object9(format.json_schema) ? format.json_schema : format.json_schema === void 0 ? format : void 0;
344165
+ const schema = wrapper?.schema;
344166
+ if (wrapper?.strict !== true || !object9(schema) || schema.type !== "object" || "$ref" in schema || schema.additionalProperties !== false || !object9(schema.properties) || !Array.isArray(schema.required))
344167
+ return false;
344168
+ const properties = schema.properties, required = schema.required, names = Object.keys(properties);
344169
+ if (!names.length || new Set(required).size !== required.length || required.some((name) => typeof name !== "string" || !Object.hasOwn(properties, name)))
344170
+ return false;
344171
+ return missingProperty === void 0 ? names.some((name) => !required.includes(name)) : Object.hasOwn(properties, missingProperty) && !required.includes(missingProperty);
344172
+ }
344153
344173
  function lowerProviderSchema(schema, unsupportedKeywords) {
344154
344174
  const lowered = structuredClone(schema);
344155
344175
  const adaptations = new Set(unsupportedKeywords.filter((keyword) => keyword === "uniqueItems"));
@@ -344197,17 +344217,17 @@ function lowerProviderSchema(schema, unsupportedKeywords) {
344197
344217
  }
344198
344218
  function lowerResponseSchema(schema, unsupportedKeywords) {
344199
344219
  const lowered = lowerProviderSchema(schema, unsupportedKeywords);
344200
- if (!unsupportedKeywords.includes("rootAnyOf") || lowered.type !== "object" || lowered.additionalProperties !== false || !object9(lowered.properties) || !Array.isArray(lowered.required) || !Array.isArray(lowered.anyOf) || !lowered.anyOf.length)
344220
+ if (!unsupportedKeywords.includes("rootAnyOf") || lowered.type !== "object" || "$ref" in lowered || lowered.additionalProperties !== false || !object9(lowered.properties) || !Array.isArray(lowered.required) || !Array.isArray(lowered.anyOf) || !lowered.anyOf.length)
344201
344221
  return lowered;
344202
344222
  const properties = lowered.properties, required = lowered.required;
344203
344223
  const names = Object.keys(properties);
344204
- if (!names.length || names.some((name) => !required.includes(name)) || required.some((name) => typeof name !== "string" || !Object.hasOwn(properties, name)))
344224
+ if (!names.length || new Set(required).size !== required.length || required.some((name) => typeof name !== "string" || !Object.hasOwn(properties, name)))
344205
344225
  return lowered;
344206
344226
  if (!lowered.anyOf.every((branch) => {
344207
- if (!object9(branch) || branch.type !== "object" || branch.additionalProperties !== false || !object9(branch.properties) || !Array.isArray(branch.required))
344227
+ if (!object9(branch) || "$ref" in branch || branch.type !== "object" || branch.additionalProperties !== false || !object9(branch.properties) || !Array.isArray(branch.required))
344208
344228
  return false;
344209
344229
  const branchProperties = branch.properties, branchRequired = branch.required;
344210
- return names.every((name) => Object.hasOwn(branchProperties, name) && branchRequired.includes(name)) && Object.keys(branchProperties).every((name) => names.includes(name));
344230
+ return new Set(branchRequired).size === branchRequired.length && branchRequired.every((name) => typeof name === "string" && Object.hasOwn(branchProperties, name)) && required.every((name) => branchRequired.includes(name)) && names.every((name) => Object.hasOwn(branchProperties, name)) && Object.keys(branchProperties).every((name) => names.includes(name));
344211
344231
  }))
344212
344232
  return lowered;
344213
344233
  delete lowered.anyOf;
@@ -344235,6 +344255,7 @@ var DEFAULTS = Object.freeze({
344235
344255
  providers: [],
344236
344256
  // The verified full native-tool packet takes ~26s on a healthy community route.
344237
344257
  requestTimeoutMs: 45e3,
344258
+ requestTimeoutMsSource: "default",
344238
344259
  totalTimeoutMs: 12e4,
344239
344260
  localTimeoutMs: 2e4
344240
344261
  });
@@ -344341,6 +344362,8 @@ function loadRemoteInferencePolicy(options = {}) {
344341
344362
  if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 100 || value > maximum)
344342
344363
  return disabled();
344343
344364
  result[field] = value;
344365
+ if (field === "requestTimeoutMs")
344366
+ result.requestTimeoutMsSource = "explicit";
344344
344367
  }
344345
344368
  }
344346
344369
  if (selected["providers"] !== void 0) {
@@ -344965,7 +344988,7 @@ function safeFailure(error, request, route) {
344965
344988
  const status2 = errorStatus(error);
344966
344989
  const chain = errorChain(error);
344967
344990
  const upstream429 = status2 === 429 && chain.some((value) => value instanceof InferenceProviderError && value.reason === "upstream");
344968
- const category = upstream429 ? "upstream_unavailable" : status2 === 429 ? "rate_limit" : status2 === 401 || status2 === 403 ? "authentication" : status2 !== void 0 && status2 >= 400 && status2 < 500 ? "request_rejected" : status2 !== void 0 && status2 >= 500 ? "upstream_unavailable" : chain.some((value) => value instanceof AttemptTimeout || object12(value) && (value.name === "TimeoutError" || value.name === "AbortError" || value.code === "ETIMEDOUT")) ? "timeout" : chain.some((value) => value instanceof EmptyInferenceResponse) ? "empty_response" : chain.some((value) => value instanceof SyntaxError || value instanceof InvalidInferenceResponse || value instanceof ExpectedInferenceResponseError || object12(value) && value.name === "OpenAIChatResponseError") ? "invalid_response" : "transport";
344991
+ const category = upstream429 ? "upstream_unavailable" : status2 === 429 ? "rate_limit" : status2 === 401 || status2 === 403 ? "authentication" : status2 !== void 0 && status2 >= 400 && status2 < 500 ? "request_rejected" : status2 !== void 0 && status2 >= 500 ? "upstream_unavailable" : chain.some((value) => value instanceof AttemptTimeout || object12(value) && (value.name === "TimeoutError" || value.name === "AbortError" || value.code === "ETIMEDOUT") || value instanceof Error && /^stream timeout: no response or chunk within [0-9]+s$/.test(value.message)) ? "timeout" : chain.some((value) => value instanceof EmptyInferenceResponse) ? "empty_response" : chain.some((value) => value instanceof SyntaxError || value instanceof InvalidInferenceResponse || value instanceof ExpectedInferenceResponseError || object12(value) && value.name === "OpenAIChatResponseError") ? "invalid_response" : "transport";
344969
344992
  const validation = chain.find((value) => value instanceof ExpectedInferenceResponseError);
344970
344993
  const providerSchemaError = chain.find((value) => value instanceof InferenceProviderError && value.reason === "unsupported_schema");
344971
344994
  const malformedEnvelope = chain.some((value) => object12(value) && value.name === "OpenAIChatResponseError");
@@ -345258,7 +345281,7 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
345258
345281
  if (!remote.chatCompletionStream)
345259
345282
  throw new Error("Remote streaming unavailable.");
345260
345283
  this.recordRoute(candidate, bounded3);
345261
- yield* remote.chatCompletionStream(this.remoteRequest(bounded3, candidate));
345284
+ yield* remote.chatCompletionStream(this.remoteRequest(bounded3, candidate, deadline));
345262
345285
  }.bind(this);
345263
345286
  const streamBudget = Math.min(deadline - this.now(), request.timeoutMs > 0 ? request.timeoutMs : Infinity);
345264
345287
  const raw = this.requireUsableStream(this.boundedStream(request, streamBudget, factory), request);
@@ -345503,8 +345526,14 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
345503
345526
  model: route.model,
345504
345527
  kind: route.keyless ? "keyless" : "configured"
345505
345528
  });
345506
- request.onInferenceRoute?.({ ...this.lastRoute });
345507
- this.options.onRoute?.({ providerId: this.lastRoute.providerId, model: this.lastRoute.model });
345529
+ try {
345530
+ request.onInferenceRoute?.({ ...this.lastRoute });
345531
+ } catch {
345532
+ }
345533
+ try {
345534
+ this.options.onRoute?.({ providerId: this.lastRoute.providerId, model: this.lastRoute.model });
345535
+ } catch {
345536
+ }
345508
345537
  this.lifecycle(request, "selected", route);
345509
345538
  }
345510
345539
  lifecycle(request, phase, route, error) {
@@ -345512,7 +345541,7 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
345512
345541
  if (!request.onInferenceRouteLifecycle)
345513
345542
  return;
345514
345543
  const format = request.responseFormat ?? request.response_format;
345515
- const promptOnly = route?.nativeStructuredOutput === false && (format?.type === "json_schema" || format?.type === "json_object");
345544
+ const promptOnly = route?.nativeStructuredOutput === false && (format?.type === "json_schema" || format?.type === "json_object") || Boolean(route && format && this.schemaRestrictions(route).includes("requiredAllProperties") && hasProviderRequiredAllPropertiesConflict(format));
345516
345545
  const receipt = {
345517
345546
  location: route ? "remote" : "local",
345518
345547
  phase,
@@ -345613,8 +345642,11 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
345613
345642
  return false;
345614
345643
  const keywords = [.../* @__PURE__ */ new Set([...previous, ...added])];
345615
345644
  const format = request.responseFormat ?? request.response_format;
345616
- const changesFormat = format && JSON.stringify(lowerProviderResponseFormat(format, keywords)) !== JSON.stringify(format);
345617
- const changesTools = request.tools.some((tool) => JSON.stringify(lowerProviderSchema(tool.function.parameters, keywords)) !== JSON.stringify(tool.function.parameters));
345645
+ const newPromptOnly = route.nativeStructuredOutput !== false && added.includes("requiredAllProperties") && format && failure.unsupportedOptionalProperty !== void 0 && hasProviderRequiredAllPropertiesConflict(format, failure.unsupportedOptionalProperty);
345646
+ if (added.includes("requiredAllProperties") && !newPromptOnly)
345647
+ return false;
345648
+ const changesFormat = newPromptOnly || format && JSON.stringify(lowerProviderResponseFormat(format, keywords)) !== JSON.stringify(lowerProviderResponseFormat(format, previous));
345649
+ const changesTools = request.tools.some((tool) => JSON.stringify(lowerProviderSchema(tool.function.parameters, keywords)) !== JSON.stringify(lowerProviderSchema(tool.function.parameters, previous)));
345618
345650
  if (!changesFormat && !changesTools)
345619
345651
  return false;
345620
345652
  if (nativeSchemaRestrictions.size >= 256)
@@ -345627,7 +345659,7 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
345627
345659
  const keywords = this.schemaRestrictions(route);
345628
345660
  const format = request.responseFormat ?? request.response_format;
345629
345661
  const structured = format?.type === "json_schema" || format?.type === "json_object";
345630
- const promptOnly = route.nativeStructuredOutput === false && structured;
345662
+ const promptOnly = route.nativeStructuredOutput === false && structured || keywords.includes("requiredAllProperties") && format !== void 0 && hasProviderRequiredAllPropertiesConflict(format);
345631
345663
  if (!keywords.length && !structured)
345632
345664
  return request;
345633
345665
  const loweredFormat = format ? lowerProviderResponseFormat(format, keywords) : void 0;
@@ -345659,7 +345691,7 @@ ${line}`).join("");
345659
345691
  }) } : {}
345660
345692
  };
345661
345693
  }
345662
- remoteRequest(request, route) {
345694
+ remoteRequest(request, route, streamDeadline) {
345663
345695
  const prepared = this.prepareModelContract(request, route);
345664
345696
  const { numCtx: _numCtx, num_ctx: _num_ctx, localAdmissionFailure: _failure, ...host } = prepared;
345665
345697
  const wire = this.scrubber(route)({
@@ -345670,6 +345702,8 @@ ${line}`).join("");
345670
345702
  responseFormat: prepared.responseFormat,
345671
345703
  response_format: prepared.response_format
345672
345704
  });
345705
+ const nativeIdle = streamDeadline !== void 0 && request.nativePlanningStreamIdleTimeoutMs === 9e4 && this.policy.requestTimeoutMsSource === "default";
345706
+ const timeoutMs = nativeIdle ? Math.min(9e4, request.timeoutMs > 0 ? request.timeoutMs : Infinity, Math.max(1, streamDeadline - this.now())) : Math.min(request.timeoutMs, this.policy.requestTimeoutMs);
345673
345707
  return {
345674
345708
  ...host,
345675
345709
  ...wire,
@@ -345683,7 +345717,7 @@ ${line}`).join("");
345683
345717
  remoteClientIdentity: route.keyless?.clientIdentity === "opencode" && route.baseUrl === OPENCODE_INFERENCE_BASE_URL ? "opencode" : void 0,
345684
345718
  remoteOpenCodeApiShape: route.openCodeApiShape,
345685
345719
  ...route.keyless?.directAnswer ? { chatTemplateKwargs: { enable_thinking: false } } : {},
345686
- timeoutMs: Math.min(request.timeoutMs, this.policy.requestTimeoutMs)
345720
+ timeoutMs
345687
345721
  };
345688
345722
  }
345689
345723
  compatible(request, route, includeCooling = false) {
@@ -33370,6 +33370,42 @@
33370
33370
  }
33371
33371
  ]
33372
33372
  },
33373
+ {
33374
+ "id": "guide.work-orders-evidence-telegram-native-planning-live-20261013",
33375
+ "kind": "guide",
33376
+ "title": "Telegram Native Planning Live 20261013",
33377
+ "summary": "Bundled Omnius documentation artifact: docs/work-orders/evidence/telegram-native-planning-live-20261013.json.",
33378
+ "keywords": [
33379
+ "work",
33380
+ "orders",
33381
+ "evidence",
33382
+ "telegram",
33383
+ "native",
33384
+ "planning",
33385
+ "live",
33386
+ "20261013",
33387
+ "json"
33388
+ ],
33389
+ "maturity": "internal",
33390
+ "audiences": [
33391
+ "maintainer",
33392
+ "large-context-agent"
33393
+ ],
33394
+ "layer": "documentation",
33395
+ "interfaces": [
33396
+ {
33397
+ "type": "file",
33398
+ "target": "docs/work-orders/evidence/telegram-native-planning-live-20261013.json"
33399
+ }
33400
+ ],
33401
+ "references": [
33402
+ {
33403
+ "type": "documentation",
33404
+ "target": "docs/work-orders/evidence/telegram-native-planning-live-20261013.json",
33405
+ "relation": "canonical-artifact"
33406
+ }
33407
+ ]
33408
+ },
33373
33409
  {
33374
33410
  "id": "guide.work-orders-evidence-terminal-review-contract-probe-20261012",
33375
33411
  "kind": "guide",
@@ -38327,6 +38363,43 @@
38327
38363
  }
38328
38364
  ]
38329
38365
  },
38366
+ {
38367
+ "id": "guide.work-orders-wo-live-native-cascade-ui-freeze-20261013-uppercase",
38368
+ "kind": "guide",
38369
+ "title": "Live native-planning cascade and TUI responsiveness",
38370
+ "summary": "Status: implementation and live packaged acceptance complete; operator publication/restart pending. Follow-up to the operator’s live 1.0.851 report after the built-in free-model integration; do not substitute another ping-only check.",
38371
+ "keywords": [
38372
+ "work",
38373
+ "orders",
38374
+ "WO",
38375
+ "live",
38376
+ "native",
38377
+ "cascade",
38378
+ "ui",
38379
+ "freeze",
38380
+ "20261013",
38381
+ "md"
38382
+ ],
38383
+ "maturity": "internal",
38384
+ "audiences": [
38385
+ "maintainer",
38386
+ "large-context-agent"
38387
+ ],
38388
+ "layer": "documentation",
38389
+ "interfaces": [
38390
+ {
38391
+ "type": "file",
38392
+ "target": "docs/work-orders/WO-live-native-cascade-ui-freeze-20261013.md"
38393
+ }
38394
+ ],
38395
+ "references": [
38396
+ {
38397
+ "type": "documentation",
38398
+ "target": "docs/work-orders/WO-live-native-cascade-ui-freeze-20261013.md",
38399
+ "relation": "canonical-artifact"
38400
+ }
38401
+ ]
38402
+ },
38330
38403
  {
38331
38404
  "id": "guide.work-orders-wo-native-transport-fresh-install-20261012-uppercase",
38332
38405
  "kind": "guide",
package/docs/DISCOVERY.md CHANGED
@@ -544,6 +544,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
544
544
  | `guide.work-orders-evidence-public-review-after-20261012` | Public Review After 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/public-review-after-20261012.json. |
545
545
  | `guide.work-orders-evidence-public-review-before-20261012` | Public Review Before 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/public-review-before-20261012.json. |
546
546
  | `guide.work-orders-evidence-telegram-all-free-live-20261013` | Telegram All Free Live 20261013 | Bundled Omnius documentation artifact: docs/work-orders/evidence/telegram-all-free-live-20261013.json. |
547
+ | `guide.work-orders-evidence-telegram-native-planning-live-20261013` | Telegram Native Planning Live 20261013 | Bundled Omnius documentation artifact: docs/work-orders/evidence/telegram-native-planning-live-20261013.json. |
547
548
  | `guide.work-orders-evidence-terminal-review-contract-probe-20261012` | Terminal Review Contract Probe 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/terminal-review-contract-probe-20261012.json. |
548
549
  | `guide.work-orders-evidence-terminal-review-error-probe-20261012` | Terminal Review Error Probe 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/terminal-review-error-probe-20261012.json. |
549
550
  | `guide.work-orders-evidence-terminal-review-schema-repair-probe-20261012` | Terminal Review Schema Repair Probe 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/terminal-review-schema-repair-probe-20261012.json. |
@@ -675,6 +676,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
675
676
  | `guide.work-orders-wo-fallback-reply-contracts-20261012-uppercase` | Fallback reply contracts and live Telegram regressions | Status: implemented and verified in source and the freshly installed package. Publishing and restarting the active bot remain user-owned. The subsequent OpenCode-first capability ordering is tracked in its work order; Telegram progress presentation remains explicitly deferred. |
676
677
  | `guide.work-orders-wo-inference-fallback-20261012-uppercase` | Local inference outage fallback | Status: source implementation complete and verified. Installed-runtime activation is separate; the running daemon has not been upgraded or restarted. |
677
678
  | `guide.work-orders-wo-keyless-fallback-coverage-20261012-uppercase` | Keyless automatic fallback coverage and compatibility | Status: implemented and verified. Publication and replacement of the running bot remain user-owned; the running bot has not been restarted by this work. |
679
+ | `guide.work-orders-wo-live-native-cascade-ui-freeze-20261013-uppercase` | Live native-planning cascade and TUI responsiveness | Status: implementation and live packaged acceptance complete; operator publication/restart pending. Follow-up to the operator’s live 1.0.851 report after the built-in free-model integration; do not substitute another ping-only check. |
678
680
  | `guide.work-orders-wo-native-transport-fresh-install-20261012-uppercase` | Native transport failure in the fresh npm installation gate | Status: implemented and verified. Publication remains with the user. |
679
681
  | `guide.work-orders-wo-opencode-all-free-models-20261012-uppercase` | All OpenCode free models in the fallback cascade | Status: implemented and verified. Publication and runtime replacement remain with the user. The subsequent live-reply fixes are tracked separately in fallback reply contracts. The original preferred-first/provider-fairness ordering recorded below has been superseded by benchmark-informed priority at the user's subsequent request. |
680
682
  | `guide.work-orders-wo-opencode-production-compatibility-20261012-uppercase` | OpenCode production request compatibility | Status: implemented and verified. Telegram presentation is also completed. Publication and active-runtime restart remain with the operator. Step's native attention-format compatibility remains unverified after a provider limit; the working cascade can continue to other compatible models. |
@@ -0,0 +1,146 @@
1
+ # Live native-planning cascade and TUI responsiveness
2
+
3
+ Status: implementation and live packaged acceptance complete; operator publication/restart pending. Follow-up to the operator’s live 1.0.851 report after the
4
+ built-in free-model integration; do not substitute another ping-only check.
5
+
6
+ ## Actual live anchors
7
+
8
+ - PID 338848, working directory `telegram_test`, version 1.0.851, bundle SHA256
9
+ `93c9f8bae03b447f603c3245a796b32b7ee51da12389a99929489dcb2335ca27`.
10
+ This matches the previously validated installed candidate: stale deployment
11
+ does not explain the discrepancy.
12
+ - Public input 1002 in the operator’s Case Theory chat entered processing at
13
+ 2026-10-13T08:38:34.455Z. The next input 1003 entered processing at
14
+ 08:44:23.071Z and produced a valid observer/no-reply decision at 08:44:39.619Z.
15
+ - Read-only inspection of the live terminal’s expanded inference block found
16
+ `router-native-requirements`, 272 retained control rows, 4m37s duration:
17
+ local HTTP503 → Muse HTTP400 twice → Step upstream-unavailable HTTP429 →
18
+ Ling upstream-unavailable HTTP429 → MiMo, with first output reported at 277.2s.
19
+ The display reported successful completion with 1207 tokens. Provider400 bodies
20
+ were not retained in the existing durable logs.
21
+ - The separate 16s router block supplied by the operator is a successful
22
+ Muse schema repair, followed by a valid no-reply decision. It is not the
23
+ failing native cascade.
24
+ - Current TUI stdout/stderr are only `/dev/pts/6`; current provider-phase
25
+ diagnostics are not persisted. Existing root crash/session logs predate
26
+ this restart. Broker access logs show422/503 local chat failures without
27
+ model/request correlation, insufficient to classify those refusals.
28
+ - Process sampled at ~1GB RSS and ~12 minutes CPU in 20 minutes of uptime; current
29
+ updates and accepted replies show it is not permanently deadlocked.
30
+ A 3.3GB deferred-memory spool exists, but inspected append/maintenance paths
31
+ do not read it wholesale; do not attribute the freeze to it without proof.
32
+
33
+ ## Ordered repairs and acceptance
34
+
35
+ 1. Reproduce the actual native-requirement producer and independent critic
36
+ through the installed bundle using invented source text and active tasks.
37
+ Keep the full original host schema/owner/scope validator and prohibit
38
+ local inference, native action dispatch and Telegram API sends. Capture
39
+ bounded safe upstream failure diagnostics for these synthetic requests.
40
+ 2. Repair evidenced native grammar/request incompatibilities at the shared
41
+ phase boundary. Preserve host semantic validation, capability/authority,
42
+ provenance and original contract coupling. Validate real responses; no
43
+ mocked availability claim and no unconditional HTTP400/422 bypass.
44
+ 3. Remove repeated formatting of unchanged retained inference transcripts
45
+ during TUI repaint. Preserve full read mode, resize, thinking visibility,
46
+ title time/blink, retention bounds, phase reuse and input handling. Test
47
+ repeated repaint work with large completed native transcripts.
48
+ 4. Add safe durable phase/route diagnostics so future live failures can be
49
+ traced without extracting terminal rows. Do not persist credentials,
50
+ endpoint keys, raw user prompts or private generated transcripts. Optional
51
+ display observers must not fail/replay an inference request.
52
+ 5. Run relevant regressions, real native proposal/critic acceptance, rebuild
53
+ and make scoped verified commits to the tracked branch. Preserve all
54
+ unrelated dirty changes. Publication/restart remains operator-owned.
55
+
56
+ The previous all-model ping harness established attention/reply/review behavior
57
+ at healthy moments; it did not cover native task projection/planning. This
58
+ follow-up closes that coverage gap rather than reasserting the ping results.
59
+
60
+ ## Reproduced causes and repairs
61
+
62
+ The installed native producer reproduced `uniqueItems` rejection, then root
63
+ `anyOf` rejection twice. The optional-field repair exposed the next exact
64
+ upstream error: every property must be required (`activeScopeId` was named).
65
+ The host contract deliberately permits omitted fields; making them required
66
+ would alter its semantics. Recovery now learns that precise incompatibility
67
+ per model/endpoint/API, omits only native schema framing, and preserves the
68
+ original full host schema, parser, tool arguments and independent critic.
69
+ An adaptation must change the previous wire schema before it can justify
70
+ another retry. Recovery remains bounded by three distinct restrictions.
71
+
72
+ A controlled prompt-only request also exposed true raw-stream inactivity:
73
+ HTTP200 followed by the backend's 45-second idle watchdog. It was incorrectly
74
+ reported as generic transport failure. Native planning/review streams now
75
+ allow 90 seconds under the default policy, capped by caller/aggregate deadlines;
76
+ explicit timeout settings and ordinary chat/unary/local paths retain their
77
+ limits. Exact watchdog failures report `timeout`. No undocumented reasoning
78
+ flags were added.
79
+
80
+ The controlled 90-second diagnostic accepted a real 7-obligation/two-method
81
+ proposal through the original parser and admitted an independent critic.
82
+ This diagnostic intentionally omitted native framing at the wire; it is
83
+ recorded separately from automatic production-adapter acceptance.
84
+
85
+ [Safe live receipts](evidence/telegram-native-planning-live-20261013.json)
86
+ contain hashes/metadata for invented fixtures, not private chat transcripts.
87
+
88
+ ## Delivered coherent repairs
89
+
90
+ - `e65ed677`: cache unchanged TUI inference transcript rows; 61 focused checks
91
+ and CLI build passed. This removes repeated formatting work; it does not
92
+ establish that repaint was the sole cause of the reported freeze.
93
+ - `04b4c5e7`: private bounded route traces at
94
+ `.omnius/telegram-inference/routes.jsonl` and isolated optional observers.
95
+ Files use 0600, the directory 0700, pending observations 128 and files 5 MiB
96
+ with one rotated archive. Trace failure cannot fail/replay the request.
97
+ Backend observer 14, trace 20, Bridge integration 22 checks passed; the
98
+ combined focused CLI run passed 105 checks. Stop/custody fences remain.
99
+
100
+ - `42419cd2`: precise optional-schema recovery, ineffective-retry prevention,
101
+ scoped default native stream allowance and correct timeout classification.
102
+ Automatic compiled-workspace live acceptance passed both native phases:
103
+ three distinct HTTP400 capability errors repaired on Muse, then original
104
+ proposal validation and independent critic acceptance, without model failover.
105
+ Final focused verification passed 531 orchestrator + 112 CLI = 643 checks.
106
+ Full workspace rebuild, artifact audit and compiler-free fresh npm install
107
+ passed. The currently running PID 338848 still uses the old `93c9f8...`
108
+ bundle; this pass has neither published nor restarted it.
109
+
110
+ ## Broader regression limits
111
+
112
+ The expanded run found four transport-fixture and two native-intake guard
113
+ failures. An isolated source archive of `e65ed677`, with the original Runner
114
+ rather than dirty/compiled workspace output, reproduced all six failures.
115
+ Three transport fixtures omit the previously required
116
+ `observationSourceMessageIds`; one ambiguity expectation predates the
117
+ advisory-policy change. The two intake guard cases have an existing objective
118
+ contract retention discrepancy. They are recorded as baseline failures and
119
+ were not silently changed to claim a green full suite.
120
+
121
+ ## Final installed-package acceptance
122
+
123
+ The freshly installed tarball used bundle SHA256
124
+ `36c6a7172915a3edc9dc2a355ee9628f64a2d865e8e0cc3547b10e88d37a45e2`.
125
+ A fresh process automatically recovered three distinct schema HTTP400s on Muse
126
+ and retained the selected model throughout. The native proposal took 69.1 seconds,
127
+ parsed five obligations/two methods with new-task continuity; the independent
128
+ critic took 103.9 seconds overall, including 64.6 seconds before HTTP headers,
129
+ and was admitted with method verdict `accept`. Both phases retained the
130
+ original host schemas. Five actual generation POSTs were made; no model or
131
+ metadata reply was mocked, and no local inference, native tools or Telegram
132
+ API sends were performed. This validates production inference/validation
133
+ boundaries, not a fresh Telegram delivery ACK or cross-application task.
134
+
135
+ Reproduce against a fresh isolated installation:
136
+
137
+ ```sh
138
+ node scripts/live-telegram-native-requirements-harness.mjs --run \
139
+ --bundle /path/to/isolated/install/lib/node_modules/omnius/dist/index.js \
140
+ --output /tmp/omnius-native-planning-live.json
141
+ ```
142
+
143
+ The default harness pins Muse and denies alternative models, local inference,
144
+ Telegram API calls and native action dispatch. `--inspect-only` makes no
145
+ network requests. Optional diagnostic flags are recorded separately and are
146
+ not substituted for the automatic installed-package acceptance above.