v0.3.4-pre.002
This commit is contained in:
232
deltas/0.3.4/pre.002.md
Normal file
232
deltas/0.3.4/pre.002.md
Normal file
@@ -0,0 +1,232 @@
|
||||
<!-- file: deltas/0.3.4/pre.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.4-pre.002` — registry V002 et tables RAW account minimales
|
||||
|
||||
## 1. Base requise
|
||||
|
||||
Base directe attendue :
|
||||
|
||||
```text
|
||||
0.3.4-pre.001-fix.001
|
||||
workspace.package.version = 0.3.4-pre.1
|
||||
```
|
||||
|
||||
Le gate opérateur fourni pour `pre.001` est propre : audits Rust/Markdown, `cargo check --workspace`, Clippy, tests ciblés Store/Config et `cargo check -p ksp-store-lib --no-default-features` passent. `pre.001-fix.001` est ensuite un correctif strictement documentaire ; ses audits statiques sont propres et il ne modifie pas Cargo/runtime.
|
||||
|
||||
## 2. Objectif
|
||||
|
||||
Matérialiser uniquement la première fondation physique V002 décidée en `pre.001` :
|
||||
|
||||
```text
|
||||
migration logique V002 = raw_account_state
|
||||
2 tables
|
||||
2 primary keys
|
||||
1 foreign key observation -> state
|
||||
```
|
||||
|
||||
Cette tranche n'ouvre aucun repository account, aucun dispatch Store, aucun index métier et aucune contrainte de domaine/fixed-width complète.
|
||||
|
||||
## 3. Version Cargo
|
||||
|
||||
Cette prerelease modifie code et migration SQL. Conformément à `VER-ID-009` :
|
||||
|
||||
```text
|
||||
workspace.package.version : 0.3.4-pre.1 -> 0.3.4-pre.2
|
||||
Cargo.toml header : 364 -> 365
|
||||
```
|
||||
|
||||
## 4. Registry V002
|
||||
|
||||
`EMBEDDED_MIGRATIONS` contient désormais exactement trois migrations logiques ordonnées :
|
||||
|
||||
```text
|
||||
V000 bootstrap
|
||||
V001 raw_transaction
|
||||
V002 raw_account_state
|
||||
```
|
||||
|
||||
V002 utilise `MigrationChecksum::Resources`, `MigrationHook::None` et `V002_RESOURCES`. `current_migration_version()` passe de `1` à `2`.
|
||||
|
||||
Les checksums acquis restent inchangés :
|
||||
|
||||
```text
|
||||
V000 d29068b8c13b9dc0cc9ef6aaadd0fa12d41e0fe4c56541a1118c4bfc846a1450
|
||||
V001 31488cda2f08f3f46c4cdbdbb6c18c243662fada02eac4487040c8735d72cc51
|
||||
```
|
||||
|
||||
Le checksum calculé sur les cinq resources V002 de cette tranche est :
|
||||
|
||||
```text
|
||||
30ac87496f1bb3805d816660891d7eab2127c599a636eb40c17ade5926311f55
|
||||
```
|
||||
|
||||
Il est volontairement **provisoire de prerelease** : `pre.003` doit encore ajouter les contraintes de domaine et l'index prévus, traiter explicitement la transition depuis cet état intermédiaire puis figer le checksum V002 final avant toute preuve live account persistante.
|
||||
|
||||
## 5. Ressources physiques ajoutées
|
||||
|
||||
```text
|
||||
migrations/v002_raw_account_state/
|
||||
tables/
|
||||
001_ksp_raw_account_states.sql
|
||||
002_ksp_raw_account_observations.sql
|
||||
constraints/
|
||||
001_pk_ksp_raw_account_states.sql
|
||||
002_pk_ksp_raw_account_observations.sql
|
||||
003_fk_ksp_raw_account_observations_state.sql
|
||||
```
|
||||
|
||||
### 5.1 State
|
||||
|
||||
Colonnes matérialisées exactement selon le design `pre.001` :
|
||||
|
||||
```text
|
||||
pubkey BYTEA NOT NULL
|
||||
slot NUMERIC(20,0) NOT NULL
|
||||
state_hash BYTEA NOT NULL
|
||||
lamports NUMERIC(20,0) NOT NULL
|
||||
owner BYTEA NOT NULL
|
||||
executable BOOLEAN NOT NULL
|
||||
rent_epoch NUMERIC(20,0) NOT NULL
|
||||
data BYTEA NOT NULL
|
||||
```
|
||||
|
||||
PK :
|
||||
|
||||
```text
|
||||
(pubkey, slot, state_hash)
|
||||
```
|
||||
|
||||
### 5.2 Observation
|
||||
|
||||
Les champs de provenance existants sont conservés avec les optionalités account décidées, dont :
|
||||
|
||||
```text
|
||||
is_startup BOOLEAN NULL
|
||||
transaction_signature BYTEA NULL
|
||||
write_version NUMERIC(20,0) NULL
|
||||
```
|
||||
|
||||
PK : `(observation_key)`.
|
||||
|
||||
FK :
|
||||
|
||||
```text
|
||||
(account_pubkey, account_slot, account_state_hash)
|
||||
-> ksp_raw_account_states(pubkey, slot, state_hash)
|
||||
ON DELETE RESTRICT
|
||||
```
|
||||
|
||||
Aucune FK vers `ksp_raw_transactions` n'est ajoutée.
|
||||
|
||||
## 6. Scope explicitement non avancé
|
||||
|
||||
```text
|
||||
aucun CHECK fixed-width/u64/data/provenance account
|
||||
aucun index (slot,pubkey,state_hash)
|
||||
aucun index owner/provider/time/status
|
||||
aucun src/raw_account.rs
|
||||
aucun repository/read/write account
|
||||
aucune impl RawAccount* sur PostgresBackend
|
||||
aucune impl RawAccount* sur Store
|
||||
aucune modification ksp-store-api
|
||||
aucune retention/archive/purge account
|
||||
```
|
||||
|
||||
Les contraintes et l'index sont réservés à `pre.003` ; le mapping/read commence seulement à `pre.004`.
|
||||
|
||||
## 7. Tests/canaris ajustés
|
||||
|
||||
Les tests historiques qui interdisaient l'existence même de V002 sont recalibrés sans ouvrir les capabilities account :
|
||||
|
||||
- registry V000/V001/V002 exact et `current_migration_version = 2` ;
|
||||
- inventaire V002 exact `2 tables + 3 contraintes PK/FK` ;
|
||||
- absence de CHECK/index dans V002 `pre.002` ;
|
||||
- absence de module repository account et d'impl `RawAccount*` runtime ;
|
||||
- live tests transaction/foundation existants attendent désormais migration version `2` s'ils sont exécutés.
|
||||
|
||||
Les canaris qui interdisent les quatre implémentations `RawAccount*` restent actifs.
|
||||
|
||||
## 8. Fichiers ajoutés
|
||||
|
||||
```text
|
||||
crates/ksp-store-postgres-lib/migrations/v002_raw_account_state/tables/001_ksp_raw_account_states.sql
|
||||
crates/ksp-store-postgres-lib/migrations/v002_raw_account_state/tables/002_ksp_raw_account_observations.sql
|
||||
crates/ksp-store-postgres-lib/migrations/v002_raw_account_state/constraints/001_pk_ksp_raw_account_states.sql
|
||||
crates/ksp-store-postgres-lib/migrations/v002_raw_account_state/constraints/002_pk_ksp_raw_account_observations.sql
|
||||
crates/ksp-store-postgres-lib/migrations/v002_raw_account_state/constraints/003_fk_ksp_raw_account_observations_state.sql
|
||||
deltas/0.3.4/pre.002.md
|
||||
```
|
||||
|
||||
## 9. Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-store-postgres-lib/src/lib.rs
|
||||
crates/ksp-store-postgres-lib/src/migration.rs
|
||||
crates/ksp-store-postgres-lib/src/schema.rs
|
||||
crates/ksp-store-postgres-lib/unit_tests/migration.rs
|
||||
crates/ksp-store-postgres-lib/unit_tests/schema.rs
|
||||
crates/ksp-store-postgres-lib/tests/dependency_boundary.rs
|
||||
crates/ksp-store-postgres-lib/tests/hardening_completeness.rs
|
||||
crates/ksp-store-postgres-lib/tests/postgres_foundation_live.rs
|
||||
crates/ksp-store-postgres-lib/tests/postgres_raw_transaction_live.rs
|
||||
docs/plans/025-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT_PLAN.md
|
||||
docs/validation/021-V0_3_4_STORE_POSTGRES_RAW_ACCOUNT.md
|
||||
```
|
||||
|
||||
## 10. Fichiers supprimés
|
||||
|
||||
Aucun.
|
||||
|
||||
## 11. Validations exécutées dans l'environnement d'assemblage
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
General Rust rule audit: clean
|
||||
Rust export completeness audit: 0 candidate(s)
|
||||
KSP workspace Rust rule audit: clean
|
||||
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.4
|
||||
Markdown table audit: clean (239 table(s), 136 file(s))
|
||||
|
||||
assertions structurelles locales
|
||||
DIFF_SCOPE=PASS
|
||||
HEADER_VERSIONS=PASS
|
||||
V000_V001_IMMUTABLE=PASS
|
||||
V002_MINIMAL_SCOPE=PASS
|
||||
V002_CHECKSUM=30ac87496f1bb3805d816660891d7eab2127c599a636eb40c17ade5926311f55
|
||||
```
|
||||
|
||||
Le checksum V002 intermédiaire a été recalculé indépendamment à partir du domaine `ksp-migration-resources-v1\0`, des IDs ordonnés et des bytes exacts des cinq resources.
|
||||
|
||||
## 12. Validations non exécutées dans l'environnement d'assemblage
|
||||
|
||||
L'exécutable `cargo` n'est pas disponible dans cet environnement. Après application du delta, rejouer côté opérateur :
|
||||
|
||||
```text
|
||||
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/0.3.4
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test -p ksp-store-api
|
||||
cargo test -p ksp-store-lib
|
||||
cargo test -p ksp-store-postgres-lib
|
||||
cargo test -p ksp-config-lib
|
||||
cargo check -p ksp-store-lib --no-default-features
|
||||
```
|
||||
|
||||
Aucun live PostgreSQL account n'est revendiqué dans `pre.002`.
|
||||
|
||||
## 13. Décisions prises
|
||||
|
||||
- V002 reste additive et ne modifie aucun byte V000/V001.
|
||||
- Les PK/FK sont des resources séparées et inspectables par le moteur existant.
|
||||
- La table state porte directement les bytes D1 RAW ; aucune représentation base64 physique n'est introduite.
|
||||
- `transaction_signature` reste metadata d'observation sans FK transaction.
|
||||
- La tranche ne crée pas de deuxième vérité `space`, de surrogate ID, d'archive account ni de processing ledger.
|
||||
|
||||
## 14. Questions ouvertes
|
||||
|
||||
Aucune question de contrat nouvelle. `pre.003` doit finaliser la surface physique V002 déjà décidée : contraintes de domaine/fixed-width, index de navigation, compatibilité schema et checksum final, y compris la transition depuis l'état intermédiaire de cette prerelease.
|
||||
Reference in New Issue
Block a user