diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d4b2cb..4400b7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,48 @@ by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions follow ## [Unreleased] +## [0.0.25] — 2026-05-25 — Phase 2.7 wired — AgentIdentity pallet runtime composition Index 9 + +**🔌 Phase 2.7 AGENT IDENTITY pallet WIRED runtime composition canonical** — +`origin-chain-agent-identity` añadido al `#[frame_support::runtime]` macro como +Index 9 (post-Fees Index 8). 9 → **10 pallets** composed canonical. Config trait +`RuntimeEvent` association wired canonical en `crates/origin-chain-runtime/src/configs.rs` +(pattern Provenance Phase 2.1 + Fees Phase 2.4 mirror). + +### Deliverables v0.0.25 + +**Runtime composition canonical (Index 9 added)**: +- `crates/origin-chain-runtime/src/lib.rs:298` — `#[runtime::pallet_index(9)] pub type AgentIdentity = origin_chain_agent_identity::Pallet;` +- `crates/origin-chain-runtime/src/configs.rs:362` — `impl origin_chain_agent_identity::Config for Runtime { type RuntimeEvent = RuntimeEvent; }` + +**Workspace deps canonical**: +- `crates/origin-chain-runtime/Cargo.toml:51` — `origin-chain-agent-identity.workspace = true` dep + std feature +- Documentation canonical pattern Provenance + Fees mirror + +**Pallet Config canonical fix**: +- Removed constraint `AccountId = origin_chain_types::AccountId` from `Config` trait — usa generic `T::AccountId` (matches runtime ChainAccountId AccountId32) +- Storage canonical updated: `Identities>` + `DidToAccount>` +- Events updated: `AgentRegistered/AgentBound/AgentUpdated { account: T::AccountId, ... }` + +**Node info subcommand update canonical**: +- `crates/origin-chain-node/src/main.rs:194` — 9 → **10 pallets** listed canonical +- Index 9 AgentIdentity highlighted `[Phase 2.7 scaffold v0.0.25]` + +### Verification end-to-end canonical + +- ✅ `cargo build -p origin-chain-runtime` 5.26s clean (warnings cosméticos macro-generated) +- ✅ `cargo test --workspace` — **149 tests passing**, 0 failures (+12 nuevos: 8 identity types + 4 pallet scaffold) +- ✅ `cargo build --release -p origin-chain-node` 3.96s clean +- ✅ `origin-chain-node info` muestra 10 pallets canonical + 13 Runtime APIs (AgentIdentityApi pendiente v0.0.27) +- ✅ Existing subcomandos canonical NO regression + +### Roadmap canonical post-v0.0.25 + +| Version | Trigger | +|---------|---------| +| **v0.0.26** | **Real `register_agent_did` impl + storage assertions + mock runtime integration tests E2E (sesión 3+ shipping ahora, pattern v0.0.22 mirror)** | +| v0.0.27 | Runtime API canonical `AgentIdentityApi.query_identity` impl en runtime → **Phase 2.7 COMPLETE** | + ## [0.0.24] — 2026-05-25 — Phase 2.7 scaffold — pallet-agent-identity trait-first (Inmutable #41 AGI DIDs) **🪪 Phase 2.7 AGENT IDENTITY pallet SCAFFOLD trait-first foundation** — AGI diff --git a/Cargo.lock b/Cargo.lock index 621add9..671f6b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2253,6 +2253,7 @@ dependencies = [ "frame-system", "frame-system-rpc-runtime-api", "log", + "origin-chain-agent-identity", "origin-chain-fees", "origin-chain-provenance", "origin-chain-types", diff --git a/crates/origin-chain-agent-identity/src/lib.rs b/crates/origin-chain-agent-identity/src/lib.rs index e10f512..d4820fc 100644 --- a/crates/origin-chain-agent-identity/src/lib.rs +++ b/crates/origin-chain-agent-identity/src/lib.rs @@ -116,7 +116,7 @@ pub mod pallet { /// - Custom origin canonical para Hybrid agent registration (governance) /// - Pallet weights canonical desde benchmarking real #[pallet::config] - pub trait Config: frame_system::Config { + pub trait Config: frame_system::Config { /// Runtime event type canonical wired into `RuntimeEvent` aggregate. type RuntimeEvent: From> + IsType<::RuntimeEvent>; @@ -136,16 +136,16 @@ pub mod pallet { #[pallet::storage] #[pallet::getter(fn identity_of)] pub type Identities = - StorageMap<_, Blake2_128Concat, origin_chain_types::AccountId, AgentIdentity, OptionQuery>; + StorageMap<_, Blake2_128Concat, T::AccountId, AgentIdentity, OptionQuery>; - /// Reverse lookup canonical: `DidToAccount>`. + /// Reverse lookup canonical: `DidToAccount>`. /// - /// O(1) lookup canonical desde DID → AccountId canonical para cross-pillar + /// O(1) lookup canonical desde DID → T::AccountId canonical para cross-pillar /// consumers (Codex .odoc author resolution, Trinity asset co-author lookup). #[pallet::storage] #[pallet::getter(fn account_of_did)] pub type DidToAccount = - StorageMap<_, Blake2_128Concat, Did, origin_chain_types::AccountId, OptionQuery>; + StorageMap<_, Blake2_128Concat, Did, T::AccountId, OptionQuery>; /// Events emisión canonical (CHN-7 + Inmutable #41). #[pallet::event] @@ -155,8 +155,8 @@ pub mod pallet { /// /// Materializa Inmutable #41 Cross-Species Co-authorship compile-detect. AgentRegistered { - /// AccountId canonical del agent registered. - account: origin_chain_types::AccountId, + /// T::AccountId del agent registered canonical. + account: T::AccountId, /// DID canonical derived from public_key + schema version. did: Did, /// AgentKind canonical (Human + AGI + Hybrid). @@ -167,8 +167,8 @@ pub mod pallet { /// Inmutable #41 cross-species explicit canonical — emitted SOLO cuando /// `agent_chain` canonical non-empty (Hybrid o collaborative registration). AgentBound { - /// AccountId canonical del agent. - account: origin_chain_types::AccountId, + /// T::AccountId del agent canonical. + account: T::AccountId, /// Number canonical de co-authors en agent_chain. co_author_count: u32, }, @@ -177,8 +177,8 @@ pub mod pallet { /// Phase 2.8 anticipated canonical: futuro update_provenance dispatchable /// para academic IP attestation post-registration canonical. AgentUpdated { - /// AccountId canonical del agent. - account: origin_chain_types::AccountId, + /// T::AccountId del agent canonical. + account: T::AccountId, }, } diff --git a/crates/origin-chain-node/src/main.rs b/crates/origin-chain-node/src/main.rs index 67b2616..8715596 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 (9):"); + println!("Pallets canonical (10):"); 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)"); @@ -201,6 +201,7 @@ fn print_info() { 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 COMPLETE v0.0.17]"); println!(" • Index 8 Fees (pallet_origin_fees cross-pillar economy OCAFB-1..6) [Phase 2.4 COMPLETE v0.0.23]"); + println!(" • Index 9 AgentIdentity (pallet_agent_identity AGI DIDs Inmutable #41) [Phase 2.7 scaffold v0.0.25]"); println!(); println!("Runtime APIs canonical (13):"); println!(" • sp_api::Core (version + execute_block)"); diff --git a/crates/origin-chain-runtime/Cargo.toml b/crates/origin-chain-runtime/Cargo.toml index d401f19..a70b068 100644 --- a/crates/origin-chain-runtime/Cargo.toml +++ b/crates/origin-chain-runtime/Cargo.toml @@ -48,7 +48,9 @@ origin-chain-provenance.workspace = true # (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) +# Phase 2.7 v0.0.25: pallet-agent-identity wired runtime composition Index 9 canonical +# (Inmutable #41 AGI DIDs Cross-Species Co-authorship) +origin-chain-agent-identity.workspace = true # RuntimeAPI canonical (sp_api::impl_runtime_apis! consumers) sp-offchain.workspace = true @@ -103,6 +105,7 @@ std = [ "pallet-session/std", "origin-chain-provenance/std", "origin-chain-fees/std", + "origin-chain-agent-identity/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 427cabc..df7df28 100644 --- a/crates/origin-chain-runtime/src/configs.rs +++ b/crates/origin-chain-runtime/src/configs.rs @@ -360,3 +360,20 @@ impl origin_chain_provenance::Config for Runtime { impl origin_chain_fees::Config for Runtime { type RuntimeEvent = RuntimeEvent; } + +// ============================================================ +// origin_chain_agent_identity::Config — Phase 2.7 v0.0.25 wired +// ============================================================ +// +// pallet-agent-identity scaffold canonical (Phase 2.7 AGI DIDs Inmutable #41 +// AGI Cross-Species Co-authorship). Scaffold-level Config canonical v0.0.25: +// solo RuntimeEvent association. Future canonical fields post-Phase 2.7 DC +// ratify pending: +// +// - `MaxAgentChainLen: Get` (BoundedVec bound canonical para agent_chain) +// - Custom origin canonical para Hybrid agent registration (governance Phase 5) +// - Pallet weights canonical desde benchmarking real (post-Phase 4 testnet) + +impl origin_chain_agent_identity::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 5e01c53..2b86033 100644 --- a/crates/origin-chain-runtime/src/lib.rs +++ b/crates/origin-chain-runtime/src/lib.rs @@ -295,7 +295,20 @@ mod runtime { #[runtime::pallet_index(8)] pub type Fees = origin_chain_fees::Pallet; - // Identity pallet DEFERRED a Phase 2.7 (canonical decision empírica + /// AgentIdentity pallet canonical (Phase 2.7 v0.0.25 wired canonical per + /// CHN-7 + Inmutable #41 AGI Cross-Species Co-authorship). AGI DIDs + /// canonical on-chain — AGIs first-class citizens del Origin Metaverse + /// pueden owning assets + signing transactions + DAO voting via DIDs + /// registrados. Scaffold-level v0.0.25: dispatchable `register_agent_did` + /// placeholder, real impl v0.0.26 + Runtime API v0.0.27. + /// + /// Naming canonical: alias `AgentIdentity` clearly distinguishes from + /// Substrate's `pallet-identity` (deferred canonical decision Phase 2.7 + /// empírica 2026-05-21 documentada en configs.rs). + #[runtime::pallet_index(9)] + pub type AgentIdentity = origin_chain_agent_identity::Pallet; + + // Substrate pallet-identity DEFERRED 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 // (Inmutable #41 AGI DID Cross-Species Co-authorship).