v0.5.3-pre.004
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/architecture/STORAGE_ARCHITECTURE.md -->
|
||||
<!-- version: 8 -->
|
||||
<!-- version: 9 -->
|
||||
|
||||
# Architecture du stockage
|
||||
|
||||
@@ -148,9 +148,31 @@ Principes :
|
||||
- `DROP`/`TRUNCATE` séparés de l'auto-init ;
|
||||
- refus explicite d'un schéma contenant encore des objets `kb_sol_*`.
|
||||
|
||||
Le baseline `pre.003` contient **236 ressources SQL atomiques** et **75 index attendus**. Ces nombres décrivent l'implémentation PostgreSQL actuelle, pas une API publique gelée.
|
||||
Après la revue repositories/index de `pre.004`, le baseline contient **240 ressources SQL atomiques** et **79 index attendus** (63 explicites + 16 index de clés primaires). Ces nombres décrivent l'implémentation PostgreSQL actuelle, pas une API publique gelée.
|
||||
|
||||
## 7. Propriétés attendues
|
||||
## 7. Replay, invalidation et pagination (`pre.004`)
|
||||
|
||||
`pre.004` ne modifie pas les 16 tables ; il ferme les chemins de repository au-dessus d’elles.
|
||||
|
||||
### 7.1 Instructions top-level et CPI
|
||||
|
||||
Les deux catégories restent physiquement séparées. La lecture de replay construit une union logique avec un scope explicite et un ordre stable `(slot, signature, scope_rank, instruction_path)`. Le curseur de page reprend cette clé ; aucun `OFFSET` n’appartient au contrat durable.
|
||||
|
||||
### 7.2 Invalidation descendante
|
||||
|
||||
Un remplacement N2 Core d’une signature invalide dans la même transaction ses descendants N3 decode/coverage/materialization et les ledgers concernés. Un remplacement decode invalide ses sorties de matérialisation pour l’identité exacte decoder name/version/input. Les préfixes de ledger sont comparés littéralement, sans `LIKE`, afin que `_` ne puisse pas agir comme wildcard.
|
||||
|
||||
Le lifecycle instructionnel est ensuite recomposé depuis les descendants réellement courants. Une ancienne matérialisation produite par une version antérieure du decoder ne suffit pas à déclarer le nouvel input matérialisé.
|
||||
|
||||
### 7.3 Account observation -> Core account state
|
||||
|
||||
Le flux N1 -> N2 réservé en `pre.003` devient opérationnel. La sélection est bornée et version-aware ; la présence d’un ancien Core state ne masque pas une nouvelle version du normalizer. `lamports` et `rent_epoch` conservent tout le domaine `u64` via `NUMERIC(20,0)` et les conversions vers `BIGINT` échouent explicitement hors domaine signé.
|
||||
|
||||
### 7.4 Bornes et instrumentation
|
||||
|
||||
Les lectures interactives publiques sont plafonnées à 500 lignes. Les campagnes de processing Core/decode/account-state utilisent des batches distincts plafonnés à 1 000. Les opérations PostgreSQL réécrites tracent `action`, durée, lignes et outcome sous `ks-store`/`ks-store.pg`, sans SQL brut ni valeur bindée.
|
||||
|
||||
## 8. Propriétés attendues
|
||||
|
||||
- initialisation idempotente ;
|
||||
- pagination bornée ;
|
||||
@@ -164,6 +186,6 @@ Le baseline `pre.003` contient **236 ressources SQL atomiques** et **75 index at
|
||||
|
||||
Les index non uniques restent des optimisations physiques évolutives. Les noms/colonnes/types/nullabilités/PK/FK/uniques/checks/sémantiques du baseline N1-N3 seront figés séparément lors de la tranche de gel.
|
||||
|
||||
## 8. Données de test
|
||||
## 9. Données de test
|
||||
|
||||
Les fixtures privées, bases locales et preuves temporaires ne font pas partie des livraisons. Les matrices contractuelles partagées restent sous `test-fixtures/contract-matrices/` lorsqu'elles sont nécessaires aux tests.
|
||||
|
||||
Reference in New Issue
Block a user