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

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.