v0.2.13-pre.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/020-V0_2_13_INTERFACE_PLAN.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Plan `0.2.13` — Interface / wire foundation
|
||||
|
||||
@@ -383,15 +383,15 @@ Relire les règles/architectures, auditer Core/Transport, classer kbot3, auditer
|
||||
|
||||
### pre.002 — scaffold `ksp-interface-lib` + façade + firewall
|
||||
|
||||
**Statut : réalisé ; gate opérateur à confirmer.**
|
||||
**Statut : réalisé ; gate opérateur intégralement PASS.**
|
||||
|
||||
Créer la crate, l'ajouter au workspace, poser `lib.rs` avec exports explicites, lints, README/USAGE initiaux et canaris manifest/firewall. Dépendance normale unique : `ksp-core-lib`.
|
||||
|
||||
### pre.003 — `ProgramAccountMeta` + bornes communes
|
||||
|
||||
**Statut : prévu**
|
||||
**Statut : réalisé ; gate opérateur à confirmer.**
|
||||
|
||||
Matérialiser la primitive de compte ordonné, les constantes de borne, le modèle d'erreur Interface minimal et les unit/public canaries associés. Ne pas avancer `ProgramInstruction` si la tranche dépasse le budget.
|
||||
Matérialiser la primitive de compte ordonné, la borne accounts, le modèle d'erreur Interface minimal et les unit/public canaries associés. `ProgramInstruction` et la borne data restent réservés à `pre.004`.
|
||||
|
||||
### pre.004 — `ProgramInstruction` passif borné
|
||||
|
||||
@@ -479,3 +479,27 @@ aucun ksp-logging-lib / constants.rs / TRACING_TARGET
|
||||
```
|
||||
|
||||
`pre.003` peut commencer après application du delta et gate opérateur vert. Sa responsabilité reste limitée à `ProgramAccountMeta`, aux bornes communes et au modèle d'erreur Interface minimal ; `ProgramInstruction` reste réservé à `pre.004`.
|
||||
|
||||
## 17. État préparé `pre.003`
|
||||
|
||||
`pre.003` matérialise uniquement la primitive de compte et les contrats nécessaires à la future admission de `ProgramInstruction` :
|
||||
|
||||
```text
|
||||
ProgramAccountMeta présent
|
||||
fields privés
|
||||
constructeurs readonly / writable
|
||||
accessors pubkey / is_signer / is_writable
|
||||
Pubkey Core réutilisé
|
||||
MAX_PROGRAM_INSTRUCTION_ACCOUNTS 255
|
||||
ERROR_CODE_PROGRAM_INSTRUCTION_LIMIT_EXCEEDED interface.program_instruction_limit_exceeded
|
||||
ProgramInstruction absent par contrat
|
||||
MAX_PROGRAM_INSTRUCTION_DATA_LEN absent jusqu'à pre.004
|
||||
serde / borsh / bincode / wincode absents
|
||||
ksp-logging-lib / constants.rs / TRACING_TARGET absents
|
||||
```
|
||||
|
||||
La constante `255` ferme le contrat public de borne accounts mais son enforcement `255/256` appartient au constructeur de `ProgramInstruction` de `pre.004`; `ProgramAccountMeta` représente un seul compte et n'invente donc pas une collection artificielle uniquement pour tester cette limite.
|
||||
|
||||
Une seule catégorie d'erreur Interface est introduite. `invalid_program_instruction` reste absent : aucun invariant de forme distinct des limites n'est encore matérialisé et le créer par symétrie serait prématuré. Les futures erreurs de borne doivent utiliser `ksp_core_lib::Error/Result` et ne projeter que des longueurs/plafonds sûrs.
|
||||
|
||||
Le passage à `pre.004` reste conditionné au gate opérateur complet sur l'overlay `pre.003`.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/016-V0_2_13_INTERFACE.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# Validation `0.2.13` — Interface / wire foundation
|
||||
|
||||
@@ -83,19 +83,19 @@ aucun comportement Program
|
||||
|
||||
## 7. API publique cible
|
||||
|
||||
| Contrat | Attendu final `0.2.13` | Statut |
|
||||
|----------------------|--------------------------------------------------------|------------------|
|
||||
| crate | `ksp-interface-lib` membre workspace | PASS pre.002 |
|
||||
| façade | exports explicites crate-root; aucun `pub mod` | PASS pre.002 |
|
||||
| Pubkey | réexport/usage contrôlé de Core; pas de type parallèle | PASS pre.002 |
|
||||
| `ProgramAccountMeta` | private fields + writable/readonly + accessors | TODO pre.003 |
|
||||
| `ProgramInstruction` | private fields + `try_new` + accessors | TODO pre.004 |
|
||||
| account bound | `<= 255` | TODO pre.003/004 |
|
||||
| data bound | `<= 10_240` | TODO pre.004 |
|
||||
| serde | absent | FIXÉ pre.001 |
|
||||
| generic codec | absent | FIXÉ pre.001 |
|
||||
| Debug instruction | résumé borné, pas payload complet | TODO pre.004 |
|
||||
| Error/Result | Core commun + codes Interface sûrs | TODO pre.003 |
|
||||
| Contrat | Attendu final `0.2.13` | Statut |
|
||||
|----------------------|--------------------------------------------------------|--------------|
|
||||
| crate | `ksp-interface-lib` membre workspace | PASS pre.002 |
|
||||
| façade | exports explicites crate-root; aucun `pub mod` | PASS pre.002 |
|
||||
| Pubkey | réexport/usage contrôlé de Core; pas de type parallèle | PASS pre.002 |
|
||||
| `ProgramAccountMeta` | private fields + writable/readonly + accessors | PASS pre.003 |
|
||||
| `ProgramInstruction` | private fields + `try_new` + accessors | TODO pre.004 |
|
||||
| account bound | constante publique `<= 255`; enforcement constructeur | PASS/PENDING |
|
||||
| data bound | `<= 10_240` | TODO pre.004 |
|
||||
| serde | absent | FIXÉ pre.001 |
|
||||
| generic codec | absent | FIXÉ pre.001 |
|
||||
| Debug instruction | résumé borné, pas payload complet | TODO pre.004 |
|
||||
| Error/Result | Core commun + code Interface sûr minimal | PASS pre.003 |
|
||||
|
||||
## 8. Robustness/adversarial
|
||||
|
||||
@@ -140,15 +140,15 @@ Si une nouvelle dépendance externe apparaît après `pre.001`, la présente mat
|
||||
|
||||
## 10. Tests de release
|
||||
|
||||
| Famille | Attendu | Statut |
|
||||
|--------------------------|------------------------------------------------|--------------|
|
||||
| unit tests privés | constructeurs/bornes/order/debug/errors | TODO |
|
||||
| `tests/public_api.rs` | consommation crate-root uniquement | PASS pre.002 |
|
||||
| external consumer canary | surface utilisable hors modules privés | TODO |
|
||||
| dependency boundary | firewall exact | PASS pre.002 |
|
||||
| release completeness | inventaire exact, aucun domaine supplémentaire | TODO |
|
||||
| round-trip codec | aucun tant qu'aucun codec | N/A |
|
||||
| network smoke | aucun pour crate wire pure | N/A |
|
||||
| Famille | Attendu | Statut |
|
||||
|--------------------------|-------------------------------------------------|--------------|
|
||||
| unit tests privés | account meta/borne puis instruction/adversarial | PARTIEL |
|
||||
| `tests/public_api.rs` | consommation crate-root uniquement | PASS pre.003 |
|
||||
| external consumer canary | surface utilisable hors modules privés | TODO |
|
||||
| dependency boundary | firewall exact | PASS pre.002 |
|
||||
| release completeness | inventaire exact, aucun domaine supplémentaire | TODO |
|
||||
| round-trip codec | aucun tant qu'aucun codec | N/A |
|
||||
| network smoke | aucun pour crate wire pure | N/A |
|
||||
|
||||
## 11. Gate technique final attendu
|
||||
|
||||
@@ -213,3 +213,24 @@ dependency firewall canary présent
|
||||
Le logging reste volontairement absent : la foundation `0.2.13` est passive et n'émet aucun événement/span runtime. Si une future surface comportementale démontre un besoin réel de logging, `ksp-logging-lib`, `src/constants.rs` et `TRACING_TARGET` devront être introduits ensemble conformément à `DEP-LOG-004` et `DEP-LOG-010`.
|
||||
|
||||
Le passage à `pre.003` reste conditionné au gate opérateur complet sur l'overlay `pre.002`.
|
||||
|
||||
## 14. État préparé `pre.003`
|
||||
|
||||
| Critère | Statut |
|
||||
|-----------------------------------------------------|---------------------------------------------|
|
||||
| `ProgramAccountMeta` crate-root | PASS structurel |
|
||||
| champs privés | PASS |
|
||||
| constructeurs `readonly` / `writable` | PASS |
|
||||
| accessors identité/signer/writable | PASS |
|
||||
| Pubkey opaque non registry | PASS unit |
|
||||
| `MAX_PROGRAM_INSTRUCTION_ACCOUNTS == 255` | PASS unit + public API |
|
||||
| enforcement collection `255/256` | PENDING `pre.004` avec `ProgramInstruction` |
|
||||
| code `interface.program_instruction_limit_exceeded` | PASS public API |
|
||||
| type d'erreur propre Interface | ABSENT, Core commun conservé |
|
||||
| `ProgramInstruction` | ABSENT par contrat |
|
||||
| data bound | PENDING `pre.004` |
|
||||
| serde/codecs | ABSENTS |
|
||||
| logging/runtime | ABSENTS |
|
||||
| dépendance normale | `ksp-core-lib` uniquement |
|
||||
|
||||
Le statut `PASS/PENDING` de la borne accounts signifie que la valeur publique est désormais figée à `255`, tandis que le rejet concret de `256` comptes sera testé lorsque la collection existera dans `ProgramInstruction`. Aucun faux wrapper de collection n'est créé dans `pre.003`.
|
||||
|
||||
Reference in New Issue
Block a user