Skip to content

feat(combo): add Guarded Priority routing - #9682

Closed
xz-dev wants to merge 2 commits into
diegosouzapw:release/v3.8.50from
xz-dev:feat/combo-hard-offline-rules
Closed

xz-dev wants to merge 2 commits into
diegosouzapw:release/v3.8.50from
xz-dev:feat/combo-hard-offline-rules

Conversation

@xz-dev

@xz-dev xz-dev commented Aug 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds Guarded Priority, a dedicated Combo routing strategy for cost-safe ordered fallback.

  • Always dispatches the highest-priority eligible child.
  • Returns non-matching failures unchanged; transient disconnects, timeouts, plain 429/408/502 and other failures cannot spill into later paid nodes.
  • Only a matching Hard Offline condition may cool the selected account/node and advance.
  • Supports explicit quota/account-unavailable signals, authoritative HTTP 503, and bounded Safe JSON Logic.
  • Defaults Hard Offline cooldown to five minutes while preserving explicit persisted values.
  • Keeps nested paid pools opaque through nestedComboMode: execute and rejects flattening, hedging, shadow routing, pin/reordering bypasses.
  • Adds a dedicated Dashboard configuration stage; ordinary Priority remains unchanged.

Closes #9677.

Verification

  • 44 focused runtime/schema/draft/request-path tests pass.
  • 2 Dashboard component tests pass.
  • Actual chat-route tests cover dynamic unpinned A/B pools, no-spill non-matches, matching 503 advancement, global fallback suppression, pre-dispatch unavailability, and ordinary Priority controls.
  • Mutation checks prove account-level and global-fallback guards are load-bearing.
  • Portable test harness passes from a second absolute checkout path.
  • combos/page.tsx remains within its frozen file-size baseline (4646/4647).
  • Prettier, scoped ESLint, locale parsing, tracked-artifact and diff checks pass.

Known release-base drift

Repository-wide gates still report unrelated existing release/v3.8.50 issues (including the missing antigravityProjectPersistence.ts, duplicate migration 134, unrelated frozen file-size drift, and existing docs/quality failures). No baseline was weakened or rebased in this PR.

@xz-dev
xz-dev requested a review from diegosouzapw as a code owner August 7, 2026 05:27
@xz-dev
xz-dev force-pushed the feat/combo-hard-offline-rules branch from 90b58fe to d63b6de Compare August 7, 2026 11:21
@xz-dev xz-dev changed the title feat(combo): add hard offline rules for ordered nodes feat(combo): add Guarded Priority routing Aug 7, 2026
@xz-dev

xz-dev commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

Guarded Priority follow-up deployed from the complete production patch stack.

Deployment receipt:

  • Approved PR head: d63b6dea911dcc0a150a814cbf25561a9466aea9 (single compact commit)
  • Production integration: 25f375485ff61e2d49a6047451b2540a77c0d96d over production parent 329fe20fb61a4b0d909bcdac4046ecd6bcebccde
  • GitHub Actions: https://github.com/xz-dev/OmniRoute/actions/runs/31175444003
  • GHCR digest: sha256:e877112d01dbde791c8fbced0101fde4fe7bda15183c92a242386a0a0c2eab87
  • Isolated blank-data smoke: passed
  • Isolated production-environment + consistent SQLite snapshot smoke: passed, including encrypted-credential bootstrap
  • Production health: healthy, HTTP 200, SQLite integrity_check=ok
  • gpt-5.6-{sol,terra,luna} migrated atomically to guarded-priority, five-minute cooldown, nested paid-cache fallback preserved in execute mode

Focused acceptance evidence remains 44/44 runtime/schema/request-path tests plus 2/2 Dashboard component tests. Actual route tests cover dynamic unpinned account pools, nonmatching no-spill responses, matching 503 advancement, global fallback suppression, and ordinary Priority controls.

The remaining upstream PR check failures are release-base drift already documented in the PR (missing antigravityProjectPersistence.ts, duplicate migration 134, unrelated docs/quality/file-size/lint issues). Semgrep and change classification pass; the fork image build succeeds from the full production integration.

@xz-dev
xz-dev force-pushed the feat/combo-hard-offline-rules branch from d63b6de to 97a182d Compare August 7, 2026 16:35
Resolve conflict in comboStructure.ts by combining the base's type-narrowing
fix for ComboProviderWildcardStep (diegosouzapw#8894) with the author's offlineRule feature.
@xz-dev xz-dev closed this Aug 8, 2026
@diegosouzapw

Copy link
Copy Markdown
Owner

The release/v3.8.50 base now includes base-red fixes (typecheck tabs fix #9729, ESLint suppression prune + combo test alignment #9774). Your branch's CI still shows the old failures because it's based on the pre-fix base. Please merge/rebase the latest release/v3.8.50 into your branch to pick up the fixes — the conflict in comboStructure.ts is resolved on this side if you want to take it.

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.

feat(combo): add hard offline rules for ordered child nodes

2 participants