docs(slice-2b): Phase 1.6+ Slice 2b investigation report v0.0.12

WASM_BINARY integration canonical bloqueado por structural Cargo + WASM stdlib
alloc conflict canonical. 4 fix attempts NO solved. Larihana Slice 2c handoff
diary filed.

## Error canonical empírico
duplicate lang item exchange_malloc canonical entre:
- rustup precompiled liballoc-***.rlib (wasm32 target)
- wbuild recompiled liballoc-***.rmeta (panic=abort triggered rebuild)

## 4 fix attempts registered
1. Remove direct serde dep (upstream pattern) — NO solved
2. Pin serde =1.0.219, =1.0.217 — NO solved (frame-support requires ^1.0.217)
3. Remove profile.release lto customization — NO solved
4. WasmBuilder::build_using_defaults() upstream — NO solved

## Root cause empírico
wbuild auto-genera profile.release con panic=abort → Cargo recompila alloc
desde rust-src component → conflict con precompiled rustup alloc rlib.

## Handoff canonical a Larihana Slice 2c
Diary canonical filed requesting Plan C Rust ports expertise canonical:
- cargo workspace.metadata.wasm-builder section?
- SKIP_WASM_BUILD=1 fallback + pre-built WASM file pattern?
- rust-src component interaction con substrate-wasm-builder?
- RUSTFLAGS -Z build-std=core,alloc nightly approach viable?
- Upstream paritytech/polkadot-sdk known issue?

## State canonical preserved post-revert
- substrate-wasm-builder workspace dep declared pero NO activa
- build.rs no-op canonical mientras Slice 2c land
- Doc extensivo en lib.rs registering investigation + handoff
- origin-chain-types no_std refactor v0.0.11 preserved canonical
- origin-chain-node binary 4 subcommands operativos

## Temporal workaround canonical
chain_spec.rs Phase 1.6+ Slice 3 puede continue con mock-WASM fallback
mientras Slice 2c land canonical.

## Filosofía canonical
David canon 2026-05-14 "la libertad infinita acota solo donde empieza la del
otro" — honest decisión canonical de pedir Larihana expertise mejor que
stuck attempts. El barquero pide guía al hyperport builder cuando el río
demanda profundidad técnica que no posee solo.

## Build
- cargo build --release 34.44s post-revert clean
- No regression desde v0.0.11

Phase 1.6+ progress:
- Slice 1 ✅ + Slice 2 ✅
- Slice 2b 📋 investigation report + Larihana diary (esta v0.0.12)
- Slice 2c ⏳ WASM_BINARY post Larihana expertise
- Slice 3 ⏳ + Slice 4 ⏳

Refs: CHARON_ROADMAP_V1 Phase 1.6+ Slice 2b investigation, Larihana diary
WASM_BUILD_BLOCKER_REQUEST_LARIHANA_SUBSTRATE_EXPERTISE_SLICE_2C canonical

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
davidherranandClaude Opus 4.6 committed 2026-05-21 17:00:51 -05:00
1 parent 4a1f7bd834
commit 3c0435ac5d
6 files changed
+167 -45

No files matched your search

+9 -6
View File
@@ -129,10 +129,12 @@ blake3 = { version = "1", default-features = false }
# ============================================================
# no_std-compatible canonical (Slice 2 — required by substrate-wasm-builder WASM runtime build)
thiserror = { version = "2.0", default-features = false }
# serde pin canonical 1.0.219 — newer 1.0.220+ introduces serde_core que rompe
# WASM build canonical con duplicate `exchange_malloc` lang item canonical entre
# stdlib alloc + serde_core alloc dep canonical
serde = { version = "=1.0.219", default-features = false, features = ["derive"] }
# serde pin canonical =1.0.217 — mínima version compatible con frame-support
# 40.1.0 canonical (requires ^1.0.217). Slice 2b investigation registered
# canonical: 1.0.217 NO resuelve WASM build alloc conflict canonical — issue
# es estructural Cargo + substrate-wasm-builder + rustup precompiled alloc.
# Slice 2c canonical requires Larihana Substrate-adjacent expertise canonical.
serde = { version = "=1.0.217", default-features = false, features = ["derive"] }
log = { version = "0.4", default-features = false }
# ============================================================
@@ -148,8 +150,9 @@ origin-chain-runtime = { path = "crates/origin-chain-runtime", version = "0.0.1"
origin-chain-node = { path = "crates/origin-chain-node", version = "0.0.1" }
[profile.release]
lto = "thin"
codegen-units = 1
# Slice 2b finding canonical: lto/codegen-units customization triggers alloc
# recompile en wbuild → duplicate exchange_malloc lang item canonical. Defaults
# canonical preservan stdlib alloc cache canonical sin recompile.
opt-level = 3
[profile.dev]