Skip to content

ASB-V23

Choose a tag to compare

@krilikd krilikd released this 15 Mar 02:29
· 4286 commits to main since this release
d791765

πŸš€ AutoSystemBoost V23 MAJOR RELEASE

Compared to V22 | Date: 2026-03-15


🌟 What Changed in V23

ASB-V23 is not a maintenance patch on top of V22.
It is the release where AutoSystemBoost evolves from a session-aware adaptive governor into a session-intelligent runtime with persistent memory, recovery discipline, and a modular architecture.

V22 = first session-intelligent high-load governor release
V23 = first self-learning, recovery-aware, architecturally clean release


🧠 Session Intelligence β€” Time-to-First Metrics

V23 answers the question V22 could not: how fast does this session actually break down?

Metric V22 V23
Time to first SUSTAINED ❌ βœ… ses_t2s β€” seconds from reset to first SUSTAINED
Time to first thermal collapse ❌ βœ… ses_t2thermal β€” seconds to first thermal-triggered SUSTAINED
SUSTAINED quality score ❌ βœ… ses_efficiency β€” 0–100 score per session
Thermal collapse counter ❌ βœ… ses_recovery β€” counts how many times thermal collapsed

What ses_efficiency measures

efficiency = 100 - gap_penalty - temp_penalty
  gap_penalty  = avg_gap_p0 / 15000  (capped at 50)
  temp_penalty = (max_temp - 55) Γ— 2  (capped at 50)
  • 100/100 = SUSTAINED at moderate temperature with small cap gap (useful throttle)
  • ~50/100 = deep thermal wall, heavily throttled
  • < 30/100 = system was too hot and too throttled to be effective

Logged on every SUSTAINED exit:

exit_sustained: temp_dropped t=53Β°C β†’ HEAVY cooldown=30s efficiency=87/100

πŸ’Ύ Persistent Session Memory

V23 introduces the first cross-session memory in ASB history.

V22 V23
Session history Resets on every restart Persists across runs
History file None /dev/.asb/session_stats.json
Rolling average None EMA across last 10 sessions

What is stored

{"count":5,"t2s":95.0,"t2th":95.0,"temp":68.0,"gap":0.0,"eff":95.0}
Field Meaning
count Number of sessions accumulated
t2s Rolling avg seconds to first SUSTAINED
t2th Rolling avg seconds to first thermal collapse
temp Rolling avg peak temperature Β°C
gap Rolling avg GAMING cap gap kHz
eff Rolling avg sustained efficiency score

Shown in diag log at every governor startup:

persistent stats: sessions=5 avg_t2s=95s avg_temp=68Β°C avg_gap=0 avg_eff=95

Visible in asb status:

hist_sessions, hist_t2s, hist_temp, hist_gap, hist_eff

πŸ” Recovery Discipline

V22 had cooling and retry cooldowns. V23 adds recovery intelligence: after the chip has already collapsed twice in the same session, GAMING retry becomes more conservative automatically.

Condition V22 V23
After 1st thermal collapse retry after cooldown same
After 2nd+ thermal collapse same retry threshold temp_max reduced by 5Β°C
/* Recovery discipline: ses_recovery_count >= 2 β†’ stricter temp gate */
if (temp_max > 0 && fsm->ses_recovery_count >= 2)
    temp_max -= 5;

This means: if the session has already shown that the chip overheats under GAMING load, ASB stops trying to re-enter GAMING until the chip is 5Β°C cooler than normal. No config needed β€” fires automatically.


πŸ”‹ Battery Branch β€” Active Improvements

V22 introduced the battery governor mode. V23 makes it smarter based on real device data.

Problem observed in testing

On screen wake from DEEP_IDLE, load spikes to 12–21 immediately (Android system overhead). With V22's heavy_load_enter=2.0, the governor jumped to HEAVY within 4 seconds of every screen-on event, defeating the purpose of the battery profile.

Fix: bat_heavy_load_enter

V22 V23
HEAVY threshold in battery 2.0 (global) 4.0 (battery-specific)
Screen wake behavior HEAVY in 4s Stays in LIGHT_IDLE through wake spike
Config key ❌ bat_heavy_load_enter=4.0

Battery params now wired (were config-only in V22)

Parameter V22 V23
bat_fast_idle_s=15 Stored in config, unused Active: LIGHT_IDLE β†’ DEEP_IDLE in 15s
bat_light_idle_gpu=10 Stored in config, unused Active: GPU capped at 10% in LIGHT_IDLE

Both fields were declared in V22 but never connected to the FSM. Now wired.


🎯 Profile-Aware highload_mode

V22 required manually setting highload_mode in governor.conf.
V23 ties it to the active profile automatically.

Profile switch V22 V23
β†’ performance No change to highload_mode burst applied automatically
β†’ battery No change to highload_mode burst cleared if active
β†’ balanced No change No change (respects config)

What burst means for performance profile:

gaming_gap_ticks          = 3    (was 4)
gaming_retry_cooldown_s   = 20   (was 30)
gaming_retry_temp_max     = 50
sustained_level           = 0.85 (was 0.80)
sustained_reentry_cooldown_s = 10 (was 20)

Logged on profile switch:

profile:performance β†’ highload burst applied
profile:battery β†’ highload burst cleared

πŸ— Architecture β€” Modular Shell Layer

V22 had a monolithic service.sh (1463 lines) that was the single point of failure for the entire module.

V23 splits it into focused modules:

File Role Lines
service.sh Boot orchestrator, sources modules ~1150
runtime/asb_utils.sh Profile vars, governor lifecycle 178
runtime/asb_reconcile.sh Profile drift correction loop 110
runtime/asb_watchdog.sh Governor process watchdog 35

Why runtime/ not common/

MMT installer (functions.sh) runs rm -rf $MODPATH/common after installation. Files in common/ are for install-time only and are deleted before service.sh ever runs. V23 places persistent runtime files in runtime/ which survives the install cleanup.

Watchdog threshold fix

V22 V23
Stale state threshold 90s (caused 3–4 restarts/hour) 240s
Root cause DEEP_IDLE never writes state unless caps change Keepalive write every 60s

πŸ”Š Audio Fix β€” Spatial Audio / 3D Audio

OnePlus 3D Audio (PространствСнноС Π°ΡƒΠ΄ΠΈΠΎ) buttons were non-functional in V22.

Property V22 V23
ro.audio.spatializer_enabled false true
ro.audio.spatializer_binaural_enabled_default false true
ro.audio.spatializer_transaural_enabled_default false true

All three modes now work: Fixed, Head tracking, and Off.


βš™οΈ Profile Tuning (V22 β†’ V23)

performance.sh

Parameter V22 V23
SCHED_RATE 1000 800
SCHED_UP_RATE 400 300
SCHED_DOWN_RATE 1500 1200
SCHED_HISPEED_LOAD 65 60

Faster CPU ramp-up response for performance workloads.

balanced.sh

Parameter V22 V23
WALT_TOPAPP_WEIGHT 105 110
WALT_BOOST_MIN_UTIL 51 48
SCHED_RATE 3000 2500
SCHED_UP_RATE 1200 1000
SCHED_DOWN_RATE 4000 3500
SCHED_HISPEED_LOAD β€” 85
GPU_IDLE_TIMER β€” 64

Improved foreground app responsiveness, smoother GPU idle transitions.

battery.sh

Parameter V22 V23
WALT_TOPAPP_WEIGHT 60 65
WALT_BOOST_MIN_UTIL 140 150
UCL_TOP_MAX 16 18

Slightly higher foreground responsiveness in battery mode without sacrificing idle efficiency.


πŸ“Š New Session Telemetry Fields (V23)

Full list of new fields in asb status and cat /dev/.asb/state:

Field Description
ses_t2s Seconds from session start to first SUSTAINED
ses_t2thermal Seconds from session start to first thermal SUSTAINED
ses_efficiency SUSTAINED quality score 0–100 (last or worst episode)
ses_recovery Number of thermal collapses this session
hist_sessions Sessions accumulated in persistent stats
hist_t2s Rolling avg time-to-first-SUSTAINED (seconds)
hist_temp Rolling avg peak temperature (Β°C)
hist_gap Rolling avg GAMING cap gap (kHz)
hist_eff Rolling avg sustained efficiency score

βš™οΈ New governor.conf Parameters (V23)

bat_heavy_load_enter=4.0    # battery: require load>4.0 for HEAVY (global default is 2.0)

All other V22 parameters remain unchanged and compatible.


πŸ›  Bug Fixes

Bug Impact Fix
bat_fast_idle_s and bat_light_idle_gpu were dead config fields Battery LIGHT_IDLE had no GPU cap, no fast idle Wired into FSM interpolation
bat_deep_idle counter always 0 Battery telemetry useless fsm_profile_is_battery not set on socket-initiated profile switch β€” fixed
runtime/ files deleted by installer governor crashed on boot (common/ wiped) Moved to runtime/ which survives MMT cleanup
Watchdog killed governor every 5–16 min during DEEP_IDLE 3–4 unnecessary restarts per hour State keepalive write every 60s
Watchdog threshold 90s too aggressive Killed governor during normal DEEP_IDLE Threshold raised to 240s
Spatial audio buttons non-functional OnePlus 3D Audio settings had no effect Three ro.audio.spatializer_* props set to true

βœ… V23 Summary

βœ” Session intelligence β€” ses_t2s, ses_t2thermal, ses_efficiency, ses_recovery
βœ” Persistent session memory β€” rolling EMA across 10 sessions in /dev/.asb/session_stats.json
βœ” Recovery discipline β€” stricter GAMING retry after 2+ thermal collapses
βœ” Battery intelligence β€” bat_heavy_load_enter=4.0 prevents spurious HEAVY on screen wake
βœ” bat_fast_idle_s and bat_light_idle_gpu now active β€” were config-only in V22
βœ” Profile-aware highload_mode β€” burst auto-applied on profile:performance
βœ” Modular shell architecture β€” runtime/ layer, service.sh -313 lines
βœ” Watchdog stability β€” 90s β†’ 240s threshold + 60s keepalive
βœ” Spatial audio fix β€” OnePlus 3D Audio fully functional
βœ” Profile tuning β€” all three profiles refined from real device data

V23 makes ASB remember what happened, understand why it happened, and behave differently next time.