Repository navigation
Conversation
`pricing::lookup` fell back to the longest catalogued id found at a token boundary inside the request, so any hyphenated variant of a listed model inherited that model's rates: `gpt-4.1-nano` priced as `gpt-4.1`, `o3-pro` and `o3-mini` as `o3`. Those are different models with their own prices, and the estimator reported a confident number for them instead of "unknown". The fallback now requires the request to be a catalogued id followed by a snapshot decoration only: `-`-separated tokens that are each a date or version fragment (`2026-05-01`, `20250929`, `06-05`, `001`) or a release-channel word (`latest`, `preview`, `exp`). Dated and previewed ids still resolve to their row; any other suffix resolves to `None` and the caller falls back to a tier estimate. Prefix matching also keeps the short ids out of unrelated tokens (`proto3-chat`, `solo1-7b`), which the boundary search guarded against before. Closes tinyhumansai#392
…ll retries at the same cap A truncated-empty retry doubles the cap from the second attempt, up to 4x the original. With a generous cap that only multiplies the cost: on Terminal-Bench a reasoning model that died at 131,072 output tokens died again at 262,144, three dead calls costing about $0.6 with nothing to show. With the new policy flag every retry re-sends at the cap the call ran under, and the second retry is still made at that cap (the clock check still applies). Off by default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ad call without reasoning A reasoning model that thought to its output cap without acting tends to do the same on a retry at any cap: on Terminal-Bench protein-assembly deepseek-v4.1-flash died at 131,072 tokens three times in a row at a constant cap, and again at 262,144 with the default doubling. With the new policy flag the call that follows a truncated-empty reply (a retry or a "stop deliberating" nudge) goes out with ReasoningEffort::None, applied after the policy default and the profile mapping so neither restores it. One call only: the call after it reasons as the policy says again. Off by default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…calls repeat RunPolicy::truncated_empty_reasoning_off_sticky_after counts truncated-empty replies across the whole run (the per-step counters reset after every tool round) and, from that count on, sends every later call with reasoning off. With the one-call rule alone, Terminal-Bench protein-assembly alternated five dead calls with five working reasoning-off calls: reasoning came back on the next call and the model thought to the cap again. 0 (the default) never makes it sticky. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vendor/tinytools 616408b -> 3a01641 (0.6.0): metadata sanitization moved into tinytools (#76), git and linter children spawn without a Windows console window (#78). vendor/tinyinference 60e7109 -> 773ce6f: local runtimes get one leading system message (#109), and tinyinference-llm asks for tinytools-agent 0.6.0 so the root [patch] keeps a single copy (#120). The workspace crates' tinytools version requirements move to 0.6.0 to match.
…ls-tinyinference-7895 chore(vendor): bump tinytools to 0.6.0 and tinyinference
Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
…oning-off feat(recovery): constant-cap and reasoning-off retries for dead calls
…p-snapshot-decorations fix(registry): price only snapshot decorations of a catalogued model
chore(vendor): preserve TinyInference bootstrap regression
…9-228-tool-registry
Update the pinned tinyinference and tinytools submodule commits to their latest revisions. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Tiny Sweeper reviewVerdict: Incomplete · Priority: none Diagnostics and supporting detailsFull summaryPull request purpose (title): chore(epic): sync TinyAgents 2.10 and TinyTools 0.6. Purpose (title): chore(epic): sync TinyAgents 2.10 and TinyTools 0.6. The diff moves the workspace and intra-workspace dependency pins to 2.10.0 and tinytools references to 0.6.0, adds three RunPolicy dead-call recovery controls (a constant retry cap, one-call reasoning-off, and sticky run-wide reasoning-off), changes response-cache handling so truncated-blank replies are neither stored nor replayed when recovery is enabled, and rewrites the registry pricing-id matcher from substring-boundary matching to decorated-snapshot matching. The MongoDB proof workflow's conformance command now runs with --locked. The latest-push-delta section is unavailable, so this is not a push-delta summary. Unreviewed paths
Partial review reasons
Review snapshot
Completeness: Incomplete What changedThe summary below covers the whole pull request against its stated purpose. Features
TestsNo supported feature-to-test mapping was produced. Test execution is not inferred. FindingsNo active actionable findings. Before merge
Agent review detailscritique
security
tests
commits
description
Evidence and run details
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c899bbbab1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Adds tests for the truncated-empty constant-cap path, verifying that retries reach the provider rather than replaying a cached blank and that only the usable answer is cached. Also covers recovery bypassing a blank cached before retries were enabled, while disabled recovery still replays exactly. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add the missing RunPolicy import to the dead call test module so the tests can reference the runtime policy type. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the README to match the retry behaviour: the default retry count is now two, the first retry reuses the original output cap before later retries double it, and a new constant-cap option pins every retry to that cap. Also document the reasoning-effort overrides that turn reasoning off for the call after a truncated-empty reply, either once or stickily for the rest of the run. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Length-stopped blank responses are now excluded from the response cache whenever truncated-empty retries or nudges are enabled, so a retry at an unchanged cap reaches the provider instead of replaying the unusable cached answer. The check also consults the run policy rather than only the call shape, and the README documents the new caching behaviour. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The truncated-empty retry test now scripts an extra truncated response and checks the max_tokens of every request, pinning that the first retry keeps its cap and only the second grows it. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 53b022c6cb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The pricing README now documents that lookup matches an exact canonical id first, then an id with a leading vendor segment removed, and that the fallback only accepts dated or preview snapshot decorations of listed ids. Unlisted variants such as gpt-4.1-nano and o3-pro return None instead of inheriting a base model's rates, and the remaining cached-rate and long-context limitations are restated as needing separate behavioral corrections. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The README now describes the fallback as choosing the longest listed id extended only by date/version fragments or release-channel words such as latest, preview, and exp, replacing the earlier wording about dated or preview snapshot decorations. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
208b4dd
into
tinyhumansai:epic-8089-doctor-compatible
Bring the canonical epic branch onto TinyAgents v2.10.0 and TinyTools 0.6 so OpenHuman can consume the updated tool contracts while retaining the epic’s wait tools and conformance work. This merges the released upstream changes, including bounded dead-call recovery and pricing matching fixes, and preserves the verified nested dependency commits.
Part of tinyhumansai/openhuman#8089. Follow-up to #515; target remains
epic-8089-doctor-compatible.Validation completed:
cargo check --workspace --all-targets --lockedcargo clippy --workspace --all-targets --locked -- -D warningscargo fmt --all --checkandgit diff --checkReview also exposed a response-cache recovery bug: a history-free constant-cap retry could replay the cached truncated blank without reaching the provider. Retry-enabled runs now bypass old blank entries and do not store new ones; successful answers remain cached, and disabling recovery retains exact replay. Two regression tests failed before the fix and pass after it. The existing cache test now verifies real provider caps
[2048, 2048, 4096]rather than allowing a cached first retry to hide the defect.The module README documents constant-cap, one-call reasoning-off, and sticky reasoning-off controls. The new sibling test module uses its parent import.
Focused tests also pass:
cargo test -p tinyagents-harness --lib agent_loop:: --locked— 530 testscargo test -p tinyagents-registry --lib pricing:: --locked— 19 testscargo test -p tinyagents-harness-tools --lib wait::tests --locked— 10 testscargo test -p tinyagents-graph --lib --locked— 429 testsHosted CI must also pass before merge.
The standalone MongoDB proof lock now records the synchronized path-package versions, and its existing CI command uses
--locked. The exact CI target compiles withcargo check --manifest-path integration-proofs/run-ledger-mongodb/Cargo.toml --test session_driver_conformance --features mongodb-storage-tests --locked; this command failed locked resolution before regeneration. Pricing tests (19), formatting, and diff checks also pass after the documentation/lock update.Known unrelated limitation: checking every target in the excluded proof workspace fails in the unchanged
native_run_ledger_mongodblegacy target, which still calls removedupsert_agent_run,append_run_event, anddb_pathAPIs. That target and session source match upstream v2.10.0; it is not the conformance target run by CI.