v0.3.6-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/023-V0_3_6_JOB_API_BACKFILL.md -->
|
||||
<!-- version: 12 -->
|
||||
<!-- version: 13 -->
|
||||
|
||||
# Validation v0.3.6 — Job API et premier backfill RAW
|
||||
|
||||
@@ -143,7 +143,7 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
|
||||
|
||||
`pre.006-fix.001` conserve l'API publique de l'enum et introduit une seule indirection privée dans `BackfillRawAcquisition`. Aucun `#[allow]` n'est ajouté. Les getters et `into_parts` conservent leurs signatures, et une canarie vérifie que `BackfillRawAcquisition` reste de la taille d'un pointeur. Le gate opérateur du fix confirme ensuite les audits, `cargo check`, les 20 unitaires et les 7 canaries, mais Clippy signale encore deux `clippy::explicit_auto_deref` dans `transaction()` et `observation()`.
|
||||
|
||||
`pre.006-fix.002` remplace uniquement `&(*self.inner).transaction` et `&(*self.inner).observation` par les accès auto-deref idiomatiques `&self.inner.transaction` et `&self.inner.observation`. La Box privée unique, l'API publique et tous les invariants RAW/provenance restent inchangés. Le gate Cargo de `fix.002` reste à rejouer par l'opérateur.
|
||||
`pre.006-fix.002` remplace uniquement `&(*self.inner).transaction` et `&(*self.inner).observation` par les accès auto-deref idiomatiques `&self.inner.transaction` et `&self.inner.observation`. La Box privée unique, l'API publique et tous les invariants RAW/provenance restent inchangés. Le gate opérateur de `fix.002` est intégralement vert : audits Rust/Markdown, `cargo check`, Clippy sans warning, 20 unitaires, 7 canaries d'intégration et arbres Cargo passent sur `0.3.6-pre.6.fix.2`.
|
||||
|
||||
- [X] Identité logique future auditée : transaction/signature scoping par `RawNetworkId`, jamais par rôle/provider/endpoint/protocole.
|
||||
- [X] Le Store PostgreSQL actuel est mono-réseau via `ksp_store_identity`; un futur backend multi-réseaux devra préserver `(network, signature)` par clé/partition équivalente.
|
||||
@@ -156,20 +156,22 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
|
||||
- [X] Block time négatif rejeté explicitement.
|
||||
- [X] Hash SHA-256 et taille calculés sur les bytes exacts.
|
||||
- [X] Provenance contient fournisseur, protocole, méthode, endpoint sûr, engagement et réception.
|
||||
- [ ] Clé d'observation domain-separated et déterministe.
|
||||
- [X] Clé d'observation domain-separated et déterministe, couverte par le gate `pre.006-fix.002`.
|
||||
- [X] Endpoint différent produit une nouvelle observation légitime.
|
||||
|
||||
## 11. Persistance Store
|
||||
|
||||
- [ ] Dépendance unique vers `ksp-store-lib`, jamais vers backend ou API directement.
|
||||
- [ ] Écriture atomique transaction plus observation en mode `Normal`.
|
||||
- [ ] Aucune prélecture de présence avant hydratation.
|
||||
- [ ] Entités insérée, déjà présente et purgée distinguées.
|
||||
- [ ] Observations insérée, déjà présente et non enregistrée distinguées.
|
||||
- [ ] `getTransaction = null` ne produit aucune écriture fabriquée.
|
||||
- [ ] Conflit Store reste une erreur terminale visible.
|
||||
- [ ] Même JobId et même endpoint donnent une relance idempotente.
|
||||
- [ ] `ForceRehydrate` inaccessible depuis le chemin normal.
|
||||
`pre.007` matérialise la composition Store normale sans élargir les responsabilités. Le chemin public consomme un `BackfillHydrationOutcome`, contrôle d'abord le réseau logique du Store, puis utilise exclusivement l'écriture atomique transaction + observation de `ksp-store-lib`. `Missing` ne déclenche aucune écriture. Un conflit de contenu Store est converti en outcome Backfill explicite afin que les tranches de frontier/snapshot puissent le compter puis le traiter comme trou/échec, sans le confondre avec l'idempotence. Les tests Rust de cette tranche sont matérialisés mais restent à exécuter dans le gate opérateur.
|
||||
|
||||
- [X] Dépendance unique vers `ksp-store-lib`, jamais vers backend ou API directement, confirmée par audit de manifeste/source.
|
||||
- [X] Écriture atomique transaction plus observation composée en mode `Normal` dans l'unique chemin de persistance.
|
||||
- [X] Aucune prélecture de présence avant hydratation ou persistance.
|
||||
- [ ] Entités insérée, déjà présente et purgée distinguées au gate Rust `pre.007`.
|
||||
- [ ] Observations insérée, déjà présente et non enregistrée distinguées au gate Rust `pre.007`.
|
||||
- [ ] `getTransaction = null` ne produit aucune écriture fabriquée au gate Rust `pre.007`.
|
||||
- [ ] Conflit Store reste un outcome terminal visible, distinct d'un succès idempotent, au gate Rust `pre.007`.
|
||||
- [ ] Même JobId et même endpoint donnent une relance idempotente au gate Rust `pre.007`.
|
||||
- [X] `ForceRehydrate` absent du chemin normal `pre.007` par audit de source.
|
||||
|
||||
## 12. Concurrence, frontière et checkpoint
|
||||
|
||||
@@ -203,7 +205,7 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
|
||||
- [X] Versions/features auditées : aucune nouvelle version externe ; `sha2` et `tokio` réutilisent les entrées workspace existantes, Tokio étant dev-only en `pre.005`.
|
||||
- [X] `pre.005` matérialise 11 tests unitaires et 6 canaries d’intégration ; le gate opérateur les exécute tous avec succès.
|
||||
- [X] `pre.006` matérialise 19 tests unitaires et 7 canaries d’intégration ; le gate opérateur les exécute tous avec succès, avec uniquement le warning Clippy corrigé par `pre.006-fix.001`.
|
||||
- [ ] `cargo clippy --workspace --all-targets` warning-free sur `pre.006-fix.002`.
|
||||
- [X] `cargo clippy --workspace --all-targets` warning-free sur `pre.006-fix.002`.
|
||||
- [ ] `cargo fmt --all -- --check` vert.
|
||||
- [X] `scripts/audit_rust_workspace_rules.py` vert sur `pre.005` dans l'environnement d'assemblage et dans le gate opérateur.
|
||||
- [X] `scripts/audit_markdown_tables.py` vert sur `pre.005` dans le gate opérateur (264 tables / 147 fichiers, delta inclus).
|
||||
@@ -215,7 +217,7 @@ Aucune entrée absolue, traversée, avec séparateur inversé ou lien symbolique
|
||||
|
||||
## 15. Preuves d'intégration et fermeture
|
||||
|
||||
- [ ] Fake Transport et fake Store déterministes sans backend direct.
|
||||
- [X] Fake Transport et fake Store déterministes sans backend direct matérialisés ; exécution du fake Store `pre.007` à confirmer au gate opérateur.
|
||||
- [ ] Vertical découverte, hydratation, conversion, persistance et observation couvert.
|
||||
- [ ] Smoke Devnet plus PostgreSQL configuré exécuté si l'environnement explicite est disponible.
|
||||
- [ ] Aucun endpoint payant, credential ou donnée sensible requis par les tests normaux.
|
||||
|
||||
Reference in New Issue
Block a user