Files
khadhroony-solana-project/deltas/0.3.5/pre.005.md
2026-08-31 11:17:09 +02:00

3.8 KiB

Delta 0.3.5-pre.005 — hardening et complétude Interface

Base requise

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 :

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 :

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 :

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 :

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 :

Cargo.toml
crates/ksp-interface-lib/tests/dependency_boundary.rs
docs/validation/022-V0_3_5_INTERFACE_ACQUISITION_EVENTS.md

Ajoutés :

crates/ksp-interface-lib/tests/security_hardening.rs
deltas/0.3.5/pre.005.md

Explicitement inchangés :

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

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 :

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.