Follow-up to #61 / #65.
kv_rot_enabled is gated on fwht_supported(head_dim) (power-of-two). For a model with a non-power-of-two head_dim (e.g. 80, 96, 160), GEIST_KV_ROT=1 — or the new INT4 default — silently does nothing: packing still runs, so you get INT4-without-rotation (the quality cliff) with no warning.
Task: emit a one-time GEIST_LOG_WARN at session creation when rotation was requested/defaulted but disabled because head_dim is not a power of two. See the resolve in src/archs/transformer/arch_state.c.
Impact: low but sharp — silent quality degradation on unusual-head_dim models. Good first issue.
Follow-up to #61 / #65.
kv_rot_enabledis gated onfwht_supported(head_dim)(power-of-two). For a model with a non-power-of-two head_dim (e.g. 80, 96, 160),GEIST_KV_ROT=1— or the new INT4 default — silently does nothing: packing still runs, so you get INT4-without-rotation (the quality cliff) with no warning.Task: emit a one-time
GEIST_LOG_WARNat session creation when rotation was requested/defaulted but disabled becausehead_dimis not a power of two. See the resolve insrc/archs/transformer/arch_state.c.Impact: low but sharp — silent quality degradation on unusual-head_dim models. Good first issue.