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:
1 parent
4bdd0409f9
commit
b7010db328
4 files changed
+143
-55
No files matched your search
@@ -106,6 +106,12 @@ log.workspace = true
|
||||
# dep rompía isolated WASM build canonical.
|
||||
serde_json.workspace = true
|
||||
|
||||
[dev-dependencies]
|
||||
# Solo para `los_tres_presets_construyen_estado`: `TestExternalities` es el unico
|
||||
# sitio donde se puede EJECUTAR `build_state` y descubrir un genesis que panica.
|
||||
# Sin esto los presets se validaban leyendo su JSON, que es mirar la caja por fuera.
|
||||
sp-io = { workspace = true, default-features = true }
|
||||
|
||||
[build-dependencies]
|
||||
# Slice 2e v0.0.35 — Re-enabled substrate-wasm-builder for active investigation.
|
||||
# Slice 2c+2d findings: WASM_BUILD_STD=0 resuelve alloc/exchange_malloc pero
|
||||
|
||||
Reference in new issue
Block a user