Skip to content

Bound model retries/timeouts, detect non-answers, add NVIDIA provider - #86

Merged
devarshishimpi merged 8 commits into
mainfrom
feature/bound-retry-grounding
Aug 12, 2026
Merged

Bound model retries/timeouts, detect non-answers, add NVIDIA provider#86
devarshishimpi merged 8 commits into
mainfrom
feature/bound-retry-grounding

Conversation

@devarshishimpi

Copy link
Copy Markdown
Owner

Description

  • Detect model non-answers and size output token budgets based on findings so responses aren't truncated
  • Bound retry counts and timeouts across the model chain, and persist rate-limit cooldowns across job continuations so retries don't hammer a still-limited provider
  • Add NVIDIA as a model provider, filtering non-chat NIMs out of the catalog
  • Bucket stats trends for long date ranges and share time-range state across the stats/dashboard pages
  • Split several oversized client components/pages into focused modules (settings, stats, select, account, motion) with no behavior change

Closes #78 #40

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Chore (refactoring, dependency updates, etc.)

How Has This Been Tested?

  • Unit Tests
  • Integration Tests
  • Manual Dashboard Verification
  • Manual GitHub Webhook Verification

Checklist:

  • I have starred Codra on GitHub
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • New and existing unit tests pass locally with my changes
  • I have signed the CLA

…oops

Break large files (settings, account, stats, select, job-detail) into
smaller components and extracted utils/variants files (e.g.
metrics-grid-charts, provider-list, select-panel/select-trigger,
badge-variants, button-variants, diff-file-panel-utils, job-chip-utils).
Replace filter/map/sort chains with plain for-loops and toSorted in a
few server files (catalog, model-chain-progress, model.ts), and rename
settings-support.tsx to .ts since it has no JSX.
@devarshishimpi
devarshishimpi marked this pull request as ready for review August 11, 2026 23:08
chatgpt-codex-connector[bot]

This comment was marked as resolved.

codra-app-personal[bot]

This comment was marked as low quality.

codra-app-personal[bot]

This comment was marked as resolved.

codra-app-personal[bot]

This comment was marked as resolved.

codra-app-personal[bot]

This comment was marked as resolved.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@codra-app-personal codra-app-personal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codra Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dfeeba1f2f

ℹ️ About Codra in GitHub

Your team has set up Codra to review pull requests in this repo. Reviews are triggered when you:

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codra-app review"

If Codra has suggestions, it will comment; otherwise it will react with 👍.

Codra can also answer questions or update the PR. Try commenting "@codra-app address that feedback".

const isDark = useIsDarkMode();

// Downloads the lazy chart chunk in parallel with the first stats fetch rather than after it.
useEffect(prefetchMetricsCharts, []);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Async effect return value in useEffect

The prefetchMetricsCharts function is asynchronous. Passing it directly to useEffect causes it to return a Promise, which React warns about as it might be interpreted as a cleanup function. You should wrap the call in a function to ignore the return value.

Suggested change
useEffect(prefetchMetricsCharts, []);
useEffect(() => { void prefetchMetricsCharts(); }, []);

// Without this the book is invocation-scoped: every job continuation re-paid a full-prompt 429 to
// re-learn a cool-off the previous invocation had already been told about.
private hydrate(): Promise<void> {
this.hydrated ??= (async () => {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Permanent failure caching on initialization error

Caching the promise from an async IIFE in this.hydrated without resetting it on failure causes any transient error in loadCooldowns() to permanently reject all future calls to hydrate() and skipReason, locking out rate-limit checks for the entire lifetime of the ModelRateLimitBook instance.

Suggested change
this.hydrated ??= (async () => {
this.hydrated ??= (async () => { try { ... } catch (err) { this.hydrated = null; throw err; } })();

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@devarshishimpi
devarshishimpi merged commit 972e445 into main Aug 12, 2026
6 checks passed
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.

Add support for NVIDIA Build API

1 participant