Files
sasedev-knowledge/history/0.0.4/alpha.2.md
2026-10-01 11:00:00 +02:00

222 lines
7.9 KiB
Markdown

<!-- file: history/0.0.4/alpha.2.md -->
<!-- version: 1 -->
# History 0.0.4-alpha.2 — owner PostgreSQL, pool et première migration
## Statut
FAIL
La gate opérateur de `0.0.4-alpha.2` exécutée le `2026-10-01` échoue sur Clippy strict : la crate de test d'intégration `crates/knowledge-store-postgres-lib/tests/postgres_migration.rs` ne possède pas de documentation de crate alors que `missing_docs` est activé et promu en erreur par `-D warnings`.
La fondation PostgreSQL compile, les tests Rust hors Clippy passent, et la migration réelle finit par passer sur PostgreSQL après définition explicite de `KNOWLEDGE_POSTGRES_TEST_URL`. Le statut reste néanmoins `FAIL`, car la gate obligatoire Clippy n'est pas propre.
## Baseline opérateur
`alpha.1` `PASS` a été historisé, committé et poussé avant application de `alpha.2` :
```text
history/0.0.4/alpha.1.md PASS
commit b55eb23
message 0.0.4-alpha.1
branch master
push origin/master PASS
```
Le push observé a avancé `origin/master` de `b382397` à `b55eb23`.
## Version, scope et dépendances
Les contrôles initiaux passent :
```text
VERSION 0.0.4-alpha.2
Cargo workspace version 0.0.4-alpha.2
history/0.0.4/alpha.1.md présent, suivi, PASS
history/0.0.4/alpha.2.md avant gate absent
knowledge-store-postgres-lib présent
V1__initial_sources.sql présent
git diff --check PASS
surfaces hors scope propres
```
Les versions et features observées sont exactement :
```text
tokio-postgres 0.7.18 default-features=false, runtime
deadpool-postgres 0.14.2 default-features=false, rt_tokio_1
refinery 0.9.2 default-features=false, tokio-postgres
tokio dev 1.53.1 default-features=false, macros + rt-multi-thread
```
La façade publique contient exactement :
```text
PostgresStoreConfig
PostgresStoreError
PostgresStore
```
La crate produit ne lit pas `KNOWLEDGE_POSTGRES_TEST_URL`, ne lit pas directement l'environnement et ne contient pas de `println!`, `eprintln!` ou `dbg!`.
## Migration initiale
Les contrôles statiques de la migration passent :
```text
knowledge_sources présent
family CHECK pgr/howto/snippet/project_local
knowledge_source_sync_state présent
FK source_id ON DELETE CASCADE présente
last_synchronized_revision NOT NULL présent
contenu/body/credential/account/
proposal/job absents de la migration
```
Le test d'intégration possède bien son marqueur `ignore`, crée un schéma isolé et le supprime avec `DROP SCHEMA ... CASCADE`.
## Markdown, formatage et audits Rust
```text
Markdown header audit clean (130 file(s))
Markdown link audit clean (86 local link(s), 130 file(s))
Markdown table audit clean (5 table(s), 130 file(s))
cargo fmt --all PASS
cargo fmt --all -- --check PASS
Rust test-layout audit clean (10 crate(s))
Rust blank-line audit clean (42 file(s))
Rust item-spacing audit clean (42 file(s))
Rust module-order audit clean (42 file(s))
Rust trait-import-block audit clean (42 file(s))
Rust re-export-block audit clean (42 file(s))
Rust crate-root facade audit clean (7 crate root(s))
Rust export completeness audit 0 candidate(s) across 10 package(s)
```
## Cargo, Clippy et tests
La résolution des nouvelles dépendances et la compilation workspace passent :
```text
cargo metadata --format-version 1 --no-deps PASS
cargo check --workspace PASS
workspace_members 10
```
Les dix packages observés sont exactement les neuf packages historiques plus `knowledge-store-postgres-lib`.
La première défaillance obligatoire survient pendant Clippy :
```text
cargo clippy --workspace --all-targets --all-features -- -D warnings FAIL
```
Erreur observée :
```text
error: missing documentation for the crate
crates/knowledge-store-postgres-lib/tests/postgres_migration.rs
-D missing-docs implied by -D warnings
```
Les tests exécutés après cet échec passent fonctionnellement mais reproduisent le warning de documentation :
```text
cargo test -p knowledge-store-postgres-lib
unit tests PASS (3)
postgres_migration ignored (1, gate explicite requise)
cargo test --workspace --all-targets --all-features
workspace PASS
postgres_migration ignored (1)
```
Tests workspace observés :
```text
knowledge-app-lib 3 PASS
knowledge-domain-lib 3 PASS
knowledge-git-api 7 PASS
knowledge-git-lib 8 unit + 6 integration PASS
knowledge-sync-api 1 PASS
knowledge-web-lib 4 PASS
knowledge-store-postgres-lib 3 PASS + 1 intégration ignorée
launchers 0 test chacun
```
## Preuve PostgreSQL réelle
Une première invocation explicite du test ignoré a été effectuée alors que `KNOWLEDGE_POSTGRES_TEST_URL` n'était pas encore définie. Le test a correctement refusé l'exécution :
```text
KNOWLEDGE_POSTGRES_TEST_URL is required
postgres_migration FAILED
```
Cette première tentative ne révèle pas un défaut PostgreSQL du produit ; elle constate une précondition opérateur absente.
L'opérateur a ensuite défini :
```text
KNOWLEDGE_POSTGRES_TEST_URL=postgresql://knowledge:knowledge@localhost/knowledge
```
puis rejoué exactement le test réel :
```text
cargo test -p knowledge-store-postgres-lib --test postgres_migration -- --ignored --nocapture
```
Résultat :
```text
initial_migration_runs_in_isolated_schema PASS
1 passed; 0 failed
```
La migration initiale, l'isolation par schéma et le nettoyage sont donc prouvés sur PostgreSQL réel. Le warning `missing_docs` reste toutefois présent pendant cette exécution.
## Hygiène et lockfiles
```text
Knowledge 0.0.4-alpha.2 text hygiene clean (185 file(s))
Cargo.lock présent localement, ignoré, non suivi
Web package-lock.json présent et inchangé
git diff --cached --check PASS
```
Le staging final observé avant ajout du présent history est exactement :
```text
M Cargo.toml
M README.md
M RULES.md
M VERSION
A crates/knowledge-store-postgres-lib/Cargo.toml
A crates/knowledge-store-postgres-lib/migrations/V1__initial_sources.sql
A crates/knowledge-store-postgres-lib/src/config.rs
A crates/knowledge-store-postgres-lib/src/error.rs
A crates/knowledge-store-postgres-lib/src/lib.rs
A crates/knowledge-store-postgres-lib/src/store.rs
A crates/knowledge-store-postgres-lib/tests/postgres_migration.rs
A crates/knowledge-store-postgres-lib/unit_tests/config.rs
A deltas/0.0.4/alpha.2.md
M docs/architecture/001-PROJECT_PROFILE.md
M docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md
M docs/plans/004-V0_0_4_POSTGRES_FOUNDATION_PLAN.md
M docs/studies/008-V0_0_4_POSTGRES_FOUNDATION_STUDY.md
M docs/validation/001-VALIDATION_MATRIX.md
```
## Diagnostic
Le défaut est borné à l'en-tête documentaire de la crate de test d'intégration. Les autres tests d'intégration du dépôt utilisent déjà une documentation de crate `//! ...`, ce qui satisfait le lint `missing_docs` appliqué aux targets de test.
Aucun retour opérateur ne justifie de modifier le driver, le pool, Refinery, la façade publique, le schéma SQL, les migrations ou le plan d'ownership. Aucun REPLAN n'est requis.
## Décision
`0.0.4-alpha.2` est `FAIL`.
La correction autorisée est `0.0.4-alpha.2.fix.1`, bornée à l'ajout de la documentation de crate manquante dans `tests/postgres_migration.rs` et au suivi version/plan. Elle doit rejouer Clippy strict, les tests workspace et la preuve PostgreSQL réelle avant d'autoriser `alpha.3`.