139 lines
3.8 KiB
Markdown
139 lines
3.8 KiB
Markdown
<!-- file: deltas/0.3.5/pre.005.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.3.5-pre.005` — hardening et complétude Interface
|
|
|
|
## Base requise
|
|
|
|
```text
|
|
0.3.5-pre.4
|
|
```
|
|
|
|
Le gate opérateur de `pre.004` est entièrement propre : audits Rust/Markdown, `cargo check --workspace`, Clippy, tests `ksp-interface-lib` et `ksp-program-api` passent.
|
|
|
|
## Version
|
|
|
|
La tranche ajoute/modifie des sources Rust de test/canari. La version workspace devient :
|
|
|
|
```text
|
|
0.3.5-pre.5
|
|
```
|
|
|
|
## Mission
|
|
|
|
Fermer le hardening fonctionnel de `0.3.5` sans ajouter de troisième famille Interface ni modifier les contrats de production admis :
|
|
|
|
```text
|
|
SlotLifecycleEvent / SlotLifecycleStage
|
|
TransactionExecutionEvent / TransactionExecutionOutcome / TransactionSignature
|
|
```
|
|
|
|
## Hardening adversarial
|
|
|
|
Le nouveau `tests/security_hardening.rs` vérifie :
|
|
|
|
- conservation byte-exact d'une signature hostile de 64 octets ;
|
|
- redaction de la signature dans son `Debug` et dans celui de `TransactionExecutionEvent` ;
|
|
- conservation de `u64::MAX` sans narrowing ;
|
|
- structure minimale exacte des deux events ;
|
|
- absence de collection/payload/timestamp/provider/endpoint/filter/network dans les contrats acquisition ;
|
|
- absence de second RAW ou de famille reportée exportée silencieusement ;
|
|
- non-régression des bornes `ProgramInstruction` historiques.
|
|
|
|
## Graphe et dépendances
|
|
|
|
`tests/dependency_boundary.rs` ajoute un canari final imposant :
|
|
|
|
```text
|
|
une seule section [dependencies]
|
|
exactement une référence ksp-core-lib
|
|
aucune [features]
|
|
aucune [dev-dependencies]
|
|
aucune [build-dependencies]
|
|
```
|
|
|
|
Le manifeste `ksp-interface-lib` reste inchangé et Core-only.
|
|
|
|
## Candidats reportés
|
|
|
|
Aucun candidat reporté n'est promu par hardening :
|
|
|
|
```text
|
|
TransactionLogEvent -> idée différée
|
|
TransactionCommitmentEvent -> reporté
|
|
VoteEvent -> reporté
|
|
LedgerEntryEvent -> reporté
|
|
Account/Program RAW event -> rejet Interface
|
|
Transaction complète -> rejet Interface
|
|
Block event -> rejet Interface
|
|
Persisted-data available -> Store API owner
|
|
```
|
|
|
|
`TransactionLogEvent` devra être transféré vers TODO/IDEAS durable pendant `pre.007` s'il reste hors scope.
|
|
|
|
## Fichiers
|
|
|
|
Modifiés :
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-interface-lib/tests/dependency_boundary.rs
|
|
docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md
|
|
```
|
|
|
|
Ajoutés :
|
|
|
|
```text
|
|
crates/ksp-interface-lib/tests/security_hardening.rs
|
|
deltas/0.3.5/pre.005.md
|
|
```
|
|
|
|
Explicitement inchangés :
|
|
|
|
```text
|
|
crates/ksp-interface-lib/Cargo.toml
|
|
crates/ksp-interface-lib/src/**
|
|
crates/ksp-interface-lib/unit_tests/**
|
|
crates/ksp-onchain-transport-lib/**
|
|
crates/ksp-store-api/**
|
|
crates/ksp-store-lib/**
|
|
crates/ksp-store-postgres-lib/**
|
|
crates/ksp-program-api/**
|
|
README.md
|
|
ROADMAP.md
|
|
CHANGELOG.md
|
|
```
|
|
|
|
## Validations exécutées dans l'environnement d'assemblage
|
|
|
|
```text
|
|
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.5
|
|
```
|
|
|
|
## Validations non exécutées dans l'environnement d'assemblage
|
|
|
|
`cargo` n'est pas installé dans le sandbox d'assemblage. Restent donc à exécuter côté opérateur :
|
|
|
|
```text
|
|
cargo fmt --all
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-interface-lib
|
|
cargo test -p ksp-program-api
|
|
```
|
|
|
|
## Décisions
|
|
|
|
- deux familles acquisition exactement restent admises ;
|
|
- aucun contrat production n'est modifié ;
|
|
- aucun nouveau bound métier n'est inventé ;
|
|
- la signature reste une primitive passive fixe de 64 octets sans codec ;
|
|
- aucune metadata source/provider n'entre dans Interface ;
|
|
- aucun second RAW n'est créé ;
|
|
- Program instruction foundation reste inchangée.
|
|
|
|
## Questions ouvertes
|
|
|
|
Aucune question fonctionnelle bloquante pour `pre.006`. La seule idée différée explicitement à conserver durablement est `TransactionLogEvent`.
|