5.2 KiB
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 :
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 :
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 :
knowledge-domain-lib
knowledge-git-api
knowledge-sync-api
Les frontières de dépendances observées sont conformes :
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 :
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 :
crates/knowledge-domain-lib/src/source.rs:33
Le code tente de construire :
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 :
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 :
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 :
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.