Files
khadhroony-solana-project/deltas/0.2.13/pre.001.md
2026-08-27 23:33:01 +02:00

9.1 KiB

Delta 0.2.13-pre.001 — audit/sizing Interface / wire foundation

1. Base requise

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é :

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

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 :

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 :

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

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

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

aucun

9. Fichiers volontairement inchangés

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 :

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

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 :

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 :

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 :

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

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 :

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é.