Files
sasedev-knowledge/deltas/0.0.2/alpha.1.fix.1.md

205 lines
5.9 KiB
Markdown

<!-- file: deltas/0.0.2/alpha.1.fix.1.md -->
<!-- version: 1 -->
# Delta 0.0.2-alpha.1.fix.1 — restructuration du plan de release
## Base requise
Partir de l'état `0.0.2-alpha.1` après application et commit du history :
```text
deltas/0.0.2/alpha.1.md présent et historique
history/0.0.2/alpha.1.md FAIL
```
Le delta `alpha.1` historique ne doit pas être réécrit.
La version devient :
```text
0.0.2-alpha.1.fix.1
```
## Objet
Corriger uniquement le défaut documentaire observé pendant la revue d'`alpha.1` :
- réaligner le plan `0.0.2` sur le patron de pilotage éprouvé par le plan `0.0.1` ;
- replacer toutes les tranches sous `## Trajectoire prévisionnelle` avec des titres `###` ;
- restaurer un `## Scope` global distinct du `## Hors scope` ;
- ajouter `## État acquis et questions ouvertes` ;
- ajouter `## Déclencheurs de REPLAN` ;
- ajouter `## Revue d'horizon` ;
- ordonner les sections de manière cohérente avec la fondation ;
- ajouter une gate explicite empêchant une nouvelle dérive structurelle du plan.
Le fix ne change ni le choix du backend `git`, ni l'ownership de `knowledge-git-lib`, ni le layout mirror/snapshot, ni le scope fonctionnel prévu de `0.0.2`.
Aucun code fonctionnel n'est ajouté.
## Scope
REPLACE :
```text
VERSION
Cargo.toml
docs/plans/002-V0_0_2_GIT_SYNC_PLAN.md
docs/validation/001-VALIDATION_MATRIX.md
```
ADD :
```text
deltas/0.0.2/alpha.1.fix.1.md
```
DELETE : aucun.
Le history `history/0.0.2/alpha.1.md` doit déjà être présent dans la base mais n'est pas inclus dans ce delta.
Aucun fichier sous `crates/` ou `Web/` n'est modifié.
## Structure attendue du plan
Le plan doit présenter, dans cet ordre :
```text
## Statut et sources
## Mission
## État acquis et questions ouvertes
## Scope
## Hors scope
## Stratégie de validation
## Trajectoire prévisionnelle
### alpha.1 — ...
### alpha.2 — ...
### alpha.3 — ...
### alpha.4 — ...
### beta.1 — ...
### rc.1 — ...
### rel.1 — ...
## Déclencheurs de REPLAN
## Clôture et transition
## Revue d'horizon
```
Les détails des tranches restent des forecasts et ne doivent pas être confondus avec le scope global de la release.
## Gate opérateur
Après application du history `alpha.1`, commit/push de cet état, puis application du présent delta :
```bash
test "$(cat VERSION)" = '0.0.2-alpha.1.fix.1'
grep -F 'version = "0.0.2-alpha.1.fix.1"' Cargo.toml
grep -A2 '^## Statut$' history/0.0.2/alpha.1.md | grep -Fx 'FAIL'
git diff --check
python3 - <<'PY'
from pathlib import Path
import re
path = Path("docs/plans/002-V0_0_2_GIT_SYNC_PLAN.md")
text = path.read_text(encoding="utf-8")
lines = text.splitlines()
assert lines[0] == "<!-- file: docs/plans/002-V0_0_2_GIT_SYNC_PLAN.md -->"
assert lines[1] == "<!-- version: 2 -->"
required_h2 = [
"## Statut et sources",
"## Mission",
"## État acquis et questions ouvertes",
"## Scope",
"## Hors scope",
"## Stratégie de validation",
"## Trajectoire prévisionnelle",
"## Déclencheurs de REPLAN",
"## Clôture et transition",
"## Revue d'horizon",
]
positions = [lines.index(heading) for heading in required_h2]
assert positions == sorted(positions), positions
trajectory_start = lines.index("## Trajectoire prévisionnelle")
replan_start = lines.index("## Déclencheurs de REPLAN")
trajectory = lines[trajectory_start + 1:replan_start]
for phase in ("alpha.1", "alpha.2", "alpha.3", "alpha.4", "beta.1", "rc.1", "rel.1"):
assert any(line.startswith(f"### {phase} — ") for line in trajectory), phase
for line in lines:
assert re.fullmatch(r"## (?:alpha|beta|rc|rel)\\..*", line) is None, line
for phrase in (
"0.0.2-alpha.1` est `FAIL`",
"alpha.1.fix.1",
"REPLAN obligatoire si",
"État courant : **non réalisée**.",
"Aucune version postérieure à `0.0.2` n'est réservée",
):
assert phrase in text, phrase
print("Knowledge 0.0.2-alpha.1.fix.1 plan structure audit: clean")
PY
python3 -B scripts/audit_rust_test_layout.py crates
python3 -B scripts/audit_rust_blank_lines.py crates
python3 -B scripts/audit_rust_item_spacing.py crates
python3 -B scripts/audit_rust_module_order.py crates
python3 -B scripts/audit_rust_trait_import_blocks.py crates
python3 -B scripts/audit_rust_reexport_blocks.py crates
python3 -B scripts/audit_rust_export_completeness.py --root . --summary-only
cargo fmt --all -- --check
cargo metadata --format-version 1 --no-deps
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets --all-features
(
cd Web/knowledge-template-lab
npm ci
npm run typecheck
npm run build
)
git diff --name-only -- crates Web
git add -A
git diff --cached --check
git status --short
```
Attendus spécifiques :
- `Knowledge 0.0.2-alpha.1.fix.1 plan structure audit: clean` ;
- `git diff --name-only -- crates Web` vide ;
- aucun `history/0.0.2/alpha.1.fix.1.md` avant réception des résultats opérateur ;
- aucun changement de comportement Git ou Web.
Les warnings Sass déjà observés dans Bootstrap ne constituent pas à eux seuls un `FAIL` si `npm run build` reste `PASS`.
## Revue opérateur complémentaire
Vérifier que :
- le plan se lit d'abord au niveau release (`Mission`, `Scope`, `Hors scope`) puis au niveau tranches sous `Trajectoire prévisionnelle` ;
- les déclencheurs de REPLAN sont suffisamment explicites pour empêcher l'élargissement silencieux d'une tranche ;
- les questions ouvertes restent différées jusqu'à la tranche qui les consomme ;
- la revue d'horizon ne pré-réserve pas de version suivante ;
- aucune décision technique validée par l'étude Git n'a été changée par simple restructuration documentaire.
## Transition
### PASS
Produire `history/0.0.2/alpha.1.fix.1.md`, appliquer ce history, committer/pousser le fix, puis seulement préparer `0.0.2-alpha.2`.
### FAIL / PARTIAL / BLOCKED
Conserver le résultat réel dans `history/0.0.2/alpha.1.fix.1.md` et rester dans le scope `alpha.1` avec `alpha.1.fix.2` si nécessaire.