fix(launch): pool-qualify leveled tokens; ox advisor net; ox-lean lane - #49
Merged
Conversation
Three fixes from live use, one reshape:
- prefixed() received tokens still carrying their thinking level
("stealth/ox-alpha:high") while the catalog facts are keyed on the bare
id — every ox reference missed the pool lookup and fell to the
two-provider name heuristic, launching configs whose fallback chains
named openai-codex/stealth/ox-alpha. Strip the level before the lookup,
qualify the full token; regression-tested end to end against a rendered
grid.
- The advisor context ignored the ox lanes: ox-only's second opinion was
Claude, and the mixed ox lanes shipped no cross-pool net. advisorChain
now maps ox-only to the ox table and gives ox-led/ox-lean an explicit
spend-order tail — the other paid pool's glance rung, then the free pool
— so a dead quota never leaves the second eye blind.
- genCombo's lane logic moved from hand-written branches to a declarative
lanePolicy table (primary/delib/util/vision/pure per lane). New lanes are
data rows now; that immediately buys ox-lean, the mirror of ox-led: paid
providers keep default/task/librarian while the free pool absorbs
scout/sonic/smol/tiny/commit and vision. Fable may lead the deliberative
roles and fable-as-main may take the default seat — on this lane that is
a feature, not a contradiction. spark is invalid here (its drain leads
are ox), fast stays (the OpenAI primary is real).
Also widens listW for the eight-value lane dial and updates the models-file
docs: ranges claim contiguous thinking scales, so holed models must be
comma lists — the exact mistake the Ox Alpha entries made.
This was referenced Aug 22, 2026
atyrode
added a commit
to atyrode/dotfiles
that referenced
this pull request
Aug 22, 2026
* feat(catalog): Ox Alpha on pool R; pin code 0.4.13 + omp 18.0.0 - omp/models.yml: add stealth/ox-alpha as the first pool-R family — one model declared once per tier with ascending thinking ceilings (low→low / low→high / low→max), which is how a single-model family rides the generator's ladder. Free while OpenRouter's promotional window lasts; the file notes how to retire it. refreshed: 2026-08-22. - omp/refresh-model-facts.py: know pool R (openrouter) so the refresher can update the ox facts in place, and adapt to omp 18's bench payload — the run aggregate moved from models[].average (flat) to models[].stats (per- field min/p50/mean/...); both shapes accepted, mean selected. - pkgs/code: 0.4.12 → 0.4.13 (pool R + ox lanes; required — the previous release rejects pool R and would fail the catalog build). - pkgs/omp: 17.4.0 → 18.0.0. Contract review v17.4.1..v18.0.0: no model-id or agent renames; new settings additive with defaults; hashline edit mode unchanged (sloppy is only a fallback for models without it); extensions use none of the reshaped pi-tui macOS APIs; bench --json shape change is handled above. nix build .#omp + omp --smoke-test pass. * fix(catalog): declare ox thinking as comma lists; pin code 0.4.15 Ox Alpha skips medium/xhigh, so ranges claim levels the API rejects — declare the offered set explicitly (per atyrode/code#49). The pin rides the first release carrying the DeepSeek provider pool (#44).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes for the first live ox session, plus the reshape that makes the next lane cheap.
Bugs from live use
Wrong provider prefix in every ox fallback chain —
openai-codex/stealth/ox-alpha:highin launched configs. Root cause:prefixed()is handed routing tokens that still carry their thinking level (id:level), while the catalog facts are keyed on the bare id. Every ox token missed the pool lookup and fell through to the two-provider name heuristic. The fix strips the level before the lookup and qualifies the full token. Regression coverage: a leveled-token unit test plus an end-to-endgenConfigYAMLassertion that no heuristic prefix leaks onto ox ids.Advisor blind spots —
advisorChaindidn't know the ox lanes: ox-only's second opinion was Claude (pure lanes keep their own pool), and the mixed ox lanes shipped a bare lead with no fallback. Now ox-only maps to theoxadvisor context, and ox-led/ox-lean append an explicit spend-order net to the chain: the other paid pool's glance rung, then the free pool itself — Anthropic → OpenAI → Ox Alpha, exactly the shape a dead quota needs.Data-level (dotfiles side, riding the next pin bump): the ox entries declared
low→high/low→max— ranges claim contiguous scales, and Ox Alpha skipsmedium/xhigh. Comma lists now.The reshape
genCombo's lane logic was becoming an arm per lane. It's now a declarativelanePolicytable —primary / delib / util / vision / visionSmart / pureper lane, onepool(role)resolution rule (pure → primary; delib override; reviewer crossing; util override; else primary).lanePrimary/lanePureare gone. New setups are table rows, not branches.That immediately buys
ox-lean— the mirror ofox-led, i.e. your paid-default ask: OpenAI (primary) keepsdefault/task/librarian, Anthropic keeps the deliberative roles, and the free pool absorbsscout/sonic/smol/tiny/commitand vision.fablemay lead deliberative roles and fable-as-main is allowed — handing the elite the default seat on a paid-work lane is coherent here (unlike ox-led, where it would defeat the point).sparkis invalid (its drain-bucket leads are ox on this lane);faststays (the OpenAI primary is real).Notes
listWcap raised for the eight-value lane dial (verified unclipped at 150 cols).lanePrimary/lanePure→lanePolicy.poolchanged; nothing else lost.TestOxLeanRoutingPolicy,TestPrefixedLeveledTokens,TestGenConfigYAMLOxLed.