v0.3.6-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/027-V0_3_6_JOB_API_BACKFILL_PLAN.md -->
|
||||
<!-- version: 12 -->
|
||||
<!-- version: 13 -->
|
||||
|
||||
# Plan v0.3.6 — Job API et premier backfill RAW
|
||||
|
||||
@@ -466,13 +466,19 @@ Le fix conserve exactement la forme publique `BackfillHydrationOutcome::Availabl
|
||||
|
||||
#### `pre.006-fix.002` — Auto-deref idiomatique des accesseurs RAW
|
||||
|
||||
Le gate opérateur de `pre.006-fix.001` confirme les audits, `cargo check`, les 20 tests unitaires et les 7 canaries, mais Clippy émet encore deux warnings `clippy::explicit_auto_deref` dans les accesseurs `transaction()` et `observation()` de `BackfillRawAcquisition`. Le correctif supprime uniquement les déréférencements explicites `(*self.inner)` au profit de l'auto-deref de Rust lors de l'accès aux champs privés. La représentation avec une unique `Box`, les signatures publiques, la sémantique RAW/provenance et le coût d'allocation restent inchangés. La version workspace devient `0.3.6-pre.6.fix.2`.
|
||||
**Statut : réalisé ; gate opérateur vert.**
|
||||
|
||||
Le gate opérateur de `pre.006-fix.001` confirme les audits, `cargo check`, les 20 tests unitaires et les 7 canaries, mais Clippy émet encore deux warnings `clippy::explicit_auto_deref` dans les accesseurs `transaction()` et `observation()` de `BackfillRawAcquisition`. Le correctif supprime uniquement les déréférencements explicites `(*self.inner)` au profit de l'auto-deref de Rust lors de l'accès aux champs privés. La représentation avec une unique `Box`, les signatures publiques, la sémantique RAW/provenance et le coût d'allocation restent inchangés. La version workspace devient `0.3.6-pre.6.fix.2`. 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.
|
||||
|
||||
### `pre.007` — Persistance Store et idempotence
|
||||
|
||||
**Statut : planifié.**
|
||||
**Statut : matérialisé ; gate opérateur à rejouer.**
|
||||
|
||||
Budget cible : **15-20 min**. Entrée : RAW v1 figé. Composer l'écriture atomique Store normale et les outcomes distincts. Sortie : insert, already present, purge, observation, missing, conflit et relance idempotente couverts.
|
||||
Budget cible : **15-20 min**. Entrée : RAW v1 figé et gate `pre.006-fix.002` vert. La tranche ajoute `persist_backfill_hydration` et une projection Backfill explicite des outcomes Store sans créer de second contrat de persistance. Une acquisition disponible est consommée par l'unique capacité atomique `RawTransactionWrite::persist_raw_transaction_acquisition` via `ksp-store-lib`, toujours en `RawTransactionAcquisitionMode::Normal`; aucune prélecture Store, écriture d'observation séparée ou `ForceRehydrate` n'est introduite.
|
||||
|
||||
Le réseau du Store est comparé à l'identité `(RawNetworkId, signature)` avant toute écriture. `Missing` n'effectue aucune écriture. Les outcomes Store valides sont projetés en dispositions entité/observation distinctes : `Inserted/Inserted`, `AlreadyPresent/Inserted`, `AlreadyPresent/AlreadyPresent` et `SkippedPurged/NotRecorded`. `ERROR_CODE_RAW_CONFLICT` devient un outcome Backfill `Conflict/NotRecorded`, distinct d'un succès idempotent ; les autres erreurs Store restent des erreurs. Les combinaisons impossibles en mode normal, dont `Rehydrated`, sont rejetées par `ERROR_CODE_BACKFILL_PERSISTENCE_INVALID`.
|
||||
|
||||
La tranche matérialise 29 tests unitaires et 8 canaries d'intégration au total. Les doubles Store restent privés et déterministes ; ils couvrent insert, nouvelle observation sur entité existante, relance idempotente, purge normale, conflit, erreur Store, mismatch réseau et incohérence de référence. La frontière contiguë, la concurrence et le checkpoint restent fermés jusqu'à `pre.008`.
|
||||
|
||||
### `pre.008` — Concurrence, frontier et checkpoint
|
||||
|
||||
|
||||
Reference in New Issue
Block a user