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
+26
@@ -60,6 +60,9 @@ sp-session = { version = "41.0.0", default-features = false }
|
||||
sp-genesis-builder = { version = "0.20.0", default-features = false }
|
||||
sp-consensus-aura = { version = "0.45.0", default-features = false, features = ["serde"] }
|
||||
sp-consensus-grandpa = { version = "26.0.0", default-features = false, features = ["serde"] }
|
||||
# Slice 4 v0.0.49 — node sc-service deps (stable2509-3)
|
||||
sp-timestamp = { version = "39.0.0", default-features = false }
|
||||
sp-blockchain = { version = "41.0.0" }
|
||||
|
||||
# FRAME canonical — runtime composition framework (stable2509-3)
|
||||
frame-system = { version = "43.0.1", default-features = false }
|
||||
@@ -213,6 +216,29 @@ origin-chain-node = { path = "crates/origin-chain-node", version = "0.0.1" }
|
||||
getrandom_02 = { package = "getrandom", version = "0.2", default-features = false, features = ["custom"] }
|
||||
getrandom_03 = { package = "getrandom", version = "0.3", default-features = false, features = ["wasm_js"] }
|
||||
|
||||
# ============================================================
|
||||
# Slice 4 v0.0.49 — [patch.crates-io] yanked dep unblock
|
||||
# ============================================================
|
||||
#
|
||||
# `sc-network-types 0.16.0` (stable2509-3) depende de `cid ^0.9`. La única
|
||||
# versión 0.9.x es `cid 0.9.0` (yanked), que a su vez requiere `core2 ^0.4` —
|
||||
# y `core2 0.4.0` también está yanked (las publicadas no-yanked son 0.3.x, que
|
||||
# NO satisfacen `^0.4`). Cargo no auto-selecciona versiones yanked, así que la
|
||||
# resolución falla. polkadot-sdk upstream lo evita porque commitea su Cargo.lock
|
||||
# con esas versiones; al consumir los crates publicados sin ese lock, golpeamos
|
||||
# el wart.
|
||||
#
|
||||
# Fix: vendorizamos el `.crate` publicado de `core2 0.4.0` (yanked pero aún
|
||||
# descargable desde static.crates.io) en `vendor/core2-0.4.0/` y lo aplicamos
|
||||
# como patch path. Una path source SÍ es seleccionable por cargo independiente
|
||||
# del estado yanked, y su Cargo.toml declara exactamente 0.4.0 → satisface el
|
||||
# `^0.4` de cid sin tocar el árbol sc-*. (El git source master resultó ser un
|
||||
# workspace con versión ≤0.3.x, no servía.) Era el blocker real que difirió
|
||||
# sc-service en Slice 3 (documentado en chain_spec.rs: "cid 0.9.0 yanked core2
|
||||
# 0.4.0"). El crate vendorizado es idéntico al artefacto publicado original.
|
||||
[patch.crates-io]
|
||||
core2 = { path = "vendor/core2-0.4.0" }
|
||||
|
||||
[profile.release]
|
||||
# Slice 2b finding canonical: lto/codegen-units customization triggers alloc
|
||||
# recompile en wbuild → duplicate exchange_malloc lang item canonical. Defaults
|
||||
|
||||
Reference in new issue
Block a user