v2.4 — N-agnostic refactor. Branch (per-sym decision) and V_global (portfolio observer) become architecturally independent. V_global lifted out into a separate Transformer + AttentionPool module reading feat_actor.detach() under a hard gradient barrier. Branch slimmed down: actor_adapter removed (×2.4 cross-sample bias amplifier, zero useful transformation), ResidualSkipHead removed (gate stayed at zero for 28+ cycles, ~33K dormant params), actor_mini_mixer added (cross-symbol attention inside the branch). CEM / MPC objective drops V_global (action-independent under detach). State-dict migration: skip → linear, legacy adapter and QGMLP keys cleaned up.
v2.3 — Two surgical fixes on v2.1: separate actor / critic encoders as real modules, qg_new.detach() in the actor objective.
v2.2 — Full minimalist refactor under Simple_encoder — separate encoders, TransformerEncoder mixer, scalar twin Q. Drops distributional Q and skip-head adapter.
v2.1 — Adapter rank-collapse fix, bias accumulation control, ResidualSkipHead actor.
v2 — Initial release.