v0.2.13-pre.001
This commit is contained in:
276
deltas/0.2.13/pre.001.md
Normal file
276
deltas/0.2.13/pre.001.md
Normal file
@@ -0,0 +1,276 @@
|
||||
<!-- file: deltas/0.2.13/pre.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.13-pre.001` — audit/sizing Interface / wire foundation
|
||||
|
||||
## 1. Base requise
|
||||
|
||||
```text
|
||||
v0.2.12
|
||||
```
|
||||
|
||||
Archive opérateur utilisée : `khadhroony-solana-project-v0.2.12.zip`, annoncée comme issue du tag Gitea stable.
|
||||
|
||||
Vérifications d'identité :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.12 PASS à l'entrée
|
||||
deltas/0.2.12/rel.001.md présent
|
||||
prompts/018-V0_2_13_START_PROMPT.md présent
|
||||
crates/ksp-interface-lib absent
|
||||
crates/ksp-program-api absent
|
||||
.git absent de l'archive
|
||||
```
|
||||
|
||||
Le tag stable n'est donc pas revérifiable localement par Git. L'archive opérateur, le delta stable et la preuve opérateur fournie constituent l'autorité de reprise.
|
||||
|
||||
## 2. Objectif
|
||||
|
||||
Exécuter le gate obligatoire `pre.001` sans ouvrir encore la crate : relire règles/architecture, auditer Core/Transport, auditer l'héritage kbot3, vérifier les candidates externes actuelles, décider le premier lot wire, fixer ownership/bornes/threat model/dependency graph/tests, produire plan/validation et recalibrer la release.
|
||||
|
||||
## 3. Décisions prises
|
||||
|
||||
```text
|
||||
crate cible ksp-interface-lib
|
||||
premier lot ProgramAccountMeta + ProgramInstruction
|
||||
orientation Program-facing passive
|
||||
Pubkey ksp-core-lib::Pubkey, aucun wrapper parallèle
|
||||
Program IDs fondamentaux restent ksp-core-lib
|
||||
account metas ordre + doublons préservés
|
||||
borne account metas 255
|
||||
borne instruction data 10_240 octets
|
||||
fields privés pour préserver les invariants
|
||||
serde OUT pour la foundation
|
||||
borsh/bincode/wincode OUT sans protocole concret
|
||||
solana-instruction référence normative, pas dépendance runtime
|
||||
solana-loader-v3-interface reporté au vertical loader-v3 réel
|
||||
Transport DTO refactor OUT
|
||||
Program traits/decode/recognition 0.2.14, OUT de Interface
|
||||
replay/CPI/logs/return-data/Core 0.3.2+, OUT de 0.2.13
|
||||
nouvelle dépendance externe aucune
|
||||
network/logging runtime aucun
|
||||
```
|
||||
|
||||
Les plafonds 255/10 KiB sont des bornes d'admission Interface dérivées des limites runtime Solana actuelles. Ils ne garantissent pas qu'une instruction donnée rentre dans une transaction top-level complète ; l'assembly transactionnel reste hors scope.
|
||||
|
||||
## 4. Héritage kbot3
|
||||
|
||||
Archive auditée : `khadhroony-bot3_v0.5.3-pre.005-fix010.zip`.
|
||||
|
||||
Verdict synthétique :
|
||||
|
||||
```text
|
||||
REPRENDRE ordered account meta; instruction program_id/accounts/data
|
||||
REDESSINER wrappers String Pubkey/ProgramId; payload non borné
|
||||
REPORTER decoder traits; recognition/proofs; replay/CPI/logs/return data;
|
||||
canonical transaction; prepared execution/signers/policies
|
||||
REJETER monolithe ks-lib; JSON/version/hash génériques par réflexe;
|
||||
operation_code dans le contrat d'instruction passive
|
||||
```
|
||||
|
||||
Aucun code kbot3 n'est porté par ce delta.
|
||||
|
||||
## 5. Audit externe ciblé
|
||||
|
||||
État observé le 27 août 2026 :
|
||||
|
||||
```text
|
||||
solana-instruction 3.5.0
|
||||
Instruction = program_id: Pubkey + Vec<AccountMeta> + Vec<u8>
|
||||
solana-pubkey ^4.3.0
|
||||
serde/borsh/bincode/wincode optionnels
|
||||
licence Anza SDK Apache-2.0
|
||||
|
||||
solana-program 4.1.0
|
||||
MAX_CPI_INSTRUCTION_ACCOUNTS = 255
|
||||
MAX_CPI_INSTRUCTION_DATA_LEN = 10 * 1024
|
||||
MAX_CPI_ACCOUNT_INFOS = 128 (unique account infos; non appliqué aux metas)
|
||||
|
||||
solana-loader-v3-interface 8.1.1
|
||||
compatible avec solana-instruction ^3.5.0 / solana-pubkey ^4.3.0 observés
|
||||
hors premier lot
|
||||
```
|
||||
|
||||
Aucune nouvelle dépendance n'est justifiée par `pre.001`.
|
||||
|
||||
## 6. Fichiers ajoutés
|
||||
|
||||
```text
|
||||
docs/plans/020-V0_2_13_INTERFACE_PLAN.md
|
||||
docs/validation/016-V0_2_13_INTERFACE.md
|
||||
deltas/0.2.13/pre.001.md
|
||||
```
|
||||
|
||||
## 7. Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
docs/000-README.md
|
||||
docs/plans/000-README.md
|
||||
docs/validation/000-README.md
|
||||
```
|
||||
|
||||
`workspace.package.version` passe à `0.2.13-pre.1` conformément au workflow des prereleases non-fix.
|
||||
|
||||
## 8. Fichiers supprimés
|
||||
|
||||
```text
|
||||
aucun
|
||||
```
|
||||
|
||||
## 9. Fichiers volontairement inchangés
|
||||
|
||||
```text
|
||||
ROADMAP.md
|
||||
CHANGELOG.md
|
||||
prompts/018-V0_2_13_START_PROMPT.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/architecture/**
|
||||
crates/**
|
||||
config/**
|
||||
.env.example
|
||||
```
|
||||
|
||||
La roadmap/séquence/architecture possèdent déjà les frontières `0.2.13` / `0.2.14` / `0.3.2`. `pre.001` les confronte à la base réelle dans le nouveau plan sans les réécrire par duplication. `ROADMAP.md` et `CHANGELOG.md` restent hors du couloir de cette tranche.
|
||||
|
||||
## 10. Audit interne exécuté
|
||||
|
||||
Points confirmés :
|
||||
|
||||
```text
|
||||
Core réexporte Pubkey et possède les Program IDs fondamentaux
|
||||
Core possède Error/Result communs
|
||||
Transport possède encore les projections HTTP/WS/Yellowstone concrètes
|
||||
aucun besoin de déplacer ces DTOs vers Interface en 0.2.13
|
||||
Interface ne doit pas dépendre de Program/Transport/Store/Wallet/Config
|
||||
Program API pourra dépendre de Core + Interface en 0.2.14
|
||||
wires d'acquisition/CORE génériques restent réservés à 0.3.2+
|
||||
workspace n'a pas solana-instruction/borsh/wincode comme besoin Interface actuel
|
||||
```
|
||||
|
||||
## 11. Threat model et tests décidés
|
||||
|
||||
```text
|
||||
accounts 255 accepté
|
||||
accounts 256 refusé
|
||||
data 10_240 accepté
|
||||
data 10_241 refusé
|
||||
empty accounts/data accepté
|
||||
ordre + doublons préservés
|
||||
unknown Program Pubkey accepté
|
||||
Debug instruction résumé borné
|
||||
payload hostile dans Debug/Error absent
|
||||
serde hostile éliminé par absence de serde
|
||||
malformed/discriminant N/A tant qu'aucun codec n'est retenu
|
||||
panic/unwrap/expect/? audits/lints KSP
|
||||
network smoke non requis
|
||||
public API / external consumer requis
|
||||
cargo tree / dependency firewall requis dès scaffold
|
||||
```
|
||||
|
||||
## 12. Validations exécutées dans le sandbox
|
||||
|
||||
Avant modification, sur l'archive stable extraite :
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py PASS
|
||||
python3 scripts/audit_markdown_tables.py ... deltas/0.2.13 PASS
|
||||
```
|
||||
|
||||
La preuve opérateur fournie sur le checkout stable `0.2.12` établit :
|
||||
|
||||
```text
|
||||
cargo fmt --all PASS
|
||||
Rust rules audit PASS
|
||||
Markdown table audit PASS
|
||||
cargo check --workspace PASS
|
||||
cargo clippy --workspace --all-targets PASS
|
||||
cargo test --workspace PASS
|
||||
```
|
||||
|
||||
Après génération du présent overlay :
|
||||
|
||||
```text
|
||||
python3 scripts/audit_rust_workspace_rules.py PASS
|
||||
General Rust rule audit clean
|
||||
Rust export completeness audit 0 candidate(s)
|
||||
KSP workspace Rust rule audit clean
|
||||
python3 scripts/audit_markdown_tables.py ... deltas/0.2.13 PASS
|
||||
tables / files 160 / 111
|
||||
```
|
||||
|
||||
## 13. Validations non exécutées dans ce sandbox
|
||||
|
||||
```text
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test --workspace
|
||||
cargo tree -p ksp-interface-lib --edges normal
|
||||
cargo tree --duplicates
|
||||
```
|
||||
|
||||
Cause : executable `cargo` absent du sandbox de préparation. `ksp-interface-lib` n'existe pas encore par contrat de `pre.001`, donc les graphes propres à la crate commenceront avec `pre.002`.
|
||||
|
||||
Aucune commande non exécutée localement n'est déclarée PASS.
|
||||
|
||||
## 14. Forecast souple recalibré
|
||||
|
||||
### pre.001 — audit + héritage + frontières + sizing
|
||||
|
||||
**Statut : livré par le présent delta.**
|
||||
|
||||
### pre.002 — scaffold `ksp-interface-lib` + façade + firewall
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
### pre.003 — `ProgramAccountMeta` + bornes communes
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
### pre.004 — `ProgramInstruction` passif borné
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
### pre.005 — adversarial + consumer externe + API/dependency hardening
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
### pre.006 — gate technique final
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
### pre.007 — réconciliation documentaire finale
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
### pre.008 — préparation de publication minimale
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
### rel.001 — publication stable
|
||||
|
||||
**Statut : prévu.**
|
||||
|
||||
Le second lot wire optionnel du forecast initial est supprimé : aucun second domaine ne justifie une tranche dans cette foundation. Le scope reste compatible avec une release/session.
|
||||
|
||||
## 15. Questions ouvertes
|
||||
|
||||
Aucune question bloquante pour `pre.002`.
|
||||
|
||||
Les noms exacts des codes d'erreur et le détail final des accessors peuvent encore être ajustés dans `pre.003`/`pre.004` sans rouvrir l'ownership, les bornes ou le scope de release.
|
||||
|
||||
## 16. Validation opérateur après application
|
||||
|
||||
Exécuter :
|
||||
|
||||
```bash
|
||||
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.2.13
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test --workspace
|
||||
```
|
||||
|
||||
`pre.002` ne commence qu'après retour du gate appliqué.
|
||||
Reference in New Issue
Block a user