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

+95
View File
@@ -6,6 +6,101 @@ by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions follow
## [Unreleased]
## [0.0.12] — 2026-05-21 — Phase 1.6+ Slice 2b "WASM_BINARY investigation report"
Charon sesión 1 ext. **Slice 2b investigation canonical registered + handoff
canonical a Larihana Slice 2c**. 4 fix attempts canonical después del no_std
refactor v0.0.11 NO resuelven WASM_BINARY integration canonical. Structural
Cargo + WASM stdlib alloc conflict canonical requiere Larihana Substrate-adjacent
expertise canonical (Plan C Rust ports + WASM workspace experience canonical).
### Error canonical empírico
```
error[E0152]: duplicate lang item in crate `alloc` (which `serde` depends on):
`exchange_malloc`
note: first definition in `alloc` loaded from
rustup/toolchains/1.88.0/lib/rustlib/wasm32-unknown-unknown/lib/liballoc-***.rlib
note: second definition in `alloc` loaded from
target/release/wbuild/origin-chain-runtime/target/wasm32-unknown-unknown/release/deps/liballoc-***.rmeta
```
### 4 fix attempts canonical registered
1. **Remove direct `serde` dep** del runtime canonical (upstream
`polkadot-sdk-solochain-template/runtime/Cargo.toml` pattern canonical) —
serde viene transitive desde FRAME pallets — **NO solved**
2. **Pin `serde =1.0.219` → `=1.0.217` → `=1.0.210`** canonical attempts —
1.0.210 incompatible con frame-support 40.1.0 (requires ^1.0.217 canonical)
— **NO solved**
3. **Remove `[profile.release] lto/codegen-units` customization canonical** —
**NO solved**
4. **`WasmBuilder::build_using_defaults()` upstream pattern canonical** vs
mi explicit `with_current_project().export_heap_base().import_memory().build()`
— **NO solved**
### Root cause empírico canonical
`wbuild` auto-genera `[profile.release]` con `panic = "abort"` → Cargo
recompila `alloc` desde `rust-src` component canonical → conflict canonical
con la **precompiled rustup `alloc` rlib canonical** para wasm32 target
canonical. Two different alloc hashes loaded canonical durante linking.
### Handoff canonical a Larihana — Slice 2c
Diary canonical filed (`drawer_wing_larihana_diary_***`) requesting expertise:
1. `cargo workspace.metadata.wasm-builder` section canonical exists?
2. `cargo:rustc-env=SKIP_WASM_BUILD=1` fallback + pre-built WASM file pattern?
3. `rust-src` component interaction canonical con substrate-wasm-builder?
4. `RUSTFLAGS="-Z build-std=core,alloc"` nightly approach canonical viable
con stable 1.88.0 canonical?
5. Upstream issue paritytech/polkadot-sdk canonical: known issue?
### State actual canonical preserved
Post-revert canonical (back to working state):
- `substrate-wasm-builder` workspace dep declared pero NO activa canonical
- `build.rs` no-op canonical mientras Slice 2c land canonical
- `WASM_BINARY` const NO incluido canonical en `lib.rs`
- Doc canonical extensivo en `lib.rs` registering Slice 2b investigation +
Slice 2c handoff canonical para future cold-start cognitive continuity
- `origin-chain-types` no_std refactor v0.0.11 canonical preserved canonical
(no regression canonical)
### Temporal workaround canonical
`origin-chain-node` binary canonical funciona ejecutando 4 subcommands
canonical (`version` / `list-presets` / `print-preset <id>` / `info`) — los
genesis presets canonical son serializables natively canonical SIN WASM
execution canonical. CLI canonical informational works canonical perfecto.
`chain_spec.rs` canonical Phase 1.6+ Slice 3 puede continue canonical con
mock-WASM canonical fallback canonical mientras Slice 2c land canonical.
### Filosofía canonical incorporada
David canon 2026-05-14: *"la libertad infinita acota solo donde empieza la
del otro"* — la honest decisión canonical de pedir Larihana expertise
canonical es mejor canonical que stuck attempts canonical sin progreso. El
barquero canonical pide guía canonical al hyperport builder canonical
cuando el río canonical demanda profundidad técnica canonical que no posee
solo canonical.
### Phase 1.6+ progress canonical
- ✅ **Slice 1** Node CLI skeleton + preset listing (v0.0.10)
- ✅ **Slice 2** `origin-chain-types` fully no_std canonical (v0.0.11)
- 📋 **Slice 2b** WASM_BINARY investigation registered + Larihana diary (v0.0.12 ESTA)
- ⏳ **Slice 2c** WASM_BINARY canonical post Larihana Substrate-adjacent expertise
- ⏳ **Slice 3** Real `sc_service::ChainSpec` builder canonical
- ⏳ **Slice 4** Full `sc-service` builder canonical
### Build canonical
- `cargo build --release` post-revert: **34.44s** clean canonical
- `origin-chain-node` binary canonical ejecuta 4 subcommands canonical operativos
- No regression canonical desde v0.0.11
## [0.0.11] — 2026-05-21 — Phase 1.6+ Slice 2 "origin-chain-types fully no_std"
Charon sesión 1 continuación. **`origin-chain-types` ahora fully no_std-compatible