diff --git a/CHANGELOG.md b/CHANGELOG.md index d1eafec..08d8ae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,58 @@ by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions follow ## [Unreleased] +## [0.0.21] — 2026-05-24 — Phase 2.4 wired — Fees pallet runtime composition Index 8 + +**🔌 Phase 2.4 FEES pallet WIRED runtime composition canonical** — `origin-chain-fees` +añadido al `#[frame_support::runtime]` macro como Index 8 (post-Provenance Index 7). +8 → **9 pallets** composed canonical. Config trait `RuntimeEvent` association wired +canonical en `crates/origin-chain-runtime/src/configs.rs` (pattern Provenance Phase 2.1). + +### Deliverables v0.0.21 + +**Runtime composition canonical (Index 8 added)**: +- `crates/origin-chain-runtime/src/lib.rs:285` — `#[runtime::pallet_index(8)] pub type Fees = origin_chain_fees::Pallet;` +- `crates/origin-chain-runtime/src/configs.rs:347` — `impl origin_chain_fees::Config for Runtime { type RuntimeEvent = RuntimeEvent; }` + +**Workspace deps canonical**: +- `Cargo.toml:154` — `origin-chain-fees = { path = "crates/origin-chain-fees", version = "0.0.1" }` workspace dep +- `crates/origin-chain-runtime/Cargo.toml:47` — `origin-chain-fees.workspace = true` dep + std feature +- Documentación canonical pattern Provenance (deferred fields OitFeeSchedule post-OCAFB ratify) + +**Node info subcommand update canonical**: +- `crates/origin-chain-node/src/main.rs:194` — 8 → **9 pallets** listed canonical +- `crates/origin-chain-node/src/main.rs:203` — Index 8 Fees highlighted `[Phase 2.4 scaffold v0.0.21]` +- Provenance status updated `[Phase 2.1 scaffold v0.0.15]` → `[Phase 2.1 COMPLETE v0.0.17]` + +### Verification end-to-end canonical + +- ✅ `cargo build -p origin-chain-runtime` 13.63s clean (warnings cosméticos macro-generated) +- ✅ `cargo test --workspace` — **123 tests passing**, 0 failures: + - origin-chain-types: 55 (+8 ChainAction + SubscriptionTier) + - origin-chain-fees: 20 (16 vendor + 4 pallet scaffold) + - origin-chain-provenance: 17 (9 integration + 6 standalone + 2 auto) + - origin-chain-runtime: 16 (no regressions) + - origin-coin-tokenomics: 2 + - origin-chain-bridges/consensus/governance: 3 + - origin-chain-node chain_spec: 10 +- ✅ `cargo build --release -p origin-chain-node` 4.39s clean +- ✅ `origin-chain-node info` muestra 9 pallets canonical + 12 Runtime APIs (FeesApi pendiente v0.0.23) +- ✅ Existing subcomandos canonical NO regression (version + list-presets + print-preset + info + build-spec) + +### Roadmap canonical post-v0.0.21 + +| Version | Trigger | +|---------|---------| +| **v0.0.22** | **Real `compute_fee_for_action` impl + storage assertions + mock runtime integration tests E2E (sesión 3+ shipping ahora, pattern v0.0.18 mirror)** | +| v0.0.23 | Runtime API canonical `FeesApi.query_fee_for_action` read-only RPC → **Phase 2.4 COMPLETE 7/7 OCAFB** | +| v0.1.0 | Slice 2e WASM resolved + full testnet Q3 2026 launch | + +### Cross-pillar consumers status post v0.0.21 + +- ✅ Mathi `OitFeeSchedule` trait wired canonical (Config association deferred v0.0.22) +- 🟢 `Fees` pallet runtime composition canonical activated Index 8 +- 🟢 Mock runtime integration tests pattern v0.0.18 ready para mirror v0.0.22 + ## [0.0.20] — 2026-05-24 — Phase 2.4 scaffold — pallet-origin-fees trait-first foundation (OCAFB-1..6) **🚀 Phase 2.4 FEES pallet SCAFFOLD trait-first foundation** — Vendor copy diff --git a/Cargo.lock b/Cargo.lock index e966d78..1ff2a19 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2237,6 +2237,7 @@ dependencies = [ "frame-system", "frame-system-rpc-runtime-api", "log", + "origin-chain-fees", "origin-chain-provenance", "origin-chain-types", "pallet-aura", diff --git a/Cargo.toml b/Cargo.toml index d9e5852..0a82e26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -151,6 +151,7 @@ origin-chain-types = { path = "crates/origin-chain-types", version = "0.0.1" } origin-chain-consensus = { path = "crates/origin-chain-consensus", version = "0.0.1" } origin-coin-tokenomics = { path = "crates/origin-coin-tokenomics", version = "0.0.1" } origin-chain-provenance = { path = "crates/origin-chain-provenance", version = "0.0.1" } +origin-chain-fees = { path = "crates/origin-chain-fees", version = "0.0.1" } origin-chain-bridges = { path = "crates/origin-chain-bridges", version = "0.0.1" } origin-chain-governance = { path = "crates/origin-chain-governance", version = "0.0.1" } origin-chain-runtime = { path = "crates/origin-chain-runtime", version = "0.0.1" } diff --git a/crates/origin-chain-node/src/main.rs b/crates/origin-chain-node/src/main.rs index 86622ca..fc8b19a 100644 --- a/crates/origin-chain-node/src/main.rs +++ b/crates/origin-chain-node/src/main.rs @@ -191,7 +191,7 @@ fn print_info() { println!("Impl name: {}", IMPL_NAME); println!("Runtime version: {}", RUNTIME_VERSION); println!(); - println!("Pallets canonical (8):"); + println!("Pallets canonical (9):"); println!(" • Index 0 System (frame_system foundational)"); println!(" • Index 1 Timestamp (pallet_timestamp block clock → Aura)"); println!(" • Index 2 Balances (pallet_balances OGC token CHN-2)"); @@ -199,7 +199,8 @@ fn print_info() { println!(" • Index 4 Aura (pallet_aura PoA block production CHN-1)"); println!(" • Index 5 Grandpa (pallet_grandpa finality gadget CHN-1)"); println!(" • Index 6 Session (pallet_session 4h epoch rotation CHN-1)"); - println!(" • Index 7 Provenance (pallet_origin_provenance asset attestation CHN-7) [Phase 2.1 scaffold v0.0.15]"); + println!(" • Index 7 Provenance (pallet_origin_provenance asset attestation CHN-7) [Phase 2.1 COMPLETE v0.0.17]"); + println!(" • Index 8 Fees (pallet_origin_fees cross-pillar economy OCAFB-1..6) [Phase 2.4 scaffold v0.0.21]"); println!(); println!("Runtime APIs canonical (12):"); println!(" • sp_api::Core (version + execute_block)"); diff --git a/crates/origin-chain-runtime/Cargo.toml b/crates/origin-chain-runtime/Cargo.toml index 7dc9eba..d401f19 100644 --- a/crates/origin-chain-runtime/Cargo.toml +++ b/crates/origin-chain-runtime/Cargo.toml @@ -44,6 +44,10 @@ pallet-session.workspace = true # Phase 2.1 v0.0.15: pallet-origin-provenance scaffold canonical wired origin-chain-provenance.workspace = true +# Phase 2.4 v0.0.21: pallet-origin-fees wired runtime composition Index 8 canonical +# (OCAFB-1..6 consumer Mathi OitFeeSchedule via vendor copy interim Option B) +origin-chain-fees.workspace = true + # pallet-identity DEFERRED a Phase 2.7 (canonical decision empírica 2026-05-21) # RuntimeAPI canonical (sp_api::impl_runtime_apis! consumers) @@ -98,6 +102,7 @@ std = [ "pallet-grandpa/std", "pallet-session/std", "origin-chain-provenance/std", + "origin-chain-fees/std", "sp-offchain/std", "sp-genesis-builder/std", "sp-transaction-pool/std", diff --git a/crates/origin-chain-runtime/src/configs.rs b/crates/origin-chain-runtime/src/configs.rs index ef4ecff..427cabc 100644 --- a/crates/origin-chain-runtime/src/configs.rs +++ b/crates/origin-chain-runtime/src/configs.rs @@ -342,3 +342,21 @@ impl pallet_session::Config for Runtime { impl origin_chain_provenance::Config for Runtime { type RuntimeEvent = RuntimeEvent; } + +// ============================================================ +// origin_chain_fees::Config — Phase 2.4 v0.0.21 wired +// ============================================================ +// +// pallet-origin-fees scaffold canonical (DC `origin_chain_amis_fee_bridge_v1` +// OCAFB-1..6 sesión 3+ 6/7 firmas, ratify target 2026-06-21). Scaffold-level +// Config canonical v0.0.21: solo RuntimeEvent association. Future canonical +// fields post-OCAFB ratify + Mathi sub-crate ship: +// +// - `OitFeeSchedule: Arc` (post-OCAFB +// ratify swap canonical cross-workspace) +// - Pallet weights canonical desde benchmarking real (post-Phase 4 testnet) +// - Custom origin canonical para fee waiver scenarios (governance Phase 5) + +impl origin_chain_fees::Config for Runtime { + type RuntimeEvent = RuntimeEvent; +} diff --git a/crates/origin-chain-runtime/src/lib.rs b/crates/origin-chain-runtime/src/lib.rs index 2fed5f1..45839ff 100644 --- a/crates/origin-chain-runtime/src/lib.rs +++ b/crates/origin-chain-runtime/src/lib.rs @@ -280,6 +280,21 @@ mod runtime { #[runtime::pallet_index(7)] pub type Provenance = origin_chain_provenance::Pallet; + /// Fees pallet canonical (Phase 2.4 v0.0.21 wired canonical per OCAFB-1..6 + + /// DC `origin_chain_amis_fee_bridge_v1` 6/7 firmas sesión 3+ Charon ratified). + /// Cross-pillar fee economy consumer Mathi `OitFeeSchedule` trait (commit + /// `ce4fafb` 2026-05-24 `arkhe-amis-server/src/fee_schedule.rs`) via vendor + /// copy interim Option B (swap canonical post-OCAFB ratify o post Mathi + /// sub-crate ship). Scaffold-level v0.0.21: dispatchable + /// `compute_fee_for_action` placeholder, real impl v0.0.22 + Runtime API + /// v0.0.23. + /// + /// Naming canonical: alias `Fees` (NO `OriginFees` que conflictaría con + /// el trait existente del mismo nombre en `origin_chain_types::pallets`, + /// pattern análogo Provenance Index 7). + #[runtime::pallet_index(8)] + pub type Fees = origin_chain_fees::Pallet; + // Identity pallet DEFERRED a Phase 2.7 (canonical decision empírica // 2026-05-21 documentada en configs.rs). pallet-identity 41.0.0 ReservableCurrency // compat work canonical hereda al custom `pallet_agent_identity` Phase 2.7