feat(slice-4): v0.0.49 — core2 yanked unblock + sc-service WIP (crates.io API gap found)
Slice 4 Ship 2 parcial. RESUELVE el blocker real que difirió sc-service 3
sesiones (core2 yanked), pero DESCUBRE un segundo bloqueo arquitectural que
requiere decisión de David. Build verde, 213 tests, sin regresiones.
=== RESUELTO: core2 yanked (el muro de 3 sesiones) ===
sc-network-types 0.16 → cid ^0.9 (0.9.0 yanked) → core2 ^0.4 (0.4.0 yanked,
las no-yanked son 0.3.x que no satisfacen ^0.4). Cargo no auto-selecciona
versiones yanked → resolución fallaba. Era exactamente lo documentado en
chain_spec.rs Slice 3 que difirió sc-service.
Fix: vendorizado el .crate publicado de core2 0.4.0 (yanked pero descargable)
en vendor/core2-0.4.0/ + [patch.crates-io] core2 = { path = ... }. Una path
source es seleccionable independiente del estado yanked. El git source
(technocreatives/core2 master) resultó ser workspace ≤0.3.x, no servía.
=== DESCUBIERTO: crates.io consensus crates ≠ git tag API ===
Las crates sc-/sp- consensus PUBLICADAS (sc-consensus-aura 0.52.0 +
sp-consensus-aura 0.45.0) tienen API DISTINTA al git tag polkadot-stable2509-3
bajo el MISMO número de versión:
- git tag: sc_consensus_aura::standalone::slot_duration_at +
sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_slot_duration
- crates.io: slot_duration_at en root + NO existe slot InherentDataProvider
(Slot no implementa el trait; Slot::from_timestamp toma 1 arg)
polkadot-sdk reusa números de versión con cambios git no publicados.
Construir un node service real requiere migrar TODO el stack sc-/sp- consensus
a git sources del tag — la misma cirugía duplicate-crate que golpeó pallet-revive
(Ship 2 v0.0.39). Decisión arquitectural para David.
Cambios:
- Cargo.toml: [patch.crates-io] core2 path vendor + sp-timestamp 39 + sp-blockchain 41
- vendor/core2-0.4.0/: crate vendorizado (yanked artifact original)
- node Cargo.toml: 13 sc-* + sp- consensus deps + jsonrpsee/rpc + core2 unblock dep
- node src/service.rs + rpc.rs: WIP escritos (verbatim stable2509-3 + 2 fixes API
crates.io), NO mod-declarados (preservados para siguiente fase)
- node src/main.rs: finding documentado, mods service/rpc neutralizados
Verificación:
- cargo check -p origin-chain-node: EXIT 0 (deps resuelven vía core2, mods off)
- cargo test --workspace: 213 verde, 0 fail, sin regresiones
- core2 0.4.0 + cid 0.9.0 ahora en Cargo.lock (vía path patch)
Próximo: decisión David — (A) migrar sc-/sp- consensus a git sources tag
stable2509-3 (real node, riesgo duplicate-crate) vs (B) mantener publicadas
(node service diferido a futura generación Substrate). Ver SLICE_4 plan §10.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
05b6c70fca
commit
e0e0b907b7
24 files changed
+12242
-227
No files matched your search
@@ -7,19 +7,69 @@ license.workspace = true
|
||||
authors.workspace = true
|
||||
repository.workspace = true
|
||||
homepage.workspace = true
|
||||
description = "Origin Chain node binary canonical. Phase 1.6+ Slice 1 (v0.0.10): CLI skeleton + preset listing. Slice 3 (v0.0.13): real sc_chain_spec::GenericChainSpec builder canonical via mock-WASM fallback. Real sc-service builder + JSON-RPC + WASM binary canonical land Slices 2c + 4."
|
||||
description = "Origin Chain node binary. Phase 1.6+ Slice 4 (v0.0.49+): full sc-service builder (Aura + Grandpa consensus + JSON-RPC + libp2p networking + telemetry) + sc_service::GenericChainSpec con WASM_BINARY real. Pilar 4 settlement layer."
|
||||
|
||||
[[bin]]
|
||||
name = "origin-chain-node"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
origin-chain-runtime.workspace = true
|
||||
sp-genesis-builder.workspace = true
|
||||
# Slice 3 canonical (v0.0.13) — own minimal ChainSpec JSON builder canonical via
|
||||
# serde_json puro. sc-chain-spec dep canonical evitada (43/44.0.0 trae sc-network
|
||||
# 0.50/0.51 mismatch + cid 0.9.0 yanked core2). Real sc_chain_spec::GenericChainSpec
|
||||
# canonical land en Slice 4 post workspace sc-* upgrade canonical sin yanked deps.
|
||||
# Runtime (std host-side). El feature `wasm-build` (opt-in, ver [features]) se
|
||||
# propaga al runtime para poblar WASM_BINARY consumido por chain_spec.
|
||||
origin-chain-runtime = { workspace = true, features = ["std"] }
|
||||
|
||||
# ── Substrate client (sc-service stack, stable2509-3) ──────────
|
||||
sc-cli.workspace = true
|
||||
sc-service.workspace = true
|
||||
sc-executor.workspace = true
|
||||
sc-network.workspace = true
|
||||
sc-consensus.workspace = true
|
||||
sc-consensus-aura.workspace = true
|
||||
sc-consensus-grandpa.workspace = true
|
||||
sc-transaction-pool.workspace = true
|
||||
sc-transaction-pool-api.workspace = true
|
||||
sc-client-api.workspace = true
|
||||
sc-basic-authorship.workspace = true
|
||||
sc-telemetry.workspace = true
|
||||
sc-offchain.workspace = true
|
||||
|
||||
# ── Substrate primitives (host-side, std) ─────────────────────
|
||||
sp-core = { workspace = true, features = ["std"] }
|
||||
sp-runtime = { workspace = true, features = ["std"] }
|
||||
sp-io = { workspace = true, features = ["std"] }
|
||||
sp-timestamp = { workspace = true, features = ["std"] }
|
||||
sp-consensus-aura = { workspace = true, features = ["std"] }
|
||||
sp-api = { workspace = true, features = ["std"] }
|
||||
sp-block-builder = { workspace = true, features = ["std"] }
|
||||
sp-genesis-builder = { workspace = true, features = ["std"] }
|
||||
sp-blockchain.workspace = true
|
||||
|
||||
# ── RPC server (jsonrpsee) ────────────────────────────────────
|
||||
jsonrpsee.workspace = true
|
||||
substrate-frame-rpc-system.workspace = true
|
||||
pallet-transaction-payment-rpc.workspace = true
|
||||
|
||||
# ── CLI + async + utils ───────────────────────────────────────
|
||||
clap = { workspace = true }
|
||||
futures.workspace = true
|
||||
serde_json.workspace = true
|
||||
log.workspace = true
|
||||
|
||||
# ── Yanked-version unblock (Slice 4 stable2509-3 ecosystem wart) ──
|
||||
# `sc-network-types 0.16.0` depende de `cid ^0.9`, y `cid 0.9.0` (única 0.9.x,
|
||||
# yanked) requiere `core2 ^0.4` — y `core2 0.4.0` también está yanked (las
|
||||
# no-yanked son 0.3.x, que NO satisfacen ^0.4). La resolución falla porque cargo
|
||||
# no auto-selecciona versiones yanked. El pin exacto `=` SÍ permite versiones
|
||||
# yanked, forzando 0.4.0 al grafo para satisfacer la dependencia transitiva de
|
||||
# cid. Dep no usada en código — solo desbloquea el resolver. Era el blocker real
|
||||
# que difirió sc-service en Slice 3 (documentado en chain_spec.rs).
|
||||
core2 = { version = "=0.4.0", default-features = false }
|
||||
|
||||
[features]
|
||||
default = []
|
||||
# Slice 4: activa la generación del WASM_BINARY real (runtime build vía
|
||||
# substrate-wasm-builder). Requiere env vars CC=LLVM (ver SLICE_2E). Sin este
|
||||
# feature el node compila host-only pero `--dev` falla en runtime con mensaje
|
||||
# claro (WASM_BINARY=None). Mantiene `cargo test --workspace` rápido sin env vars.
|
||||
wasm-build = ["origin-chain-runtime/wasm-build"]
|
||||
runtime-benchmarks = ["origin-chain-runtime/runtime-benchmarks"]
|
||||
Reference in new issue
Block a user