feat(runtime): Phase 2.1 v0.0.15 — Provenance pallet wired runtime + BoundedVec agent_chain

8 pallets composed total (Provenance Index 7 wired canonical). DC PROVENANCE_PALLET_V1
5/10 firmas en ratificación — procediendo paralelo per "notify and continue" canonical.

Deliverables canonical:
- Pallet wire: configs.rs Config impl + lib.rs runtime composition macro pallet_index(7) Provenance
- Alias `Provenance` (NO OriginProvenance que conflictaría con trait existente)
- BoundedVec<AccountId, ConstU32<10>> replace Vec en AssetAttestation.agent_chain
- Inmutable #41 pragmatic bound canonical: max 10 AGI co-authors per asset
- Removed #[pallet::without_storage_info] (MaxEncodedLen ahora satisfied)
- AccountId + Signature: DecodeWithMemTracking derive added (FRAME stable2512+ requirement)
- AssetAttestation: Encode/Decode/DecodeWithMemTracking/MaxEncodedLen/TypeInfo SCALE derives
- 4 nuevos tests boundary canonical (max 10 enforce + boundary accepted + SCALE roundtrip)

Verification end-to-end:
- cargo check workspace verde 2.14s
- 82+ tests pass workspace
- cargo build release 5.57s clean
- info subcommand muestra 8 pallets (Provenance index 7)
- build-spec subcommand NO regression Slice 3 mock-WASM chain_spec

Roadmap canonical post-v0.0.15:
- v0.0.16 Real Ed25519 verify (post Ergon Cap 42+ sub-crate)
- v0.0.17 Runtime API verify_provenance PROV-8
- v0.1.0 Full integration testnet Q3 2026

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
davidherranandClaude Opus 4.7 committed 2026-05-24 14:07:19 -05:00
1 parent 4359515f45
commit e0c5e8be18
11 files changed
+178 -23

No files matched your search

+5 -7
View File
@@ -72,12 +72,10 @@ pub mod pallet {
/// Pallet definition canonical.
///
/// `without_storage_info` canonical (scaffold v0.0.14): bypass MaxEncodedLen
/// requirement para `AssetAttestation` (que tiene Vec<AccountId> agent_chain
/// sin bound). Post v0.0.15: replace con BoundedVec<AccountId, ConstU32<10>>
/// + remove without_storage_info canonical.
/// v0.0.15: `AssetAttestation.agent_chain` ahora es `BoundedVec<AccountId,
/// ConstU32<10>>` canonical → MaxEncodedLen ahora satisfied canonical →
/// `#[pallet::without_storage_info]` ya NO necesario canonical.
#[pallet::pallet]
#[pallet::without_storage_info]
pub struct Pallet<T>(_);
/// PROV-2 canonical: `StorageMap<AssetHash, AssetAttestation>` canonical.
@@ -215,8 +213,8 @@ pub mod pallet {
hash: asset_hash,
creator: origin_chain_types::AccountId::new([0u8; 32]), // SCAFFOLD placeholder
signature: origin_chain_types::Signature::new(validation_attestation.signature),
anchored_at_block: 0, // SCAFFOLD — block_number wire post v0.0.15
agent_chain: alloc::vec![],
anchored_at_block: 0, // SCAFFOLD — block_number wire post v0.0.16
agent_chain: origin_chain_types::AgentChain::default(), // BoundedVec empty
};
Attestations::<T>::insert(asset_hash, attestation);