Files
sasedev-knowledge/history/0.0.1/alpha.3.md
2026-09-27 22:23:43 +02:00

158 lines
5.2 KiB
Markdown

<!-- file: history/0.0.1/alpha.3.md -->
<!-- version: 1 -->
# History 0.0.1-alpha.3 — contrats domaine, Git et synchronisation
## Statut
FAIL
La gate opérateur de `0.0.1-alpha.3` exécutée le `2026-09-27` valide le cadrage structurel et les audits, puis échoue sur une erreur de compilation Rust dans `knowledge-domain-lib`.
## Baseline opérateur
La tranche précédente a été clôturée et publiée avant application de `alpha.3` :
```text
history/0.0.1/alpha.2.md = PASS
commit 8cd187b
message 0.0.1-alpha.2
branch master
push origin/master PASS
status clean après push
```
Le push observé a avancé `origin/master` de `d632afe` à `8cd187b`.
## Structure et metadata
Les contrôles initiaux ont réussi :
```text
VERSION = 0.0.1-alpha.3
git diff --check = clean
Knowledge 0.0.1-alpha.3 structural audit: clean
Knowledge 0.0.1-alpha.3 Cargo boundary audit: clean
```
`cargo metadata --format-version 1 --no-deps` a produit le graphe attendu avec exactement :
```text
knowledge-domain-lib
knowledge-git-api
knowledge-sync-api
```
Les frontières de dépendances observées sont conformes :
```text
knowledge-domain-lib -> aucune dépendance workspace
knowledge-git-api -> knowledge-domain-lib
knowledge-sync-api -> knowledge-domain-lib
```
## Formatage et audits Rust
Les commandes suivantes ont réussi :
```text
cargo fmt --all
cargo fmt --all -- --check
Rust blank-line audit: clean (8 file(s))
Rust item-spacing audit: clean (8 file(s))
Rust module-order audit: clean (8 file(s))
Rust trait-import-block audit: clean (8 file(s))
Rust re-export-block audit: clean (8 file(s))
Rust export completeness audit: 0 candidate(s) across 3 package(s)
```
Ces preuves restent valides pour la structure livrée mais ne compensent pas l'échec de compilation.
## Défaut de compilation
`cargo check --workspace` échoue avec `E0423` dans :
```text
crates/knowledge-domain-lib/src/source.rs:33
```
Le code tente de construire :
```text
crate::SourceId(value.to_owned())
```
alors que `SourceId` est un tuple struct à champ privé défini dans le sous-module `source` puis réexporté par la façade crate-root. Le re-export rend le type accessible mais ne rend pas son constructeur de champ privé visible depuis la racine.
Le compilateur suggère l'accès direct depuis le module propriétaire. Le correctif retenu doit préserver la façade publique tout en construisant la valeur depuis le scope qui possède le champ privé.
## Propagation du défaut
Le même `E0423` bloque :
```text
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p knowledge-domain-lib --all-targets --all-features
cargo test -p knowledge-git-api --all-targets --all-features
cargo test -p knowledge-sync-api --all-targets --all-features
```
Aucune de ces commandes ne peut donc établir un `PASS` de tranche.
`Cargo.lock` reste présent et non ignoré. La vérification de metadata/boundaries exécutée après les échecs reste propre, mais elle ne constitue pas une compilation.
## Scope Git observé
`git diff --cached --check` est propre. Le staging transmis avant ajout du présent history contient :
```text
M CHANGELOG.md
M Cargo.lock
M Cargo.toml
M README.md
M RULES.md
M VERSION
A crates/knowledge-domain-lib/src/content_family.rs
M crates/knowledge-domain-lib/src/lib.rs
A crates/knowledge-domain-lib/src/source.rs
A crates/knowledge-domain-lib/src/unit_tests.rs
A crates/knowledge-git-api/Cargo.toml
A crates/knowledge-git-api/src/lib.rs
A crates/knowledge-git-api/src/unit_tests.rs
A crates/knowledge-sync-api/Cargo.toml
A crates/knowledge-sync-api/src/lib.rs
A crates/knowledge-sync-api/src/unit_tests.rs
A deltas/0.0.1/alpha.3.md
M docs/architecture/001-PROJECT_PROFILE.md
M docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md
M docs/plans/001-V0_0_1_FOUNDATION_PLAN.md
M docs/validation/001-VALIDATION_MATRIX.md
A scripts/_rust_audit_common.py
A scripts/audit_rust_blank_lines.py
A scripts/audit_rust_export_completeness.py
A scripts/audit_rust_item_spacing.py
A scripts/audit_rust_module_order.py
A scripts/audit_rust_reexport_blocks.py
A scripts/audit_rust_trait_import_blocks.py
```
Ce scope correspond au delta annoncé et au `Cargo.lock` régénéré par Cargo.
## Précision Web reçue avant clôture
Avant production du présent history, le rôle futur du profil Web a été précisé : le skeleton Web PGR sera réellement utilisé pour développer et valider des templates statiques, TypeScript, Sass, Bootstrap et le pipeline Vite. Le markup runtime sera ensuite adapté en Maud dans les applications Actix Web.
Le corpus historique `actix-auth-app` contient en outre un pattern d'intégration utile entre manifest Vite et rendu Maud. Cette précision ne change pas la cause du `FAIL` `alpha.3`; elle peut être documentée dans le fix sans démarrer l'implémentation Web.
## Décision
`0.0.1-alpha.3` est `FAIL`.
La transition autorisée est :
```text
0.0.1-alpha.3.fix.1
```
Le fix doit corriger l'accès au constructeur privé de `SourceId`, ajouter une preuve de régression ciblée, rejouer les gates Rust complètes et conserver le scope fonctionnel de `alpha.3`. La clarification Web peut mettre à jour le plan vivant et l'architecture, mais aucun frontend/serveur fonctionnel ne doit être matérialisé dans ce fix.