Skip to main content

Module budget

Module budget 

Source
Expand description

Render budget enforcement with graceful degradation.

This module provides time-based budget tracking for frame rendering, enabling the system to gracefully degrade visual fidelity when performance budgets are exceeded.

§Overview

Agent UIs receive unpredictable content (burst log output, large tool responses). A frozen UI during burst input makes the agent feel broken. Users tolerate reduced visual fidelity; they do NOT tolerate hangs.

§Usage

use ftui_render::budget::{RenderBudget, DegradationLevel, FrameBudgetConfig};
use std::time::Duration;

// Create a budget with 16ms total (60fps target)
let mut budget = RenderBudget::new(Duration::from_millis(16));

// Check remaining time
let remaining = budget.remaining();

// Check if we should degrade for an expensive operation
if budget.should_degrade(Duration::from_millis(5)) {
    budget.degrade();
}

// Render at current degradation level
match budget.degradation() {
    DegradationLevel::Full => { /* full rendering */ }
    DegradationLevel::SimpleBorders => { /* ASCII borders */ }
    _ => { /* further degradation */ }
}

Structs§

BudgetController
Adaptive budget controller combining PID regulation with e-process gating.
BudgetControllerConfig
Configuration for the adaptive budget controller.
BudgetTelemetry
Snapshot of budget controller telemetry for diagnostics and debug overlay.
EProcessConfig
Anytime-valid e-process for gating degradation decisions.
FrameBudgetConfig
Configuration for frame budget behavior.
PhaseBudgets
Per-phase time budgets within a frame.
PidGains
PID controller gains for frame time regulation.
RenderBudget
Render time budget with graceful degradation.

Enums§

BudgetDecision
Decision output from the budget controller.
DegradationLevel
Progressive degradation levels for render quality.
Phase
Render phases for budget allocation.