fix(runtime): RV12 — el blob no sabia decir quien era y el genesis no construia

Tres defectos encontrados al montar el benchmarking real sobre el WASM.
Ninguno era visible desde los tests nativos, y los tres bloqueaban
frame-omni-bencher, que es el instrumento que mide los weights de mainnet.

1. LA SECCION runtime_version NO EXISTIA. Faltaba el atributo
   sp_version::runtime_version sobre VERSION. Esa custom section es la
   unica via para leer la version del runtime SIN ejecutarlo, que es de
   lo que depende set_code / forkless upgrade. wasm-builder abortaba con
   "Couldn't find the runtime_version section". El atributo exige
   literales, asi que la direccion queda INVERTIDA: VERSION es la fuente
   unica y las siete constantes publicas se derivan de sus campos. La
   deriva ya no es cuestion de disciplina, es imposible por construccion
   (contrafactual verificado: mover el literal pone rojo el test).

2. LOS PRESETS DE GENESIS NO EXISTIAN EN no_std. get_preset y
   preset_names devolvian None/vacio bajo un cfg(feature = "std") cuyo
   comentario afirmaba que los presets "solo se consultan en chain_spec
   generation, no en runtime execution". Falso: en el modelo
   runtime-driven chain spec el estado se construye DENTRO del WASM.
   omni-bencher fallaba con "The preset with name development is not
   available", y chain-spec-builder habria fallado igual.

3. NINGUN PRESET HABIA CONSTRUIDO UN GENESIS VALIDO JAMAS. Los tres
   poblaban aura.authorities Y session.keys a la vez; con pallet-session
   cableado, session instala las authorities de Aura via
   on_genesis_session y el build de Aura revienta con "Authorities are
   already initialized!". Sobrevivio toda la vida del crate porque todos
   los tests inspeccionaban el JSON del preset y ninguno llamaba a
   build_state: se miraba la caja por fuera. Ahora la abre
   los_tres_presets_construyen_estado (dev-dep sp-io), con contrafactual
   verificado: repoblar authorities lo pone rojo con el panic exacto.

Tambien: el test que fijaba la version llevaba la version en el NOMBRE
(runtime_version_v11_did_newtype) y su comentario quedaba mintiendo en
cuanto la spec subia. Renombrado a
spec_version_vigente_y_transaction_version_intacta.

MEDIDO: WASM build exit 0; seccion runtime_version presente y decodificada
(spec_name origin-chain, spec_version 12, tx 1); omni-bencher enumera los
19 benchmarks de los 5 pallets custom; 290 tests verde.

RV11 -> RV12. TRANSACTION_VERSION intacto. Sin migracion: no hay cadena
viva y ninguna transicion de estado cambia.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
davidherranandClaude Opus 5 committed 2026-09-09 10:13:33 -05:00
1 parent 4bdd0409f9
commit b7010db328
4 files changed
+143 -55

No files matched your search

Generated
+1
View File
@@ -6555,6 +6555,7 @@ dependencies = [
"sp-core",
"sp-genesis-builder 0.20.0",
"sp-inherents 39.0.0",
"sp-io 43.0.0",
"sp-offchain 39.0.0",
"sp-runtime 44.0.0",
"sp-session 41.0.0",