Files
sasedev-knowledge/history/0.0.2/alpha.5.md
2026-09-29 05:59:03 +02:00

159 lines
5.0 KiB
Markdown

<!-- file: history/0.0.2/alpha.5.md -->
<!-- version: 1 -->
# History 0.0.2-alpha.5 — cas d'usage partagé de synchronisation
## Statut
PASS
La gate opérateur de `0.0.2-alpha.5` exécutée le `2026-09-28` est propre. La tranche matérialise `knowledge-app-lib` comme owner du cas d'usage partagé de synchronisation de lecture et rend durable l'ordre de validation Rust `cargo fmt --all` puis `cargo fmt --all -- --check` avant les audits du code Rust.
## Baseline opérateur
`alpha.4.fix.1` `PASS` a été historisé, committé et poussé avant application de `alpha.5` :
```text
history/0.0.2/alpha.4.fix.1.md PASS
commit 1fe39df
message 0.0.2-alpha.4.fix.1
branch master
push origin/master PASS
workspace après push propre
```
Le push observé a avancé `origin/master` de `3f8c795` à `1fe39df`.
## Version, documentation et formatage
Les contrôles passent :
```text
VERSION 0.0.2-alpha.5
Cargo workspace version 0.0.2-alpha.5
git diff --check PASS
Markdown header audit clean (84 file(s))
Markdown link audit clean (71 local link(s), 84 file(s))
Markdown table audit clean (4 table(s), 84 file(s))
cargo fmt --all PASS
cargo fmt --all -- --check PASS
```
Le formatter est exécuté avant les audits Rust, conformément au contrat local désormais possédé par Knowledge.
## Audits Rust
Après formatage, les audits Rust passent :
```text
Rust test-layout audit: clean (9 crate(s))
Rust blank-line audit: clean (32 file(s))
Rust item-spacing audit: clean (32 file(s))
Rust module-order audit: clean (32 file(s))
Rust trait-import-block audit: clean (32 file(s))
Rust re-export-block audit: clean (32 file(s))
Rust crate-root facade audit: clean (6 crate root(s))
Rust export completeness audit: 0 candidate(s) across 9 package(s)
```
## Compilation et Clippy
Les commandes suivantes passent :
```text
cargo metadata --format-version 1 --no-deps PASS
cargo check --workspace PASS
cargo clippy --workspace --all-targets --all-features
-- -D warnings PASS
```
Les neuf packages attendus sont détectés, dont le nouveau `knowledge-app-lib`.
## Cas d'usage de synchronisation
`knowledge-app-lib` compose les contrats existants sans introduire de persistance, de scheduler ou de forge :
```text
RepositorySyncSignal
-> GitRepository::refresh
-> GitRepository::resolve_revision
-> comparaison previous_revision
-> RepositorySyncOutcome::Unchanged
ou
-> GitRepository::prepare_snapshot
-> RepositorySyncOutcome::Changed
```
Les trois tests ciblés passent :
```text
changed_revision_prepares_snapshot_and_returns_observed_revision PASS
unchanged_revision_does_not_prepare_snapshot PASS
periodic_signal_uses_the_same_reconciliation_path PASS
```
La cause `Periodic` emprunte donc le même cas d'usage que la synchronisation explicite sans matérialiser de scheduler concret.
## Tests ciblés et workspace
Les suites ciblées passent :
```text
knowledge-app-lib 3 PASS
knowledge-git-api 1 PASS
knowledge-git-lib 8 unit PASS + 2 integration PASS
knowledge-sync-api 1 PASS
```
La suite workspace passe intégralement :
```text
knowledge-app-lib 3 PASS
knowledge-domain-lib 3 PASS
knowledge-git-api 1 PASS
knowledge-git-lib 8 unit PASS + 2 integration PASS
knowledge-sync-api 1 PASS
knowledge-web-lib 4 PASS
launchers 0 test chacun
```
Les deux tests d'intégration Git réels continuent de prouver refresh, résolution, snapshots, référence invalide et snapshot sale.
## Contrôles structurels et frontières
L'audit spécifique passe :
```text
Knowledge 0.0.2-alpha.5 sync/format-order audit: clean
```
Il confirme notamment :
- neuf packages Cargo exactement ;
- `knowledge-app-lib` dépend uniquement de `knowledge-git-api` et `knowledge-sync-api` en production ;
- `knowledge-domain-lib` reste uniquement une dépendance de test pour cette crate ;
- `Changed` / `Unchanged`, `previous_revision`, refresh, résolution et snapshot sont matérialisés ;
- aucune dépendance PostgreSQL, Gitea/GitHub/GitLab, Actix, Tokio ou scheduler dans le cas d'usage ;
- `cargo fmt --all` précède les audits Rust dans les owners locaux de validation.
`Cargo.lock` est présent localement, ignoré et non suivi. `Web/` reste sans diff. Aucun adapter forge ni store PostgreSQL n'est créé.
Après staging, `git diff --cached --check` passe.
## Décision
`0.0.2-alpha.5` est `PASS`.
Le scope fonctionnel alpha de `0.0.2` est fermé. La transition autorisée est :
```text
appliquer ce history
-> git add / diff --cached --check / status
-> commit exact "0.0.2-alpha.5"
-> push origin master
-> vérifier le workspace propre
-> appliquer seulement ensuite 0.0.2-beta.1
```
`beta.1` doit rester une tranche de réconciliation, stabilisation et revue d'horizon sans grande fonctionnalité nouvelle.