Skip to content

fix(OMN-18978): name the stage cancelled by the delegation budget - #3390

Merged
jonahgabriel merged 3 commits into
devfrom
jonah/omn-18978-timeout-stage
Oct 4, 2026
Merged

jonahgabriel merged 3 commits into
devfrom
jonah/omn-18978-timeout-stage

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

The live OMN-18978 ticket corrects the original diagnosis: “The real cause is a duplicated rule name that made the terminal itself unconstructible.” AC1, AC2, and AC4 are already checked off; this change addresses the remaining AC3 by naming the observed stage when the handler budget cancels dispatch.

Request-local typed progress follows the handler's child task through bus subscription, publication, terminal waiting and cleanup, and through local child boot, inference and quality-gate evaluation. The innermost cancelled stage survives cleanup and appears in the existing timeout error message. Concurrent requests keep separate progress, and the context resets after dispatch. The bus path reports the caller's observed stage without inferring the remote workflow's stage. Budgets and the accepting path are preserved.

Validation on h201, head 3946c1598ca1e08c2412712c39b4926e1ce362b9, exit 0:

  • test_timeout_stage_omn18978.py: 9 passed, including concurrent cancellations, cleanup preservation, local boot/inference/gate cancellation, and accepting control. Before the boot case was added, the regression file produced 7 failures and 1 passing control against unchanged production code.
  • test_handler_delegate_skill_budget_omn15504.py: 13 passed.
  • Pre-commit and the normal commit hooks passed; strict mypy passed in the normal pre-push hook.

PR/CI state at the last permitted read: unreadable-from-snapshot. The watcher copy's tick, 2026-10-04T21:52:42Z, is outside its eight-minute freshness limit. No deployment or ticket-status change was performed. The launching host owns the landing-controller handoff after this remote lane ends.

Text drafting: deployed delegation run c23ef03c-ec2b-4d04-a3e7-2ab5e61bf884 returned provider_quota_exhausted with no draft and was disposed as ignored/engine_failed. GLM drafting was routed through lab placement: bus placement exited 69 because its dispatch environment was unavailable; the required SSH fallback selected h200. The final placed attempt at the pushed head above exited 20 because the host could not write FETCH_HEAD on its read-only filesystem. No GLM answer was produced; the lane wrote this body from the verified facts.

Evidence-Ticket: OMN-18978
Evidence-Source: OCC#12840

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

⚠️ Architectural Review — WARNINGS

Errors: 0
Warnings: 1

What this checks

Rule Description
ARCH-TOPIC-001 No hardcoded Kafka topic strings in handler code
ARCH-DI-001 No event_bus=None bypass
ARCH-DI-002 No direct Handler instantiation outside workflow_runner/adapters
ARCH-DI-003 No reinvented DI containers
ARCH-TOPIC-002 contract.yaml topics follow `onex.{cmd

ARCH-DI-002: Direct Handler instantiation (warning)\n\n```\nsrc/omnimarket/nodes/node_delegate_skill_orchestrator/ports/port_local_delegation_dispatch.py:976: self._effect_handler = effect_handler or HandlerLlmDelegationCall()

src/omnimarket/nodes/node_delegate_skill_orchestrator/ports/port_local_delegation_dispatch.py:977: self._projection_handler = projection_handler or HandlerProjectionDelegation(
src/omnimarket/nodes/node_delegate_skill_orchestrator/ports/port_local_delegation_dispatch.py:3367: HandlerProjectionLlmCost().project(call_event, self._evidence_db)\n```\n\nHandler classes should be wired only in workflow_runner.py or adapter modules. Direct instantiation elsewhere bypasses the contract system.\n\n

Static architectural lint — no model inference (OMN-14176).

@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

✅ Hostile Reviewer — PASSED

Blocking findings (critical/error): 0
Total findings: 13
Models succeeded: qwen3-review,gpt-oss-review


Gate semantics

Verdict Meaning Blocks merge?
passed >=2 models succeeded, no critical/error findings No
blocked CRITICAL or ERROR findings found Yes
degraded Fewer than 2 models succeeded (infra unavailable/timeout) Yes (OMN-15110)

Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524)

finally:
task.cancel()
with pytest.raises(asyncio.CancelledError):
await task
onexbot-occ-writer Bot added a commit to OmniNode-ai/onex_change_control that referenced this pull request Oct 4, 2026
…nimarket#3390

The declared checks were executed for real in the OmniNode-ai/omnimarket checkout at the PR head by the product-repo OCC receipt runner, and the results written append-only into this companion. Producer-minted PENDING receipts are superseded by a net-new record; no existing receipt was edited.

Ticket: OMN-16859 (AC3b)
Onex-Workflow: OCC Receipt Runner
Onex-Run: https://github.com/OmniNode-ai/omnimarket/actions/runs/37239568135
@jonahgabriel
jonahgabriel enabled auto-merge (squash) October 4, 2026 22:28
jonahgabriel pushed a commit to OmniNode-ai/onex_change_control that referenced this pull request Oct 4, 2026
)

* evidence(OMN-18978): author OCC companion for OmniNode-ai/omnimarket#3390

OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 3946c1598ca1e08c2412712c39b4926e1ce362b9.

* evidence(OMN-18978): self-bind OCC#12840 + rebind contract_sha256

* evidence(OMN-16859): executed test_passes receipts for OmniNode-ai/omnimarket#3390

The declared checks were executed for real in the OmniNode-ai/omnimarket checkout at the PR head by the product-repo OCC receipt runner, and the results written append-only into this companion. Producer-minted PENDING receipts are superseded by a net-new record; no existing receipt was edited.

Ticket: OMN-16859 (AC3b)
Onex-Workflow: OCC Receipt Runner
Onex-Run: https://github.com/OmniNode-ai/omnimarket/actions/runs/37239568135

---------

Co-authored-by: omnimarket-bot <bot@omninode.ai>
Co-authored-by: onexbot-occ-writer[bot] <307849072+onexbot-occ-writer[bot]@users.noreply.github.com>
The check "repo-evidence / dod-verify" on omnimarket PR #3390 at head 06e7efe failed due to the missing contracts/OMN-18978.yaml. This failure also caused Repo Evidence Dependency, Coverage Sweep Gate, and CI Summary to fail. This commit adds contracts/OMN-18978.yaml with one acceptance AC3 and one dod_evidence item, dod-timeout-stage-ac3. The dod_evidence item includes a test_passes check running tests/unit/nodes/node_delegate_skill_orchestrator/test_timeout_stage_omn18978.py.
@jonahgabriel
jonahgabriel merged commit b53a74e into dev Oct 4, 2026
152 of 154 checks passed
@jonahgabriel
jonahgabriel deleted the jonah/omn-18978-timeout-stage branch October 4, 2026 23:19
Patel230 added a commit that referenced this pull request Oct 5, 2026
…-row

The branch sat on #3368's head d7153cf, 21 commits behind dev. Dev
changed port_local_delegation_dispatch.py (#3390, #3382) and the
projection read handler (#3364, #3363), both of which this change
uses; the merge is textually clean, and the metering, dispatch and
projection-read suites were re-run on the merged tree. #3368 is still
unmerged, so its six files stay on this branch unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants