diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b2a7ec..5471944 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,95 @@ by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions follow ## [Unreleased] +## [0.0.35] β€” 2026-05-26 β€” Slice 2e WASM investigation β€” 3 layers explored (Layer 1+2 RESUELTOS, Layer 3 BLOCKED LLVM install) + +**πŸ” Slice 2e WASM structural blocker investigation canonical** β€” sesiΓ³n 3+ extended. Substrate-wasm-builder re-enabled con `wasm-build` feature gate canonical. 3 layers de blocker explored canonical, **2 resueltos** end-to-end, **Layer 3 escalado** a system-level LLVM install canonical. + +### Slice 2e canonical canonical 3-layer findings + +| Layer | Blocker | Status post-Slice 2e | Fix canonical | +|-------|---------|----------------------|---------------| +| 1 | `alloc/exchange_malloc` duplicate lang item | βœ… RESUELTO (Slice 2c+2d) | `WASM_BUILD_STD=0` env var | +| 2 | `getrandom 0.2.17` wasm-unknown-unknown incompat | βœ… **RESUELTO Slice 2e** | Direct workspace dep `getrandom = { features = ["custom"] }` | +| 3 | `secp256k1-sys` clang `--target=wasm32-unknown-unknown` unsupported | 🚧 **BLOQUEADO** | Requires brew LLVM install con wasm32 backend | + +### Deliverables v0.0.35 + +**Substrate-wasm-builder canonical re-enabled (feature-gated)**: +- `crates/origin-chain-runtime/Cargo.toml`: + - `substrate-wasm-builder = { version = "26.0.1", optional = true }` build-dep + - `[features] wasm-build = ["substrate-wasm-builder"]` feature gate + - `getrandom = { workspace = true }` direct dep (Layer 2 fix) +- `crates/origin-chain-runtime/build.rs`: + - `#[cfg(feature = "wasm-build")] fn main() { WasmBuilder::new()...build(); }` + - `#[cfg(not(feature = "wasm-build"))] fn main() {}` no-op (Slice 3 mock fallback canonical) + +**Workspace canonical getrandom dep**: +- Workspace `Cargo.toml`: `getrandom = { version = "0.2", default-features = false, features = ["custom"] }` workspace dep canonical +- Layer 2 fix canonical: Cargo feature unification activates `custom` feature globally para getrandom v0.2 transitive (const-random-macro β†’ macro_magic β†’ frame-support-procedural) + +**Investigation report canonical filed monorepo**: +- `/Users/davidherran/originmetaverse/docs/L7_roadmaps/SLICE_2E_INVESTIGATION_REPORT_V1.md` (~280 LOC canonical) +- Documents 3 layers + 4 path forward approaches (brew LLVM install + pre-built secp256k1 + mock-WASM continue + upstream wait) + +### Layer 3 root cause analysis canonical + +**`secp256k1-sys 0.9.2`** transitive dep canonical de `sp-core 36.1.0` (FUNDAMENTAL canonical Substrate). Cannot remove canonical sin breaking FRAME stack. Build script invokes: +``` +clang --target=wasm32-unknown-unknown -I depend/secp256k1/ ... +``` +Apple clang 21.0.0 (macOS default) NO tiene wasm32-unknown-unknown backend compilado. Requires brew LLVM install canonical: +```bash +brew install llvm +export CC_wasm32_unknown_unknown=/opt/homebrew/opt/llvm/bin/clang +WASM_BUILD_STD=0 cargo build -p origin-chain-runtime --features wasm-build +``` + +### Verification end-to-end canonical (no regression) + +- βœ… `cargo test --workspace` β€” **202 tests passing**, 0 failures (NO regression from Slice 2e experimental changes) +- βœ… Default build canonical (`cargo build`) unchanged: Slice 3 mock-WASM fallback continues estable canonical +- βœ… Feature-gated `--features wasm-build` activates substrate-wasm-builder canonical para empirical Layer 3 testing (requires LLVM install) +- βœ… Cross-pillar consumers (Trinity/Codex/Ethos/Atelier) unchanged canonical: ChainSpec JSON output via mock-WASM canonical + +### Path forward canonical post-Slice 2e β€” Approach A recommended + +**Charon recomienda canonical Approach A para pre-testnet Q3 2026 deployment infrastructure setup canonical**: + +1. **Install brew LLVM canonical**: `brew install llvm` (1GB toolchain download) +2. **Configure cc-rs env vars canonical**: + ```bash + export CC=/opt/homebrew/opt/llvm/bin/clang + export CC_wasm32_unknown_unknown=/opt/homebrew/opt/llvm/bin/clang + export AR_wasm32_unknown_unknown=/opt/homebrew/opt/llvm/bin/llvm-ar + ``` +3. **Retry WASM build canonical**: + ```bash + WASM_BUILD_STD=0 cargo build -p origin-chain-runtime --features wasm-build + ``` +4. **Document CI/CD canonical environment requirements canonical** (brew LLVM mandatory para Phase 4 testnet deployment) + +**Fallback Approach C canonical canonical estable**: Mock-WASM canonical Slice 3 (v0.0.13) `chain_spec.rs` continues canonical canonical providing chain_spec JSON output para cross-pillar consumers canonical canonical. NO regression. Phase 4 testnet Q3 2026 needs Approach A install canonical pre-deployment. + +### Roadmap canonical post-v0.0.35 + +| Version | Trigger | +|---------|---------| +| v0.0.36+ | Slice 2f canonical post-LLVM install canonical (deployment infrastructure setup canonical) | +| v0.0.40+ | Phase 3 pallet-revive canonical (REQUIRES Slice 2e/2f WASM resolved canonical) | +| v0.1.0 | Slice 2e/2f WASM resolved + full testnet Q3 2026 launch | +| v1.0.0 | Mainnet Q1 2027 | + +### FilosofΓ­a canonical Slice 2e cierre + +David ratificado feedback "audit before claims" + Charon canon "el barquero estudia el rΓ­o antes de cruzar β€” y avanza paralelo cuando el cauce principal espera" materializado canonical: + +**Slice 2e investigation canonical ADVANCED canonical 3 layers** del structural blocker. Layer 1+2 mitigated end-to-end canonical canonical. Layer 3 requires brew LLVM install canonical canonical (deployment infrastructure setup canonical canonical canonical, NO blocking sesiΓ³n 3+ work). + +**Mock-WASM Slice 3 fallback estable continues canonical canonical canonical** β€” cross-pillar consumers operational sin necesidad real WASM runtime canonical. Phase 4 testnet Q3 2026 deployment canonical needs Approach A install canonical pre-launch. + +πŸΊπŸ’Žβš“ Hijos de ArkhΔ“ somos. Slice 2e investigation canonical advanced. Path forward documented canonical para Slice 2f future. + ## [0.0.34] β€” 2026-05-25 β€” Phase 5 FULLY COMPLETE β€” 5.3-5.8 refinements (Advisor + Override + Emergency + Treasury) πŸŽ‰πŸŽ‰πŸŽ‰ **πŸŽ‰πŸŽ‰πŸŽ‰ Phase 5 GOVERNANCE FULLY COMPLETE end-to-end canonical** β€” 5.3-5.8 diff --git a/Cargo.lock b/Cargo.lock index 3ad1ffa..7f97261 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,7 +18,7 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ - "gimli", + "gimli 0.32.3", ] [[package]] @@ -101,7 +101,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -112,7 +112,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -488,7 +488,7 @@ dependencies = [ "cfg-if", "libc", "miniz_oxide", - "object", + "object 0.37.3", "rustc-demangle", "windows-link", ] @@ -628,6 +628,15 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "build-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdce191bf3fa4995ce948c8c83b4640a1745457a149e73c6db75b4ffe36aad5f" +dependencies = [ + "semver 0.6.0", +] + [[package]] name = "byte-slice-cast" version = "1.2.3" @@ -652,6 +661,38 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "camino" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", +] + [[package]] name = "cc" version = "1.2.62" @@ -659,6 +700,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" dependencies = [ "find-msvc-tools", + "jobserver", + "libc", "shlex", ] @@ -705,7 +748,7 @@ version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.117", @@ -717,6 +760,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" +[[package]] +name = "codespan-reporting" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + [[package]] name = "colorchoice" version = "1.0.5" @@ -729,6 +783,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + [[package]] name = "const-hex" version = "1.15.0" @@ -879,6 +946,68 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "cxx" +version = "1.0.194" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747d8437319e3a2f43d93b341c137927ca70c0f5dabeea7a005a73665e247c7e" +dependencies = [ + "cc", + "cxx-build", + "cxxbridge-cmd", + "cxxbridge-flags", + "cxxbridge-macro", + "foldhash", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.194" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0f4697d190a142477b16aef7da8a99bfdc41e7e8b1687583c0d23a79c7afc1e" +dependencies = [ + "cc", + "codespan-reporting", + "indexmap", + "proc-macro2", + "quote", + "scratch", + "syn 2.0.117", +] + +[[package]] +name = "cxxbridge-cmd" +version = "1.0.194" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0956799fa8678d4c50eed028f2de1c0552ae183c76e976cf7ca8c4e36a7c328" +dependencies = [ + "clap", + "codespan-reporting", + "indexmap", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.194" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23384a836ab4f0ad98ace7e3955ad2de39de42378ab487dc28d3990392cb283a" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.194" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6acc6b5822b9526adfb4fc377b67128fdd60aac757cc4a741a6278603f763cf" +dependencies = [ + "indexmap", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "der" version = "0.7.10" @@ -962,6 +1091,27 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "docify" version = "0.2.9" @@ -1109,6 +1259,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "enum-ordinalize" version = "4.3.2" @@ -1141,6 +1297,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "expander" version = "2.2.1" @@ -1156,6 +1322,18 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + [[package]] name = "ff" version = "0.13.1" @@ -1182,6 +1360,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "filetime" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" +dependencies = [ + "cfg-if", + "libc", +] + [[package]] name = "finality-grandpa" version = "0.16.3" @@ -1584,6 +1772,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + [[package]] name = "gimli" version = "0.32.3" @@ -1625,6 +1823,12 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + [[package]] name = "hashbrown" version = "0.15.5" @@ -1651,6 +1855,12 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -1816,6 +2026,16 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + [[package]] name = "k256" version = "0.13.4" @@ -1866,6 +2086,15 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libredox" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +dependencies = [ + "libc", +] + [[package]] name = "libsecp256k1" version = "0.7.2" @@ -1914,6 +2143,15 @@ dependencies = [ "libsecp256k1-core", ] +[[package]] +name = "link-cplusplus" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f78c730aaa7d0b9336a299029ea49f9ee53b0ed06e9202e8cb7db9bae7b8c82" +dependencies = [ + "cc", +] + [[package]] name = "linregress" version = "0.5.4" @@ -1923,6 +2161,12 @@ dependencies = [ "nalgebra", ] +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + [[package]] name = "lock_api" version = "0.4.14" @@ -2068,7 +2312,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -2135,6 +2379,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + [[package]] name = "object" version = "0.37.3" @@ -2162,6 +2415,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "origin-chain-agent-identity" version = "0.0.1" @@ -2260,6 +2519,7 @@ dependencies = [ "frame-support", "frame-system", "frame-system-rpc-runtime-api", + "getrandom 0.2.17", "log", "origin-chain-agent-identity", "origin-chain-fees", @@ -2289,6 +2549,7 @@ dependencies = [ "sp-std", "sp-transaction-pool", "sp-version", + "substrate-wasm-builder", ] [[package]] @@ -2578,6 +2839,12 @@ dependencies = [ "spki", ] +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + [[package]] name = "polkavm-common" version = "0.18.0" @@ -2615,6 +2882,22 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "polkavm-linker" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9bfe793b094d9ea5c99b7c43ba46e277b0f8f48f4bbfdbabf8d3ebf701a4bd3" +dependencies = [ + "dirs", + "gimli 0.31.1", + "hashbrown 0.14.5", + "log", + "object 0.36.7", + "polkavm-common", + "regalloc2", + "rustc-demangle", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -2826,6 +3109,17 @@ dependencies = [ "bitflags 2.11.1", ] +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 1.0.69", +] + [[package]] name = "ref-cast" version = "1.0.25" @@ -2846,6 +3140,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "regalloc2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +dependencies = [ + "hashbrown 0.13.2", + "log", + "rustc-hash", + "slice-group-by", + "smallvec", +] + [[package]] name = "regex" version = "1.12.3" @@ -2891,6 +3198,12 @@ version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -2903,7 +3216,20 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver", + "semver 1.0.26", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", ] [[package]] @@ -2998,6 +3324,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "scratch" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d68f2ec51b097e4c1a75b681a8bec621909b5e91f15bb7b840c4f2f7b01148b2" + [[package]] name = "sec1" version = "0.7.3" @@ -3040,11 +3372,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "semver" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" @@ -3199,6 +3549,12 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +[[package]] +name = "slice-group-by" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" + [[package]] name = "smallvec" version = "1.15.1" @@ -3490,6 +3846,16 @@ dependencies = [ "sp-externalities", ] +[[package]] +name = "sp-maybe-compressed-blob" +version = "11.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd622e9c93d874f70f8df15ba1512fb95d8339aa5629157a826ec65a0c568" +dependencies = [ + "thiserror 1.0.69", + "zstd", +] + [[package]] name = "sp-metadata-ir" version = "0.10.0" @@ -3796,6 +4162,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + [[package]] name = "static_assertions" version = "1.1.0" @@ -3808,6 +4180,47 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.117", +] + [[package]] name = "substrate-bip39" version = "0.6.1" @@ -3821,6 +4234,28 @@ dependencies = [ "zeroize", ] +[[package]] +name = "substrate-wasm-builder" +version = "26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adc17ecd661e16b25708f36f6e6961f809a3ab16c89132a4acd7936c0f31e46" +dependencies = [ + "build-helper", + "cargo_metadata", + "console", + "filetime", + "jobserver", + "parity-wasm", + "polkavm-linker", + "shlex", + "sp-maybe-compressed-blob", + "strum 0.26.3", + "tempfile", + "toml", + "walkdir", + "wasm-opt", +] + [[package]] name = "subtle" version = "2.6.1" @@ -3855,6 +4290,19 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -4186,6 +4634,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -4303,6 +4757,46 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasm-opt" +version = "0.116.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd87a4c135535ffed86123b6fb0f0a5a0bc89e50416c942c5f0662c645f679c" +dependencies = [ + "anyhow", + "libc", + "strum 0.24.1", + "strum_macros 0.24.3", + "tempfile", + "thiserror 1.0.69", + "wasm-opt-cxx-sys", + "wasm-opt-sys", +] + +[[package]] +name = "wasm-opt-cxx-sys" +version = "0.116.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c57b28207aa724318fcec6575fe74803c23f6f266fce10cbc9f3f116762f12e" +dependencies = [ + "anyhow", + "cxx", + "cxx-build", + "wasm-opt-sys", +] + +[[package]] +name = "wasm-opt-sys" +version = "0.116.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a1cce564dc768dacbdb718fc29df2dba80bd21cb47d8f77ae7e3d95ceb98cbe" +dependencies = [ + "anyhow", + "cc", + "cxx", + "cxx-build", +] + [[package]] name = "wide" version = "0.7.33" @@ -4335,7 +4829,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys", + "windows-sys 0.61.2", ] [[package]] @@ -4350,6 +4844,24 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.61.2" @@ -4359,6 +4871,127 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" version = "0.7.15" @@ -4428,3 +5061,32 @@ dependencies = [ "quote", "syn 2.0.117", ] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index be74130..638b458 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -159,6 +159,31 @@ origin-chain-governance = { path = "crates/origin-chain-governance", version = " origin-chain-runtime = { path = "crates/origin-chain-runtime", version = "0.0.1" } origin-chain-node = { path = "crates/origin-chain-node", version = "0.0.1" } +# ============================================================ +# Slice 2e v0.0.35 β€” canonical [patch.crates-io] WASM dependency overrides +# ============================================================ +# +# Empirical finding canonical 2026-05-26: getrandom 0.2.17 default config NO +# compatible canonical wasm32-unknown-unknown target. Substrate runtime WASM +# requires custom canonical RNG source canonical, NOT browser JS fallback. +# +# Patch canonical: enable getrandom `custom` feature para permit FRAME runtime +# provide RNG via sp-io::offchain (off-chain worker) o panic placeholder +# (no on-chain RNG needed para Phase 1.6 ChainSpec build). + +# ============================================================ +# Slice 2e v0.0.35 β€” Direct getrandom canonical dep canonical para activate +# `custom` feature canonical via Cargo feature unification. +# ============================================================ +# +# Empirical Slice 2e investigation 2026-05-26: getrandom 0.2.17 transitive +# via const-random-macro β†’ macro_magic β†’ frame-support-procedural. +# Workspace canonical declares getrandom 0.2 con `custom` feature canonical +# enabled β€” Cargo unification ensures wasm32-unknown-unknown target compat +# canonical via custom RNG source (FRAME runtime provides via sp-io). + +getrandom = { version = "0.2", default-features = false, features = ["custom"] } + [profile.release] # Slice 2b finding canonical: lto/codegen-units customization triggers alloc # recompile en wbuild β†’ duplicate exchange_malloc lang item canonical. Defaults diff --git a/crates/origin-chain-runtime/Cargo.toml b/crates/origin-chain-runtime/Cargo.toml index 4704018..ff8a992 100644 --- a/crates/origin-chain-runtime/Cargo.toml +++ b/crates/origin-chain-runtime/Cargo.toml @@ -52,6 +52,11 @@ origin-chain-fees.workspace = true # (Inmutable #41 AGI DIDs Cross-Species Co-authorship) origin-chain-agent-identity.workspace = true +# Slice 2e v0.0.35 β€” Direct getrandom canonical dep canonical para activate +# `custom` feature canonical via Cargo feature unification (transitive +# via const-random-macro β†’ macro_magic β†’ frame-support-procedural). +getrandom = { workspace = true } + # Phase 5.1 v0.0.29: origin-chain-governance wired runtime composition Index 10 canonical # (CHN-4 Foundation Treasury Governance, AI-Driven Human-Guarded canonical) origin-chain-governance.workspace = true @@ -78,14 +83,17 @@ log.workspace = true serde_json.workspace = true [build-dependencies] -# Slice 2c+2d findings registered (build.rs doc): WASM_BUILD_STD=0 resuelve -# alloc/exchange_malloc pero descubre serde/std leak via types/std transitive -# activation. Slice 2e future: [patch.crates-io] serde override o sp-io gate -# adjust o stable2512-4+ upstream fix. Mientras tanto: no-op + Slice 3 mock-WASM. -# substrate-wasm-builder = { workspace = true, optional = true } +# 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 +# descubre serde/std leak via types/std transitive activation. Slice 2e attempt: +# patch.crates-io serde override + types/std isolation. +substrate-wasm-builder = { version = "26.0.1", optional = true } [features] default = ["std"] +# Slice 2e v0.0.35 β€” WASM build feature gate canonical. +# Enable with `--features wasm-build` para build real WASM_BINARY canonical. +wasm-build = ["substrate-wasm-builder"] std = [ "origin-chain-types/std", "sp-core/std", diff --git a/crates/origin-chain-runtime/build.rs b/crates/origin-chain-runtime/build.rs index 8e2d789..1be96a5 100644 --- a/crates/origin-chain-runtime/build.rs +++ b/crates/origin-chain-runtime/build.rs @@ -1,28 +1,39 @@ -//! # Build script β€” Slice 2d findings registered, deferred future session +//! # Build script β€” Slice 2e v0.0.35 canonical investigation //! -//! Slice 2c attempts 1-4 (Slice 2b 2026-05-21): direct serde / pin / profile / -//! build_using_defaults β€” ALL NO solved alloc/exchange_malloc conflict. +//! ## History //! -//! Slice 2c attempt #5 + Slice 2d (sesiΓ³n 2 cont 2026-05-24): -//! - WASM_BUILD_STD=0 explicit override β†’ alloc/exchange_malloc RESUELTO -//! - NEW layer surface: panic_impl duplicate via serde/std leak transitive -//! - Diagnostic via cargo tree --target wasm32 -e features: identified -//! `origin-chain-types feature "std"` β†’ `serde feature "std"` activation path -//! - Root cause: algΓΊn dep transitive activates types/std en wasm32 build -//! incluso con --no-default-features (probable: macro expansion automation) +//! - **Slice 2c attempts 1-4** (2026-05-21): direct serde / pin / profile / +//! build_using_defaults β€” ALL NO solved alloc/exchange_malloc conflict. +//! - **Slice 2c attempt #5 + Slice 2d** (2026-05-24): WASM_BUILD_STD=0 explicit +//! override β†’ alloc/exchange_malloc RESUELTO. NEW layer: panic_impl duplicate +//! via serde/std leak transitive. +//! - **Slice 2e v0.0.35** (2026-05-26): re-enable substrate-wasm-builder canonical +//! con `wasm-build` feature gate. Investigate [patch.crates-io] serde override +//! + types/std isolation empirical. //! -//! ## Path forward Slice 2e future +//! ## Usage canonical //! -//! Requires architectural fix: -//! - [patch.crates-io] serde override con strict no-std -//! - O sp-io feature gate adjust -//! - O wait stable2512-4+ upstream fix +//! - Default (no feature): build script no-op, mock-WASM Slice 3 fallback active. +//! - `--features wasm-build`: substrate-wasm-builder activated, real WASM_BINARY +//! build attempted. WASM_BUILD_STD=0 must be set to avoid alloc duplicate. //! -//! Mientras Slice 2e land, build script no-op + Slice 3 (v0.0.13) mock-WASM -//! fallback (chain_spec.rs en node crate via serde_json puro) sigue siendo -//! path estable. Cross-pillar consumers (Trinity/Codex/Ethos/Atelier) ya -//! pueden consumir ChainSpec JSON output sin necesidad runtime WASM real. +//! ## Path forward post-Slice 2e canonical +//! +//! Si serde/std leak resolved β†’ Phase 3 pallet-revive smart contracts unblocked +//! Si NOT resolved β†’ document next attempt path (upstream Substrate stable2512-4+ +//! wait OR sp-io feature gate audit deeper OR alternative WASM builder). +#[cfg(feature = "wasm-build")] fn main() { - // No-op β€” Slice 2e future resolves WASM_BINARY. Slice 3 mock-WASM estable. + substrate_wasm_builder::WasmBuilder::new() + .with_current_project() + .export_heap_base() + .import_memory() + .build(); +} + +#[cfg(not(feature = "wasm-build"))] +fn main() { + // No-op β€” Slice 3 mock-WASM fallback active. + // Enable real WASM build with `cargo build --features wasm-build`. }