PenguinBurner / contributor field guide

Auto-UV, from scan to save.

A short cookbook for the updated algorithm, the edge cases fixed in PR #72, and recorded three-tier verification on an RTX 5080.

PR #72Loading recorded results…6 September 2026

RTX 5080 · recovery verification

Verification of the recovery changes is pending. The measurements below remain the earlier recorded smoothing run.

The saved anchor is a curve setting; Q2RTX mean MHz is measured under load. Final FPS/W is Q2RTX FPS divided by measured watts. Settings differ from the historical run below, so these short final checks do not establish a performance gain.

Each tier measures its own stock-curve baseline at its power and memory settings, so changes against those scan baselines cannot rank profiles. The Profiles table keeps FPS and other metrics absolute. Only power shows a percentage against the matching GPU’s factory power limit, green below that limit: this is a cap comparison, not measured savings against a stock benchmark. If the GPU’s factory limit is unavailable, the table shows watts alone.

Why tiers choose different points. Efficiency ranks eligible passes by raw measured FPS/W, without a 1% threshold. Balanced normally adopts a lower voltage after a >1% temperature-normalized FPS/W gain; a passing lower point can remain unselected. A confirmed wall can retain a non-losing current point. Performance descent has no FPS/W wall; its AutoOC favors measured Q2RTX clock. Descent rules · AutoOC scoring.

Error recovery only

A failed candidate can leave safer options. Follow the highlighted arrow back to see the automatic retry. Setup and persistence failures have a separate stop boundary; completed profiles are kept.

Reject → retreat → retry, or stop with a defined result
Search failures and final-verification failures
Error recovery only: retry a safer candidate or keep completed workOrdinary candidate failures can use bounded search retreat or a safer tested final curve. Failed retries return to classification. Exhausted tiers are skipped; critical errors stop probing, while cancellation retains saved files without promising success.Ordinary / UNSAFEYesNo: retry loopYesNoCritical errorUser cancelCannot persistBackend / policy failure

Candidate failed

Failure class?

Record any instability
Exclude failed final pair

Safer candidate?

Bounded search retreat
or exact tested final curve

Reset · apply · read back
Probe / final verify

Passed?

Continue the tier
Save after final pass

Skip this adaptive tier
Try remaining tiers

Stop further probing

Stop; keep saved files
No automatic retry

Return completed profiles
or report no result

Search recovery: flattened baseline: up to ten probes; custom lower clock: continue remaining planned steps; AutoOC UNSAFE: at most one lower-clock backoff at the allowed voltage ceiling, then end the climb. Voltage descent stops and keeps eligible passing history.

Final retry: use an exact curve that already passed a probe. Try lower MHz, including at the same voltage, or higher voltage without raising MHz. Failed pairs cannot repeat; the finite pool ends the loop.

Hard boundary: a lost backend must recover enough to reset, apply and read back the next candidate. If it cannot, stop probing and return completed adaptive profiles if any. A user stop exits without automatic retry.

A usable stock measurement is required before flattened-baseline retreat; a failed stock reference can prevent any result. Candidate crash markers exclude baseline/discovery. User cancellation keeps files already saved but does not imply a successful return. Full phase bounds and the single-tier stop exception are documented below.

The complete algorithm

Read top to bottom; follow the arrows back to see what repeats. Blue prepares the GPU, green carries passing evidence, amber retries or skips, and red stops further probing. The five blocks separate the loops from their shared exit rules.

Jump to historical RTX 5080 results ↓
01 One request → bounded searches → saved tiers
Lifecycle · visible next-tier loop
Auto-UV lifecycle and the next-tier loopSetup and first baseline lead to finite tier searches and automatic final verification. Ordinary tier errors continue; hard exits retain already completed profiles.YesNoPassNo passing baselineProfile savedOrdinary baseline errorNo eligible targetcandidateRetries exhaustedYes: next tierNoYesNo

User starts one tier or all three

Prepare through the daemon
Validate workloads + editable V/F
Consume markers; reset stock offsets

Saved checkpoint
selected for recovery?

Restore checkpoint + power policy
Skip fresh baseline / descent

02 · First passing baseline
Stock + bounded clock retreat

Prepare the current tier
Efficiency → Balanced → Performance
Apply policy; reuse / measure baseline

No new result; report the error

03 · Finite voltage descent
Performance may reuse
matching Balanced descent

04 · Tier / custom clock search
Exact plans; fresh blacklist

05 · Select → verify → save
Retry safer tested points
Pass or exhaust the finite pool

More requested tiers?

Skip tier; keep completed profiles

Any profile
completed?

Finish with completed profiles

Reuse: baseline power, memory and tail must match. Performance can reuse Balanced descent only with matching policy and baseline evidence within 10 mV / 15 MHz.

No model table: the finite voltage sweep still works; table-only clock work is skipped. Missing editable V/F support or a failed first baseline can prevent any new profile.

Saved recovery: a selected checkpoint can bypass fresh baseline/descent. Final retries use the history available to that resumed search; they do not import every older saved record.

Owner: tier orchestration and shared final retries. Every completed tier is saved immediately. An ordinary later-tier error continues to the next tier; an unusable backend stops probing and returns already completed adaptive profiles.

02 Baseline recovery: lower the clock, at most ten probes
Same voltage and tail · 15 MHz retreat
Flattened baseline recovery has a ten-probe boundA passed stock reference supplies a loaded flattened target. Failed flattened candidates retreat at the same voltage, preserving tail geometry and checking unsafe bands before every probe.No legal clock /voltage-wide blockAllowed positive clockPassRejected candidateYesNoCritical measurement /setup failureUser stop / unusablebackend

Stock reference passed under this tier's settings

Build the loaded flattened target
Keep the stock measurement as reference

Read the current blacklist
Jump below any blocked clock band
Keep the same voltage and tail policy

No passing flattened baseline
First baseline: report failure
Later adaptive tier: skip that tier

Retarget ceiling; apply and read back
Q2RTX-only baseline probe
Count this attempt: at most 10

Result

Keep this exact plan and metrics
Write the passing baseline checkpoint

Fewer than 10 probes
and another positive clock?

Lower the requested clock by 15 MHz

Stop further probing; preserve earlier results

Start with stock: a failed stock reference stops baseline preparation. A passing stock measurement supplies the initial flattened target; it is not relabeled as a passing flattened curve.

After rejection: lower the flattened clock by 15 MHz. Reload the blacklist before each attempt and jump below a blocked clock band. Ten probes is the total bound, including the first.

Exit: keep the first passing exact curve. Exhaustion or a voltage-wide block ends baseline preparation. Critical errors and user stops do not trigger another attempt.

Owners: baseline selection and retreat · probe/reset/readback path. Baseline probes use Q2RTX only; the final profile still requires its long Q2RTX + CUDA check.

03 Voltage descent: each next probe moves down
One sweep · finite editable bins
Finite voltage descent and its recovery boundaryEvery next probe lowers voltage. A floor, cached unsafe pair, failed candidate or Balanced efficiency wall ends only this sweep. Critical errors and user stops follow the run exit rules.NoYesYesNoUnsafe / ordinaryrejectionPassYes: retain the betterpointNo / other tier: descendagainCritical failureUser stop

Start with a passing baseline or tier reference

Choose the effective floor
Explicit setting → model table → fallback
Unknown model: 10% below starting voltage

A lower editable bin remains
at or above the floor?

Return the passing selection
Continue to clock selection / final verification

Build the complete next curve
Carry the requested MHz and measured upward gains
Preserve the tier's tail policy

Actual new voltage / clock
blocked by the unsafe cache?

Reset → apply → verify readback → probe
Q2RTX; CUDA when required by voltage band

Probe outcome

Record exact passing evidence
Update the selected curve and checkpoint

Balanced's confirmed FPS/W wall
after the required voltage drop?

Stop probing; preserve completed profiles
Exit handling in block 05

Stop request handling in block 05

Efficiency: descend once toward the floor, then rank eligible passing curves by measured FPS/W. Equal scores favor measured MHz, lower power, then the earlier result.

Balanced: a confirmed, temperature-normalized FPS/W wall can end descent after the required voltage drop. Keep the better passing point. Performance has no FPS/W descent wall.

Stop this sweep: no lower legal bin, floor reached, cached unsafe pair, candidate rejection or Balanced’s wall. A legal starting point remains available when no first step exists.

Owners: shared sweep · next lower bin · FPS/W policy.

04 Clock targets: keep trying lower steps; back off after instability

Lower a custom clock target

Up to ten planned steps · proven sweep voltage
Lower custom clocks continue after rejected intermediate stepsAt most ten planned steps lower the clock at the proven sweep voltage. Cached points are skipped, ordinary rejections continue downward, and only eligible passing curves can reach final verification.YesNo: skip pairPass: retain exact curveOrdinary rejection /UNSAFEYes: continue downwardNoYesNoCritical error / user stop

Custom target below
the passing sweep clock

Plan ≤10 lower-clock steps
Keep proven sweep voltage

Next planned lower clock

Fresh blacklist
allows this pair?

Apply and probe
Full curve; own FPS reference

More planned steps?

Filter passes by custom limits
and the fresh blacklist
E: FPS/W; others: eligible selection

Eligible passing curve?

Continue to final verification

Tier target error
Earlier checkpoints remain

Stop probing
Keep completed profiles

Raise clocks or reclaim a target

Finite rungs · fixed voltage ceiling
Upward clock search and a single backoff after instabilityAutoOC uses finite rungs and higher-voltage retries. Any fresh or cached unsafe point allows at most one lower-clock ceiling backoff, then ends the climb.NoYesYesNoPassNo: keep passingevidenceYes: end climbFresh UNSAFEAny ordinary outcome:end climbRECOVERABLE rejectionProbe resultCached UNSAFENone remainCritical error / user stopCritical error / user stop

OC / clock reclaim
or a higher custom target

Build ≤10 unique main rungs
Editable V; fixed target ceilings

Another legal main rung?

End climb
Select an eligible passing curve
Continue to final selection

Fresh blacklist
blocks this pair?

At most one backoff candidate
Earlier passing MHz
Highest allowed ladder voltage
Probe only an allowed pair

Apply / read back
Probe the complete curve

Outcome

Confirmed power wall?

Retry same MHz at next higher V
Finite bins below the ceiling
Recheck cache; apply and probe

Stop probing
Keep completed profiles

Lower custom MHz: continue through at most ten planned lower steps, including after a rejected intermediate step. Skip cached pairs. Keep the proven sweep voltage and apply the custom selection limits.

Fresh or cached UNSAFE: try at most one backoff at the highest allowed ladder voltage using an earlier passing clock, if the pair is allowed. Then end the climb and filter all passing evidence again.

Other outcomes: a recoverable rejection can retry the same MHz at finite higher voltages. Critical errors stop probing. A measured power wall stops increasing the requested clock.

Owners: custom targets · finite ladder · OC backoff and scoring. No clock work or no model endpoint continues to final selection. A power-wall stop requires over 22.5 MHz shortfall plus measured power-limit or hardware-brake evidence. Selection rechecks the blacklist and any custom limits; a target with no eligible passing curve fails that tier.

05 Final verification: retry automatically, save, or take a defined exit
Exact tested plans · no repeated failed voltage/MHz pair
Automatic final retries, durable saves, partial success and hard exitsA rejected final candidate is excluded by voltage-clock pair. The next eligible tested point is verified automatically. Ordinary exhaustion skips an adaptive tier; critical or backend errors stop probing and preserve completed tiers.YesNoPassUnsafe / ordinaryrejectionYesVerify this candidateNoCritical setup /measurementBackend / power-policyfailurePersistence failureWrite fails: retain crashmarkerYesNoUser stopOther curve validationerror

Selected exact passing curve
Initial choice / duration resolved

Fresh blacklist allows
this voltage / MHz pair?

Check shape; snapshot; apply / read back
Long Q2RTX + CUDA verification
Custom clocks: own measured reference

Exclude this pair from retries
Persist observed instability
before post-probe readback

Final outcome

Save the final verified profile
Exact curve + settings + measurements

Next requested tier, or finish

Filter the tested history again
No failed pairs or blacklisted points
Lower MHz or higher V; no MHz increase
Respect custom target limits

Eligible tested
candidate remains?

Next best eligible point
E: FPS/W; others: measured clock
No retry dialog

Ordinary tier failure
Adaptive: next tier
Single tier: report failure

Stop all further probes
Critical / backend / persistence error

Any adaptive profile
already completed?

Return completed profiles
Report why probing stopped

Report the error; no new verified profile

Exit; no automatic retry
Keep saved profiles / checkpoints

Next candidate: lower MHz, including at the same voltage, or higher voltage without raising MHz. Filter the available tested history by the fresh blacklist, failed pairs and custom limits. No new retry dialog.

Comparable reference: a custom lower-clock retry uses its own passing measurement for FPS/load checks. Other final checks use the passing tier baseline. The failed higher target is not the new reference.

Partial success: ordinary exhaustion skips an adaptive tier. Critical, backend or persistence errors stop further probing; completed adaptive profiles are returned when available. Zero completed profiles reports the error.

Owners: automatic retry and partial-result boundary · final verification and saving. The shared retry path serves fresh single-tier, adaptive and resumed scans, using each path’s available history.

What happens when work stops?

DestinationTriggersWhat remains
Stop this searchVoltage floor, no legal step, rejected candidate, unsafe cache or scoring wall.Recheck the passing history against the current blacklist. An eligible complete curve continues to selection and final verification.
Retry final checkAn ordinary final failure or a selected pair now blocked by the blacklist.Automatically verify the next eligible tested curve. Exclude failed voltage/MHz pairs; stop when the finite pool is exhausted.
Skip one adaptive tierOrdinary later-tier baseline/target/curve error, exhausted final retries, or user discarding that tier.Continue the remaining tiers. Completed profiles remain saved. At least one completed tier yields a result; zero completions reports the last error or that all tiers were discarded.
Stop all probingCritical setup/measurement failure, unusable power regime, backend RuntimeError/OSError, or failed unsafe-record persistence.No more probes or tiers. Return completed adaptive profiles when available; otherwise report the error. A failed blacklist write retains its crash marker.
User StopUser cancels probing or final verification.No automatic retry. Normal interactive single-tier descent can offer earlier passing candidates; adaptive, clock-search and final-verification stops exit. Earlier saved profiles and checkpoints remain.
Candidate instability ≠ an unusable backend. Evidenced Xid/device-loss, process crashes, CUDA verification/kernel failures and confirmed hangs reject the point as UNSAFE. The next candidate must still pass reset/apply/readback. Missing game data, initialization/allocation failures, missing or invalid measurement evidence and unexplained fatal results remain critical. Decision rules.
Checkpoint ≠ final verification. Passing flattened baselines and accepted descent selections are written durably. Some other passes remain in history until selection. Only a successful final soak and save produce a final verified profile; an unsafe point cannot be revived merely because it passed earlier. A backend-close warning during cleanup does not replace a completed result or promote an unverified point.
Crash evidence survives the failure. Candidate phases, including adaptive tiers, write in-flight markers. Observed crashes are recorded before post-probe power readback; a failed blacklist write stops probing and retains the marker. A later run accepts recognized probing markers with positive whole-number voltage/MHz, including shallow steps and reduced clocks. Clean stops remove markers; baseline/discovery remain excluded. An abrupt ending alone does not prove its cause. Probe persistence · marker recovery.

Finite bounds: ≤3 tiers · ≤10 flattened-baseline probes · strictly lower voltage bins · ≤10 custom down-clock steps · ≤10 main OC rungs plus finite voltage retries · one backoff after an unsafe result · at most one hang-confirmation re-probe · final retries exclude every failed pair. Default final durations: 60 / 180 / 300 seconds for Efficiency / Balanced / Performance, unless explicitly overridden.

Targets are curve anchors. Two rising tail bins add nominal 30 MHz of boost headroom. Requested mV/MHz can differ from loaded telemetry; power limiting can lower clock. Neither the anchor nor the tail is a hard voltage lock.

What changed

  • Same Advanced control order in all tiers: voltage, core MHz, memory offset, power limit.
  • Custom MHz bounds: Efficiency −15% to Balanced; Balanced from Efficiency to Performance; Performance up to +5%.
  • Removed clock-loss percentage gates. Workload failures, lost load, FPS regressions, and readback errors still reject candidates.
  • Exact tested curves survive selection and saving; matching tier baselines and descents can be reused.
  • Unknown GPUs use hardware bounds and a baseline-derived voltage floor; missing table targets preserve the passing undervolt.

Recovery fixes

  • Expected candidate crashes blacklist and back off; setup and observation failures still stop probing.
  • Failed flattened baselines can retreat through a bounded lower-clock loop.
  • Custom lower-clock steps continue after intermediate rejection.
  • Final checks automatically retry eligible tested curves, including lower clocks at the same voltage.
  • Fresh blacklist checks prevent later crashes from reviving earlier passing points inside the unsafe band.
  • Completed adaptive tiers survive later backend failures; failed blacklist writes retain the crash marker.

RTX 5080 · historical smoothing verification

Quick verification only: each tier used 10 seconds of final testing: 8 seconds Q2RTX + 2 seconds CUDA. Search probes kept their normal duration. This verifies the scan/save path, not long-term game stability or every intermediate V/F point.

RTX 5080 · historical before/after smoothing

Original final-probe curves from 5 September versus the historical smoothed run above. Every tier uses the same 0–3250 MHz axis. Straight lines join the recorded points; the chart adds no visual smoothing. All tiers overlays the final smoothed curves; choose a tier to compare it with the pre-smoothing curve. The newer recovery run above uses different custom targets and memory/power settings; it is not part of this geometry comparison.

Move over the plot for exact curve points.

Tier / geometryBefore smoothingSmoothedChange

Historical anchors and settings differ: the old tiers used 2 / 4 / 4 tail bins and their power-cap writes were skipped. This compares recorded geometry, not an isolated smoothing effect or a controlled FPS/W gain. Original historical final-profile files are unavailable; their final-probe curves match the surviving checkpoints, and the log records successful final checks and saves.

Historical verification evidence

    Where to work

    Tier orchestration / fallbackauto_uv/main_loop.py
    Descent / terminationauto_uv/base_uv_loop.py
    Clock searchauto_uv/auto_oc/
    Decisions / crash cacheauto_uv/probes/ · persistence/
    Final verification / savingauto_uv/final_verification/
    GPU writesburnerd/ via runtime/daemon_client.py
    Advanced controlsui/dialogs/scan_tuning.py
    Maintainer rules and limits

    Keep search steps finite and monotonic; preserve passing checkpoints when improvement stops. Critical setup/measurement errors and an unusable backend end further probing; evidenced candidate instability takes the bounded fallback path. Never call an untested fallback stable, rebuild a selected curve, bypass the daemon for GPU writes, or silently exceed a custom target.

    No table entry is required for a finite voltage sweep: the fallback floor is 10% below loaded baseline voltage. An unknown GPU may still lack required driver access or fail baseline validation; report that reason rather than promising a verified profile.