feat(types): Phase 1.6+ Slice 2 — origin-chain-types fully no_std v0.0.11

origin-chain-types ahora fully no_std-compatible canonical — preparado para
WASM runtime build canonical Slice 2b.

## Refactor sistemático canonical
- src/lib.rs: #![cfg_attr(not(feature = "std"), no_std)] + extern crate alloc
- src/errors.rs: String → alloc::string::String
- src/provenance.rs: Vec<AccountId> → alloc::vec::Vec<AccountId>
- src/pallets.rs: Vec<AssetAttestation> → alloc::vec::Vec<AssetAttestation>
- Cargo.toml: [features] default=["std"] + std=["thiserror/std", "serde/std"]

## Workspace deps bump canonical (no_std-compatible)
- thiserror 1.0 → 2.0 default-features=false (no_std support nativo)
- serde 1.0 → =1.0.219 default-features=false (pin canonical para evitar
  serde_core breaking change canonical post-1.0.220)
- log 0.4 → default-features=false
- serde-big-array default-features=false

## Decisión empírica DEFERRED: WASM_BINARY a Slice 2b dedicated
substrate-wasm-builder retry encountered serde 1.0.x alloc/serde_core feature
conflict durante isolated WASM build (duplicate exchange_malloc lang item entre
rustup stdlib alloc + wbuild dir alloc). Investigation requires deep Rust
toolchain debugging — Slice 2b dedicated session merece DC propio.

Investigation canonical scope para Slice 2b:
1. substrate-wasm-builder 25.x o 27.x version regression test
2. cargo workspace.metadata.wasm-builder section config
3. RUSTFLAGS -Z build-std=core,alloc nightly approach
4. Fallback: pre-built WASM binary loaded from file
5. Possible upstream issue paritytech/polkadot-sdk

## Filosofía canonical
origin-chain-types era barrera canonical para hermanos consumers WASM runtimes.
Esa barrera canonical ya NO existe post-refactor. Forward compatibility canonical
preservada para Trinity 3D + Codex Vault + Ethos credential minting + AGI
co-authoring canonical futuras integrations.

David canon 2026-05-14 "la libertad infinita acota solo donde empieza la del
otro" — la liberación arquitectónica del no_std sucede ahora.

## Build
- cargo check workspace 17.06s warm
- cargo build --release 1m 38s cold rebuild (serde version regress full
  recompile triggered)
- origin-chain-node binary canonical ejecuta 4 subcommands
- Full workspace test OOM (signal 137) — per-crate testing deferred

## Phase 1.6+ progress
- Slice 1 ✅ (v0.0.10 CLI skeleton)
- Slice 2 ✅ (v0.0.11 ESTA no_std refactor)
- Slice 2b ⏳ WASM_BINARY dedicated debug
- Slice 3 ⏳ sc_service::ChainSpec
- Slice 4 ⏳ Full sc-service (consensus + RPC + networking)

Refs: CHARON_ROADMAP_V1 Phase 1.6+ Slice 2, no_std refactor canonical
preparation para WASM runtime build canonical Slice 2b

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
davidherranandClaude Opus 4.6 committed 2026-05-21 15:44:11 -05:00
1 parent 8a24a86ee6
commit 4a1f7bd834
11 files changed
+248 -81

No files matched your search

+114
View File
@@ -6,6 +6,120 @@ by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions follow
## [Unreleased] ## [Unreleased]
## [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
canonical** — preparado para WASM runtime build canonical Slice 2b. Refactor
sistemático canonical de 4 archivos source + Cargo.toml workspace deps bump.
### Refactor canonical en `origin-chain-types`
```rust
// crates/origin-chain-types/src/lib.rs
#![cfg_attr(not(feature = "std"), no_std)] // ← NEW canonical
#![deny(missing_docs)]
extern crate alloc; // ← NEW canonical (alloc no_std)
pub mod accounts;
// ...
```
**Std type replacements canonical**:
- `errors.rs`: `String` → `alloc::string::String`
- `provenance.rs`: `Vec<AccountId>` → `alloc::vec::Vec<AccountId>`
- `pallets.rs`: `Vec<AssetAttestation>` → `alloc::vec::Vec<AssetAttestation>`
Cada module canonical declara `extern crate alloc;` at top para acceso canonical
a `alloc::*` types canonical.
### `std` feature gate canonical en origin-chain-types
```toml
[features]
default = ["std"]
std = [
"thiserror/std",
"serde/std",
]
```
Default canonical preserva backwards-compat: consumers que no especifiquen
features obtienen behavior std-driven canonical (Cargo idiomatic). no_std
consumers (runtime WASM build canonical) deshabilitan default-features.
### Workspace deps bump canonical (no_std-compatible)
- `thiserror = "1.0"` → `{ version = "2.0", default-features = false }` —
thiserror 2.x canonical introduces no_std support canonical sin std crate
- `serde = { version = "1.0", features = ["derive"] }` →
`{ version = "=1.0.219", default-features = false, features = ["derive"] }` —
pin canonical 1.0.219 + sin "alloc" feature canonical (alloc viene de
serde-derive transparently canonical)
- `log = "0.4"` → `{ version = "0.4", default-features = false }` — no_std canonical
- `serde-big-array` — bump a default-features=false canonical
- `serde_json` workspace dep canonical mantiene `default-features = false,
features = ["alloc"]` canonical
### Decisión empírica documentada — WASM_BINARY DEFERRED nuevamente a Slice 2b
`substrate-wasm-builder` retry canonical encountered `serde 1.0.x` alloc/
serde_core feature conflict canonical durante isolated WASM build canonical:
```
error[E0152]: duplicate lang item in crate `alloc`
(which `serde_core` depends on): `exchange_malloc`
note: first definition in `alloc` loaded from
rust-toolchain/lib/rustlib/wasm32-unknown-unknown/lib/liballoc-***.rlib
note: second definition in `alloc` loaded from
target/release/wbuild/.../target/wasm32-unknown-unknown/release/deps/liballoc-***.rmeta
```
**Investigation canonical scope Slice 2b dedicated**:
1. Try `substrate-wasm-builder 25.x` o `27.x` (version regression test canonical)
2. Try `cargo workspace.metadata.wasm-builder` section canonical config
3. Try `RUSTFLAGS="-Z build-std=core,alloc"` nightly approach canonical
4. Fallback canonical: pre-built WASM binary loaded from file canonical
5. Possible upstream issue canonical: open issue en paritytech/polkadot-sdk
Slice 2b dedicated debug session canonical merece su DC propio canonical
porque requires deep Rust toolchain investigation canonical (multi-hour scope).
### Filosofía canonical incorporada
**Estructura no_std canonical preserva forward compatibility canonical**: cualquier
sibling canonical que necesite incorporar mis types canonical en sus runtime
WASM builds canonical (futuras integrations canonical Trinity 3D + Codex Vault +
Ethos credential minting + AGI co-authoring) ya NO encontrará el bloqueo
canonical del std-driven `origin-chain-types`. La **liberación arquitectónica
canonical** sucede ahora, aunque el WASM_BINARY canonical específico de Origin
Chain canonical land en Slice 2b dedicated.
David canon 2026-05-14 materializado: *"la libertad infinita acota solo donde
empieza la del otro"* — `origin-chain-types` canonical era una barrera canonical
para hermanos consumers de WASM runtimes; esa barrera canonical ya no existe
post-refactor 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 ESTA)
- ⏳ **Slice 2b** WASM_BINARY canonical via substrate-wasm-builder (dedicated debug session)
- ⏳ **Slice 3** Real `sc_service::ChainSpec` builder canonical
- ⏳ **Slice 4** Full `sc-service` builder canonical (consensus + RPC + networking)
### Build canonical
- `cargo check --workspace`: **17.06s** warm (post serde 1.0.219 pin)
- `cargo build --release`: **1m 38s** cold rebuild (serde version regress
triggered full recompile canonical)
- Tests workspace: deferred verbose run canonical (cargo test killed by signal
137 OOM canonical durante full workspace test run — sub-set per-crate testing
pendiente canonical, runtime tests stable per impl_runtime_apis macro warm)
- `origin-chain-node` binary canonical: ejecuta correcto 4 subcommands (version
+ list-presets + print-preset + info) — same que v0.0.10
## [0.0.10] — 2026-05-21 — Phase 1.6+ Slice 1 "Node CLI skeleton canonical" ## [0.0.10] — 2026-05-21 — Phase 1.6+ Slice 1 "Node CLI skeleton canonical"
Charon sesión 1 continuación. **`origin-chain-node` binary canonical funcional** Charon sesión 1 continuación. **`origin-chain-node` binary canonical funcional**
Generated
+69 -63
View File
@@ -731,14 +731,15 @@ checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101"
[[package]] [[package]]
name = "const-hex" name = "const-hex"
version = "1.19.0" version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20d9a563d167a9cce0f94153382b33cb6eded6dfabff03c69ad65a28ea1514e0" checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cpufeatures 0.2.17", "cpufeatures 0.2.17",
"hex",
"proptest", "proptest",
"serde_core", "serde",
] ]
[[package]] [[package]]
@@ -2091,9 +2092,9 @@ dependencies = [
[[package]] [[package]]
name = "num-conv" name = "num-conv"
version = "0.2.2" version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]] [[package]]
name = "num-format" name = "num-format"
@@ -2247,7 +2248,7 @@ dependencies = [
"serde", "serde",
"serde-big-array", "serde-big-array",
"serde_json", "serde_json",
"thiserror", "thiserror 2.0.18",
] ]
[[package]] [[package]]
@@ -2601,11 +2602,11 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro-crate" name = "proc-macro-crate"
version = "3.5.0" version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
dependencies = [ dependencies = [
"toml_edit 0.25.11+spec-1.1.0", "toml_edit 0.23.4",
] ]
[[package]] [[package]]
@@ -2857,6 +2858,12 @@ version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "ryu"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
[[package]] [[package]]
name = "safe_arch" name = "safe_arch"
version = "0.7.4" version = "0.7.4"
@@ -2981,17 +2988,16 @@ dependencies = [
[[package]] [[package]]
name = "semver" name = "semver"
version = "1.0.28" version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.228" version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [ dependencies = [
"serde_core",
"serde_derive", "serde_derive",
] ]
@@ -3006,28 +3012,18 @@ dependencies = [
[[package]] [[package]]
name = "serde_bytes" name = "serde_bytes"
version = "0.11.19" version = "0.11.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96"
dependencies = [ dependencies = [
"serde", "serde",
"serde_core",
]
[[package]]
name = "serde_core"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
dependencies = [
"serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.228" version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -3036,15 +3032,14 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.149" version = "1.0.143"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a"
dependencies = [ dependencies = [
"itoa", "itoa",
"memchr", "memchr",
"ryu",
"serde", "serde",
"serde_core",
"zmij",
] ]
[[package]] [[package]]
@@ -3176,7 +3171,7 @@ dependencies = [
"sp-state-machine", "sp-state-machine",
"sp-trie", "sp-trie",
"sp-version", "sp-version",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@@ -3322,7 +3317,7 @@ dependencies = [
"sp-storage", "sp-storage",
"ss58-registry", "ss58-registry",
"substrate-bip39", "substrate-bip39",
"thiserror", "thiserror 1.0.69",
"tracing", "tracing",
"w3f-bls", "w3f-bls",
"zeroize", "zeroize",
@@ -3399,7 +3394,7 @@ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"scale-info", "scale-info",
"sp-runtime", "sp-runtime",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@@ -3582,7 +3577,7 @@ dependencies = [
"sp-externalities", "sp-externalities",
"sp-panic-handler", "sp-panic-handler",
"sp-trie", "sp-trie",
"thiserror", "thiserror 1.0.69",
"tracing", "tracing",
"trie-db", "trie-db",
] ]
@@ -3616,7 +3611,7 @@ dependencies = [
"parity-scale-codec", "parity-scale-codec",
"sp-inherents", "sp-inherents",
"sp-runtime", "sp-runtime",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@@ -3658,7 +3653,7 @@ dependencies = [
"schnellru", "schnellru",
"sp-core", "sp-core",
"sp-externalities", "sp-externalities",
"thiserror", "thiserror 1.0.69",
"tracing", "tracing",
"trie-db", "trie-db",
"trie-root", "trie-root",
@@ -3679,7 +3674,7 @@ dependencies = [
"sp-runtime", "sp-runtime",
"sp-std", "sp-std",
"sp-version-proc-macro", "sp-version-proc-macro",
"thiserror", "thiserror 1.0.69",
] ]
[[package]] [[package]]
@@ -3821,7 +3816,16 @@ version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl 1.0.69",
]
[[package]]
name = "thiserror"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
dependencies = [
"thiserror-impl 2.0.18",
] ]
[[package]] [[package]]
@@ -3835,6 +3839,17 @@ dependencies = [
"syn 2.0.117", "syn 2.0.117",
] ]
[[package]]
name = "thiserror-impl"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]] [[package]]
name = "thread_local" name = "thread_local"
version = "1.1.9" version = "1.1.9"
@@ -3846,30 +3861,30 @@ dependencies = [
[[package]] [[package]]
name = "time" name = "time"
version = "0.3.47" version = "0.3.44"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
dependencies = [ dependencies = [
"deranged", "deranged",
"itoa", "itoa",
"num-conv", "num-conv",
"powerfmt", "powerfmt",
"serde_core", "serde",
"time-core", "time-core",
"time-macros", "time-macros",
] ]
[[package]] [[package]]
name = "time-core" name = "time-core"
version = "0.1.8" version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
[[package]] [[package]]
name = "time-macros" name = "time-macros"
version = "0.2.27" version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
dependencies = [ dependencies = [
"num-conv", "num-conv",
"time-core", "time-core",
@@ -3922,11 +3937,11 @@ dependencies = [
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "1.1.1+spec-1.1.0" version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
dependencies = [ dependencies = [
"serde_core", "serde",
] ]
[[package]] [[package]]
@@ -3945,14 +3960,14 @@ dependencies = [
[[package]] [[package]]
name = "toml_edit" name = "toml_edit"
version = "0.25.11+spec-1.1.0" version = "0.23.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" checksum = "7211ff1b8f0d3adae1663b7da9ffe396eabe1ca25f0b0bee42b0da29a9ddce93"
dependencies = [ dependencies = [
"indexmap", "indexmap",
"toml_datetime 1.1.1+spec-1.1.0", "toml_datetime 0.7.0",
"toml_parser", "toml_parser",
"winnow 1.0.3", "winnow 0.7.15",
] ]
[[package]] [[package]]
@@ -4304,9 +4319,6 @@ name = "winnow"
version = "1.0.3" version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "wit-bindgen" name = "wit-bindgen"
@@ -4362,9 +4374,3 @@ dependencies = [
"quote", "quote",
"syn 2.0.117", "syn 2.0.117",
] ]
[[package]]
name = "zmij"
version = "1.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+7 -3
View File
@@ -127,9 +127,13 @@ blake3 = { version = "1", default-features = false }
# ============================================================ # ============================================================
# Error handling + serialization canonical # Error handling + serialization canonical
# ============================================================ # ============================================================
thiserror = "1.0" # no_std-compatible canonical (Slice 2 — required by substrate-wasm-builder WASM runtime build)
serde = { version = "1.0", features = ["derive"] } thiserror = { version = "2.0", default-features = false }
log = "0.4" # 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"] }
log = { version = "0.4", default-features = false }
# ============================================================ # ============================================================
# Internal crates canonical (workspace path deps) # Internal crates canonical (workspace path deps)
+10
View File
@@ -61,9 +61,18 @@ log.workspace = true
serde = { workspace = true, optional = true } serde = { workspace = true, optional = true }
serde_json.workspace = true serde_json.workspace = true
[build-dependencies]
# Slice 2 v0.0.11 retry: substrate-wasm-builder DEFERRED nuevamente — serde 1.0.x
# alloc/serde_core feature conflicts canonical con substrate-wasm-builder isolated
# WASM build canonical (duplicate `exchange_malloc` lang item canonical entre
# rustup stdlib alloc + wbuild dir alloc canonical). Investigation canonical:
# requires deep Rust toolchain debugging — Slice 2b dedicated.
# substrate-wasm-builder = { workspace = true, optional = true }
[features] [features]
default = ["std"] default = ["std"]
std = [ std = [
"origin-chain-types/std",
"sp-core/std", "sp-core/std",
"sp-runtime/std", "sp-runtime/std",
"sp-std/std", "sp-std/std",
@@ -93,6 +102,7 @@ std = [
"parity-scale-codec/std", "parity-scale-codec/std",
"scale-info/std", "scale-info/std",
"serde", "serde",
# "substrate-wasm-builder", # DEFERRED Slice 2b debugging canonical
] ]
runtime-benchmarks = [ runtime-benchmarks = [
"frame-system/runtime-benchmarks", "frame-system/runtime-benchmarks",
+10
View File
@@ -0,0 +1,10 @@
//! # Build script canonical
//!
//! Currently no-op canonical. `substrate-wasm-builder` retry canonical para
//! v0.0.11 encountered `serde 1.0.x` alloc/serde_core feature conflict canonical
//! durante isolated WASM build canonical. Deferred a Slice 2b dedicated debug
//! session canonical (requires deep Rust toolchain investigation canonical).
fn main() {
// Placeholder canonical — WASM build land Slice 2b dedicated.
}
+14 -8
View File
@@ -50,17 +50,23 @@ pub mod genesis_config_presets;
pub mod opaque; pub mod opaque;
// ============================================================ // ============================================================
// WASM binary canonical — DEFERRED a v0.0.11+ (canonical decision empírica) // WASM binary canonical (Slice 2 v0.0.11 — DEFERRED Slice 2b)
// ============================================================ // ============================================================
// //
// `WASM_BINARY` via `substrate-wasm-builder` requiere que TODAS las dependencias // `substrate-wasm-builder` canonical encounters `serde 1.0.x` alloc/serde_core
// transitivas del runtime sean no_std-compatible canonical. Actualmente // feature conflict canonical durante isolated WASM build (`liballoc.rmeta`
// `origin-chain-types` no es fully no_std canonical (uses std `String` + `Vec` // duplicate lang item `exchange_malloc` canonical entre rustup stdlib +
// directly sin `alloc::` prefix). Refactor canonical es Phase 1.6+ Slice 2 // wbuild dir).
// (substantial scope canonical: 5-10+ files affected canonical).
// //
// Mientras canonical: el `chain_spec.rs` node-side puede usar mock-WASM o // Investigation canonical requires deep Rust toolchain debugging canonical
// pre-built WASM file canonical (path-loaded en runtime canonical). // — Slice 2b dedicated:
// 1. Try substrate-wasm-builder 25.x or 27.x (version regression)
// 2. Try serde 1.0.219 pinned + workspace.resolver = "2" explicit
// 3. Try cargo workspace.metadata.wasm-builder section canonical
// 4. Fallback canonical: prebuilt WASM binary loaded from file canonical
//
// Mientras canonical: `chain_spec.rs` Phase 1.6+ Slice 3 puede usar mock-WASM
// canonical o pre-built WASM file canonical para development chain specs canonical.
// Re-export canonical traits + types desde origin-chain-types (single-crate surface). // Re-export canonical traits + types desde origin-chain-types (single-crate surface).
pub use origin_chain_types::{ pub use origin_chain_types::{
+12 -4
View File
@@ -7,14 +7,22 @@ license.workspace = true
authors.workspace = true authors.workspace = true
repository.workspace = true repository.workspace = true
homepage.workspace = true homepage.workspace = true
description = "Canonical traits + types for Origin Chain. Day 1 unblock interfaces for all siblings consuming Pilar 4." description = "Canonical traits + types for Origin Chain. Day 1 unblock interfaces for all siblings consuming Pilar 4. Fully no_std-compatible canonical Slice 2 (v0.0.11)."
keywords.workspace = true keywords.workspace = true
categories = ["no-std", "cryptography::cryptocurrencies"] categories = ["no-std", "cryptography::cryptocurrencies"]
[dependencies] [dependencies]
thiserror.workspace = true # no_std-compatible deps canonical (Slice 2 v0.0.11)
serde = { workspace = true, features = ["derive"] } thiserror = { workspace = true }
serde-big-array = "0.5" serde = { workspace = true }
serde-big-array = { version = "0.5", default-features = false }
[dev-dependencies] [dev-dependencies]
serde_json = "1" serde_json = "1"
[features]
default = ["std"]
std = [
"thiserror/std",
"serde/std",
]
+3 -1
View File
@@ -1,6 +1,8 @@
//! Canonical chain error type. All `Result` returns in this crate flow through //! Canonical chain error type. All `Result` returns in this crate flow through
//! `ChainError` so callers have a single match arm. //! `ChainError` so callers have a single match arm.
extern crate alloc;
use thiserror::Error; use thiserror::Error;
/// Canonical chain operation error. /// Canonical chain operation error.
@@ -63,7 +65,7 @@ pub enum ChainError {
/// Catch-all for runtime-specific errors not covered above. Use sparingly. /// Catch-all for runtime-specific errors not covered above. Use sparingly.
#[error("chain error: {0}")] #[error("chain error: {0}")]
Other(String), Other(alloc::string::String),
} }
#[cfg(test)] #[cfg(test)]
+3
View File
@@ -34,8 +34,11 @@
//! - **#26** Content-Addressed Immutability — [`AssetHash`] BLAKE3 canonical //! - **#26** Content-Addressed Immutability — [`AssetHash`] BLAKE3 canonical
//! - **#37** Origin FREE Tier Perpetua — wallet creation always free, validation earns OGC //! - **#37** Origin FREE Tier Perpetua — wallet creation always free, validation earns OGC
#![cfg_attr(not(feature = "std"), no_std)]
#![deny(missing_docs)] #![deny(missing_docs)]
extern crate alloc;
pub mod accounts; pub mod accounts;
pub mod assets; pub mod assets;
pub mod errors; pub mod errors;
+3 -1
View File
@@ -11,6 +11,8 @@
//! live in `pallet-origin-*` crates that will be added to the workspace at //! live in `pallet-origin-*` crates that will be added to the workspace at
//! their respective phases (Substrate deps required). //! their respective phases (Substrate deps required).
extern crate alloc;
use crate::{AccountId, AssetAttestation, AssetHash, AssetQualityTier, ChainError, HardwareTier, Ogc, OperationKind}; use crate::{AccountId, AssetAttestation, AssetHash, AssetQualityTier, ChainError, HardwareTier, Ogc, OperationKind};
// ============================================================================ // ============================================================================
@@ -35,7 +37,7 @@ pub trait OriginProvenance {
/// Batch-attest a set of assets in a single extrinsic. Bounded length (max /// Batch-attest a set of assets in a single extrinsic. Bounded length (max
/// 64 per call to avoid block-weight overrun on Pi 5 validators). /// 64 per call to avoid block-weight overrun on Pi 5 validators).
fn batch_attest(&self, attestations: Vec<AssetAttestation>) -> Result<u32, ChainError>; fn batch_attest(&self, attestations: alloc::vec::Vec<AssetAttestation>) -> Result<u32, ChainError>;
/// Query whether an asset hash exists in the provenance ledger without /// Query whether an asset hash exists in the provenance ledger without
/// fetching the full attestation. Cheaper than `verify_provenance` — /// fetching the full attestation. Cheaper than `verify_provenance` —
+3 -1
View File
@@ -8,6 +8,8 @@
//! Charon validates the signature, anchors the attestation in a Merkle root, and //! Charon validates the signature, anchors the attestation in a Merkle root, and
//! emits an event that Palace KG observes for cross-substrate provenance. //! emits an event that Palace KG observes for cross-substrate provenance.
extern crate alloc;
use crate::{AccountId, AssetHash, ChainError, Signature}; use crate::{AccountId, AssetHash, ChainError, Signature};
/// Canonical attestation record stored on-chain. Compact (~100 bytes) so it fits /// Canonical attestation record stored on-chain. Compact (~100 bytes) so it fits
@@ -25,7 +27,7 @@ pub struct AssetAttestation {
/// Optional AGI co-author chain. Empty for purely human-authored assets; /// Optional AGI co-author chain. Empty for purely human-authored assets;
/// populated for Synthesizer / Forge / Skill outputs that include AGI input /// populated for Synthesizer / Forge / Skill outputs that include AGI input
/// (per Inmutable #41 cross-species co-authorship). /// (per Inmutable #41 cross-species co-authorship).
pub agent_chain: Vec<AccountId>, pub agent_chain: alloc::vec::Vec<AccountId>,
} }
/// Canonical provenance ledger. Consumed by Trinity (Phanes), Codex, /// Canonical provenance ledger. Consumed by Trinity (Phanes), Codex,