v0.4.7-pre.016

This commit is contained in:
2026-08-05 11:29:43 +02:00
parent 40d831f84d
commit 1d1f57ae78
42 changed files with 493 additions and 1203 deletions

View File

@@ -1,8 +1,8 @@
<!-- file: prompts/001.README.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Prompts actifs
Ce répertoire contient uniquement les prompts nécessaires aux prochaines versions fonctionnelles. Les prompts utilisés pendant la migration bot3 sont archivés sous `olddocs/archivekbot3/prompts/`.
Ce répertoire contient uniquement les prompts nécessaires aux prochaines versions fonctionnelles. Les prompts clôturés sont archivés sous `olddocs/archivekbot3/prompts/`.
- [`027_v0_4_7_metaplex_token_metadata_completion.md`](027_v0_4_7_metaplex_token_metadata_completion.md) : reprise après `0.4.6` et achèvement de Metaplex Token Metadata.
- [`028_v0_4_8_spl_token_metadata_and_offchain_decision.md`](028_v0_4_8_spl_token_metadata_and_offchain_decision.md) : planification de SPL Token Metadata et décision sur le transport off-chain.

View File

@@ -1,193 +0,0 @@
<!-- file: prompts/027_v0_4_7_metaplex_token_metadata_completion.md -->
<!-- version: 2 -->
# Prompt de session — `0.4.7` Achèvement de Metaplex Token Metadata
## 1. Mission
Reprendre `khadhroony-bot3` après la clôture validée de `0.4.6` et achever la surface Metaplex Token Metadata partiellement développée dans bot2. Tout ce qui avait été réalisé dans bot2 a été migré dans bot3 ; la reprise doit donc partir de cette base migrée complète, sans présenter la migration comme partielle.
Le travail ne consiste pas à recommencer le décodeur ni les matérialisations déjà présentes. Il doit partir de létat réel du code, établir un plan de travail fermé, puis compléter lexécuteur, les contrats stateful, le pipeline, les scénarios réutilisables, le CLI, le desktop et les validations finales.
Program ID canonique :
```text
metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s
```
## 2. Base validée `0.4.6`
La base comprend :
- architecture bot3 consolidée en onze crates ;
- Solana Core, SPL Memo, SPL Token classique, ATA et Token-2022 ;
- transports HTTP/WebSocket, stockage PostgreSQL, extraction Core et replay ;
- exécution simulation-first, confirmations, signers et postvalidation ;
- décodeur Metaplex Token Metadata dinstructions ;
- décodeur des comptes Metaplex avec owners, PDA, seeds, bornes et variantes historiques ;
- matrice `test-fixtures/contract-matrices/METAPLEX_TOKEN_METADATA_MATRIX.json` ;
- matérialisation metadata déjà substantielle ;
- coexistence explicite avec les metadata incorporées de Token-2022 ;
- workspace, matrices, registres et bindings TS-RS validés.
Exception conservée : le registre ElGamal nest pas déclaré validé réellement sur réseau. Cette exception ne doit pas être mêlée au jalon Metaplex.
## 3. Lectures obligatoires
1. `RULES.md`, `README.md`, `ROADMAP.md`, `CHANGELOG.md` et ce prompt ;
2. `kb-lib/README.md`, `kb-lib/USAGE.md`, `kb-lib/TODO.md` ;
3. `kb-pipeline/README.md`, `kb-pipeline-demo-scenarios/README.md` et `kb-app-demo-desktop/README.md` ;
4. la matrice Metaplex active et les tests existants ;
5. lIDL archivée `idls/metadata.metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s.metaplex_token_metadata.V1_14_0.from_github_mpl-token-metadata.json` ;
6. le prompt historique `olddocs/archivekbot2/prompts/026_v0_4_7_metaplex_token_metadata.md`, uniquement comme source historique à confronter au code bot3 actuel.
## 4. Première prerelease — plan de travail et brainstorming
La première prerelease de `0.4.7` est consacrée exclusivement à la préparation du développement. Elle ne doit pas introduire lexécuteur, le pipeline Metaplex ou les démonstrations finales.
Elle doit :
- relire le code, les matrices, les tests, les documents actifs et les sources officielles retenues ;
- inventorier les instructions et comptes déjà décodés ;
- inventorier les projections metadata, admin, lifecycle et risk/compliance déjà présentes ;
- identifier les opérations actuelles, historiques decode-only et non supportées ;
- distinguer les travaux certains, les choix darchitecture et les questions encore ouvertes ;
- proposer plusieurs options lorsque des choix structurants existent ;
- produire un plan de travail ordonné par prerelease, avec dépendances, critères dacceptation et validations prévues ;
- établir une liste fermée des manques réels ;
- confirmer explicitement quaucune capacité déjà couverte ne sera réimplémentée.
Cette première prerelease doit aboutir à un plan accepté avant le commencement du développement fonctionnel.
## 5. Frontière fonctionnelle
Metaplex Token Metadata reste distinct de :
- metadata incorporées de Token-2022 ;
- SPL Token Metadata, prévu en `0.4.8` ;
- Metaplex Core ;
- JSON off-chain référencé par URI.
Le fetch HTTP/IPFS/Arweave et la création éventuelle de `kb-offchain-transport` sont hors périmètre de `0.4.7`. Cette décision sera étudiée en `0.4.8` avec SPL Token Metadata.
## 6. Matérialisation
Auditer les projections existantes et compléter uniquement les faits stables manquants :
- metadata : nom, symbole, URI, seller fee, créateurs, collection, uses, token standard, mutabilité et programmable config ;
- admin : update authority, collection authority, delegates et changements dautorité ;
- lifecycle : création, mise à jour, vérification, édition, burn, lock/unlock et transitions prouvées ;
- risk/compliance : royalties, mutabilité, créateurs non vérifiés, rule sets et délégations sensibles.
Chaque fait doit avoir un propriétaire unique. Ne jamais fusionner silencieusement metadata Metaplex et metadata Token-2022.
## 7. Exécution
Implémenter dans `kb-lib` :
- intents typés ;
- builders validés contre les interfaces officielles ;
- liste exacte des signers et comptes ;
- coûts et plafonds de dépense ;
- dry-run par défaut et simulation obligatoire ;
- confirmation opérateur dédiée pour burn, changement dautorité, verify/unverify, delegate/revoke, lock/unlock ;
- classification explicite des opérations historiques decode-only.
## 8. Préflight et postconditions
Vérifier selon lopération :
- owner et Program ID ;
- PDA et seeds ;
- mint, metadata, edition, token account, collection et authority ;
- état de mutabilité, vérification, délégation, token standard et programmable config ;
- cohérence des rule sets et comptes dautorisation ;
- postconditions stateful après soumission.
Tout écart doit échouer avant signature ou être classé explicitement non applicable.
## 9. Pipeline
Intégrer dans `kb-pipeline` :
- lectures stateful bornées ;
- préparation et orchestration dexécution ;
- corrélation des comptes Metaplex ;
- postvalidation ;
- insertion canonique, extraction Core, replay et matérialisation idempotente ;
- diagnostics stables et résultats exploitables par les scénarios.
## 10. Scénarios et démonstrations
Ajouter dans `kb-pipeline-demo-scenarios` :
- scénarios simulation-only par défaut ;
- CLI pour les opérations retenues ;
- fixtures synthétiques et, si possible, réseau ;
- résultats structurés et preuves de postcondition.
Ajouter dans `kb-app-demo-desktop` uniquement les adaptateurs Tauri et panneaux nécessaires. La logique fonctionnelle doit rester dans les crates réutilisables.
## 11. Corpus et validations
Couvrir au minimum :
- NFT, SFT, token fongible, collection et programmable NFT ;
- outer et CPI ;
- transactions réussies et échouées ;
- mauvais Program ID, owner, PDA, comptes, payload tronqué, suffixe et discriminant inconnu ;
- conflits entre metadata Metaplex et metadata Token-2022 ;
- replay PostgreSQL idempotent ;
- simulation, confirmation, envoi et postconditions pour les opérations exécutables.
Ne pas déclarer une validation réseau si les fixtures ou préconditions ne sont pas disponibles.
## 12. Documentation pendant le développement
Mettre à jour au fil des prereleases uniquement les documents nécessaires pour refléter les décisions et contrats réellement introduits :
- les quatre documents des crates modifiées ;
- la matrice Metaplex active ;
- la documentation des opérations supportées, decode-only et non supportées ;
- les rapports de validation propres aux capacités effectivement testées.
La mise à jour générale de clôture appartient à la dernière prerelease.
## 13. Dernière prerelease — clôture de `0.4.7`
La dernière prerelease doit être réservée à la clôture de la version. Elle ne doit pas introduire une nouvelle surface fonctionnelle majeure.
Elle doit obligatoirement :
- exécuter les tests finaux, les audits de conformité et les validations applicatives nécessaires ;
- vérifier lalignement entre code, matrices, registres, bindings TS-RS et documentation ;
- mettre à jour définitivement `README.md`, `ROADMAP.md` et `CHANGELOG.md` ;
- mettre à jour les `README.md`, `TODO.md`, `USAGE.md` et `CHANGELOG.md` des crates concernées ;
- retirer des TODO les tâches terminées et transférer les travaux reportés vers la version correcte ;
- archiver les prompts, plans, rapports ou documents de travail devenus historiques ;
- supprimer les outils temporaires, fichiers de validation et références obsolètes qui ne doivent pas rester dans la version publiée ;
- préparer le prompt complet de la session `0.4.8 — SPL Token Metadata et décision off-chain metadata` ;
- vérifier que ce prompt commence lui aussi par une prerelease de planification et se termine par une prerelease de clôture ;
- préparer la livraison finale de `0.4.7` selon les règles du workspace.
## 14. Validation finale
Exécuter :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --all-targets
python3 scripts/audit_rust_workspace_rules.py
cargo test --workspace
```
Si le desktop est modifié, valider avec :
```bash
cargo tauri dev -c kb-app-demo-desktop/tauri.conf.json
```
## 15. Livraisons
Après larchive complète de départ, livrer uniquement des ZIP delta contenant `delta.md`, sans SHA-256. Les correctifs dune même prerelease utilisent `-delta-fix-XXX.zip`, avec une numérotation recommençant à `fix-001` pour chaque nouvelle prerelease.

View File

@@ -0,0 +1,156 @@
<!-- file: prompts/028_v0_4_8_spl_token_metadata_and_offchain_decision.md -->
<!-- version: 2 -->
# Prompt de session — 0.4.8 SPL Token Metadata et décision off-chain
## Mission
Reprendre `khadhroony-bot3` après la clôture de `0.4.7` et étudier SPL Token Metadata comme surface distincte de Metaplex Token Metadata et des metadata incorporées Token-2022.
La session doit commencer par une planification complète et structurée, puis conserver une planification vivante pendant tout le développement. Le plan initial doit couvrir lensemble de la version, mais il peut être corrigé, enrichi, réordonné ou regrouper des phases lorsque létat réel du code le justifie.
## Exigences de départ obligatoires
Avant toute proposition darchitecture, modification de code ou création de delta :
1. lire les documents racine actifs, notamment `README.md`, `ROADMAP.md`, `RULES.md` et les documents auxquels ils renvoient ;
2. lire intégralement les règles et normes actives du projet :
- `docs/rules/RULES_GENERAL.md` ;
- `docs/rules/RULES_RUST.md` ;
- `docs/rules/RULES_SPECIFIC_KHADHROONY.md` ;
- `docs/rules/CRATE_DOCUMENTATION_RULES.md` ;
- `docs/rules/VERSION_DEVELOPMENT_LIFECYCLE.md` ;
3. relever et appliquer les conventions portant notamment sur :
- Rust 2024 et les restrictions du workspace ;
- visibilité, exports publics, imports et documentation Rust ;
- interdictions `unsafe`, `unwrap`, `expect`, `panic` et règles Tauri spécifiques ;
- entêtes `file:` et `version:` ;
- incrémentation des versions locales des fichiers modifiés ;
- lignes vides, fins de fichier et organisation des modules ;
- emplacement attendu de chaque type de code, test, fixture, IDL et document ;
- format, contenu et rôle de `README.md`, `USAGE.md`, `TODO.md`, `CHANGELOG.md`, rapports, guides, prompts et archives ;
- documents à mettre à jour selon la nature de chaque modification ;
- ordre antéchronologique des changelogs et limitation de chaque changelog à son propre périmètre ;
- politique des prereleases, deltas, correctifs et archivages ;
4. inspecter les `README.md`, `USAGE.md`, `TODO.md` et `CHANGELOG.md` des crates directement concernées avant de les modifier ;
5. inspecter les audits, matrices, IDL, rapports de validation et archives pertinentes sans modifier les archives historiques ;
6. vérifier létat réel du workspace avant dutiliser une hypothèse issue dune ancienne session ou dun ancien document.
Une règle découverte en cours de session doit être intégrée immédiatement au travail courant ; elle ne doit pas être reportée à la clôture.
## Première prerelease obligatoire
La première prerelease est consacrée au plan et au brainstorming. Avant le code, elle doit :
- inventorier les programmes, Program ID, interfaces, comptes, instructions, builders et sources officielles ;
- distinguer précisément SPL Token Metadata, Solana Program Metadata, Metaplex Token Metadata et les metadata incorporées Token-2022 ;
- identifier ce qui existe déjà dans `kb-program-ids`, `kb-lib`, `kb-pipeline`, `kb-pipeline-demo-scenarios`, `kb-app-demo-desktop`, `kb-store`, les matrices et les documents ;
- fixer le périmètre decoder/materializer/executor/pipeline/desktop ;
- décider les fixtures et scénarios réseau nécessaires ;
- découper les prereleases et définir leurs critères dacceptation ;
- décider séparément le périmètre éventuel de `kb-offchain-transport` ;
- préciser les documents, changelogs, TODO, matrices et rapports à maintenir pendant chaque phase.
Le plan doit couvrir la version complète dès le départ, y compris les scénarios Devnet réels. Il reste toutefois souple : des étapes peuvent être ajoutées, déplacées, fusionnées ou séparées si les découvertes techniques lexigent.
Lobjectif opérationnel est de conserver des deltas petits et testables, dont la préparation reste généralement compatible avec une livraison toutes les 10 à 15 minutes de travail effectif. Une phase trop large doit être divisée ; des phases devenues artificiellement petites peuvent être regroupées.
## Scénarios Devnet réels obligatoirement prévus
Lerreur à ne pas reproduire depuis `0.4.7` est de ne pas avoir prévu les scénarios réels dans la planification initiale.
Pour chaque capacité exécutable retenue, le plan doit prévoir dès le départ, puis maintenir pendant le développement :
1. tests contractuels et synthétiques ;
2. campagne réutilisable dans `kb-pipeline-demo-scenarios` lorsque cela apporte une validation automatisable ;
3. panneau ou parcours réel dans `kb-app-demo-desktop` ;
4. fixture Devnet reproductible et préparée par les APIs Rust du workspace lorsque cela est approprié ;
5. simulation RPC du message exact ;
6. soumission confirmée lorsque lopération est sûre et réalisable ;
7. lectures stateful, postconditions et matérialisation observables ;
8. état de validation explicite : synthétique, simulé Devnet, soumis Devnet, non applicable, indisponible ou reporté avec justification.
La mise en œuvre peut évoluer pendant la version, mais les scénarios réels ne doivent jamais disparaître du plan. Une surface ne doit pas être annoncée comme validée réseau sans preuve dexécution réelle observée.
## Audit et gestion des IDL
Avant le code :
1. vérifier si une IDL officielle existe pour la surface SPL Metadata visée ;
2. examiner lIDL déjà présente :
`idls/metadata.ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S.solana_program_metadata.V0_0_0.from_github_solana_program.json` ;
3. déterminer, depuis les sources officielles, si cette IDL correspond exactement au programme et au contrat étudiés ;
4. ne pas assimiler deux surfaces seulement parce que leurs noms contiennent « metadata ».
Lorsquune IDL officielle pertinente est trouvée :
- conserver une copie brute et non réécrite sous `idls/` ;
- appliquer la convention de nommage documentée dans `idls/001.README.md` ;
- encoder la provenance et la version dans le nom ;
- vérifier le Program ID déclaré, la validité JSON et lempreinte ;
- mettre à jour au minimum :
- `idls/001.README.md` ;
- `docs/IDL_AUDIT.md` ;
- `docs/IDL_TO_KB_LIB_NOMENCLATURE.md` ;
- `docs/MISSING_PROGRAM_IDLS.md` si le statut « manquante » change ;
- les documents de classification ou de surface IDL concernés ;
- mettre à jour les compteurs, inventaires, provenance, nomenclature cible et décisions architecturales associées ;
- ne jamais inventer une version ou une provenance absente de la source.
Si aucune IDL officielle exploitable nexiste, documenter cette absence et utiliser les crates/interfaces officielles comme source de vérité sans fabriquer dIDL.
## Frontières
- SPL Token Metadata reste distinct de Metaplex Token Metadata ;
- Solana Program Metadata doit être identifié exactement avant dêtre assimilé ou non à SPL Token Metadata ;
- les metadata incorporées Token-2022 gardent leur propre contrat ;
- le fetch off-chain nest pas incorporé au décodeur canonique ;
- les IDL et interfaces archivées restent des références statiques ;
- les archives sous `olddocs/` ne doivent pas être modifiées hors opération darchivage explicitement prévue.
## Décision `kb-offchain-transport`
Étudier une crate dédiée pour HTTP(S), IPFS et Arweave avec : timeout, taille, type MIME, redirections, cache, hash, provenance, protection SSRF et interdiction des réseaux locaux. Le contenu distant ne modifie jamais le statut canonique du replay on-chain.
Cette décision doit rester séparée de limplémentation canonique on-chain. Elle peut être reportée à une version suivante si son périmètre rend `0.4.8` trop large.
## Discipline documentaire pendant la version
À chaque delta :
- mettre à jour uniquement les documents rendus faux ou incomplets par les modifications du delta ;
- conserver les `README.md` et `USAGE.md` généralistes, structurés par fonction ou groupe, jamais comme journaux de prerelease ;
- réserver les détails chronologiques aux changelogs et rapports de validation ;
- supprimer des TODO les tâches réellement terminées ;
- ajouter seulement des TODO explicites, encore actionnables et placés dans le bon périmètre ;
- maintenir les changelogs du plus récent au plus ancien et limiter chaque entrée aux changements de son emplacement ;
- réconcilier les matrices, guides, rapports, nomenclatures et documents IDL avec le code livré ;
- archiver les documents de travail devenus historiques plutôt que de les laisser parmi les documents actifs.
## Dernière prerelease obligatoire
La dernière prerelease doit être réservée à :
- validations finales et conformité ;
- documentation générale et par crate ;
- nettoyage des TODO ;
- mise à jour du ROADMAP et des changelogs ;
- réconciliation des documents IDL ;
- archivage du plan, des rapports intermédiaires et du prompt de session ;
- préparation du prompt suivant ;
- préparation de la release finale.
La dernière prerelease ne doit pas servir à découvrir tardivement des scénarios Devnet qui nauraient jamais été planifiés.
## Contrôles finaux
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --all-targets
python3 scripts/audit_rust_workspace_rules.py
cargo test --workspace
cargo tauri dev -c kb-app-demo-desktop/tauri.conf.json
```
Les validations Devnet doivent être exécutées selon les parcours documentés dans `kb-app-demo-desktop`, avec conservation des signatures, résultats de simulation, confirmations, postconditions et preuves de matérialisation pertinentes.