# Delta `0.3.8-pre.009` — inspection Store des observations RAW ## Base requise Base directe attendue : `0.3.8-pre.008-fix.001` (`workspace.package.version = 0.3.8-pre.8.fix.1`). ## Objet Ajouter les listings backend-neutres et random-access des observations RAW Transaction et Account, sans modifier le schéma PostgreSQL, les reads par clé existants ni l'UI Store Desk. ## Store API Deux queries sont ajoutées : ```text RawTransactionObservationInspectionQuery RawAccountObservationInspectionQuery ``` Elles portent uniquement : ```text network obligatoire référence d'entité exacte optionnelle direction canonique RawInspectionPageRequest { offset, limit } ``` Une référence fournie doit appartenir au même network que la query. Deux summaries sûres sont ajoutées : ```text RawTransactionObservationSummary RawAccountObservationSummary ``` La summary Transaction contient observation key, référence transaction et provenance d'acquisition sûre. La summary Account contient observation key, référence account, provenance sûre et metadata Yellowstone optionnelles déjà présentes dans le modèle (`is_startup`, transaction signature, `write_version`). Aucun payload transaction ni byte Account n'est exposé. Deux nouvelles capabilities complètent l'API : ```text RawTransactionObservationInspectionRead RawAccountObservationInspectionRead ``` L'inventaire RAW passe de 12 à 14 capabilities. Les reads `RawTransactionObservationRead` / `RawAccountObservationRead` par observation key restent inchangés. ## Store façade `ksp-store-lib::Store` implémente et dispatch les deux capabilities après le même contrôle de cohérence network pré-I/O que les autres opérations Store. Aucun type PostgreSQL, SQL ou handle physique ne traverse la façade. Les exports crate-root et les canaris d'inventaire sont réconciliés à 105 exports Store façade et 14 capabilities RAW symétriques. ## PostgreSQL `ksp-store-postgres-lib` ajoute quatre statements privés : ```text INSPECT_OBSERVATIONS_ASC_SQL INSPECT_OBSERVATIONS_DESC_SQL INSPECT_ACCOUNT_OBSERVATIONS_ASC_SQL INSPECT_ACCOUNT_OBSERVATIONS_DESC_SQL ``` Chaque famille utilise une seule instruction par requête avec : ```text filtered COUNT exact total COUNT exact LEFT JOIN LATERAL LIMIT/OFFSET checked avant I/O ordre déterministe received_at_unix_millis + observation_key ``` Transaction filtre optionnellement par signature exacte de la référence Transaction. Account filtre optionnellement par l'identité complète `(pubkey, slot, state_hash)`. Les projections sont strictement metadata-only : aucun payload/archive Transaction et aucun `account data` ne sont sélectionnés. Les statements keyset/cursor existants restent OFFSET-free et les reads par clé restent inchangés. Aucune migration ou index n'est ajouté dans cette tranche. ## Règles d'Items Les nouveaux items `pub`/`pub(crate)` sont réexportés jusqu'aux `lib.rs` concernés. Les accès crate-wide utilisent les chemins `crate::Item`, y compris pour les helpers PostgreSQL visibles entre modules. ## Hors scope Aucune UI Observation n'est ajoutée à Store Desk dans `pre.009`; l'intégration visuelle et le hardening UX restent réservés à `pre.010`. Aucun Config, capability Tauri, migration, index, action de rétention ou changement des DataTables Transactions/Accounts n'est introduit. ## Version ```text delivery = 0.3.8-pre.009 workspace.package.version = 0.3.8-pre.9 commit = v0.3.8-pre.009 tag = aucun ``` ## Gate requis ```bash cargo fmt --all python3 scripts/audit_rust_workspace_rules.py python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas cargo check --workspace cargo clippy --workspace --all-targets cargo test -p ksp-store-api cargo test -p ksp-store-postgres-lib cargo test -p ksp-store-lib cargo check -p ksp-store-lib --no-default-features ```