208 lines
8.3 KiB
Markdown
208 lines
8.3 KiB
Markdown
<!-- file: deltas/0.0.3/beta.1.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.0.3-beta.1 — réconciliation, changelog candidat et horizon produit
|
|
|
|
## Baseline requise
|
|
|
|
Partir de `0.0.3-alpha.4` après application, commit et push de son history :
|
|
|
|
```text
|
|
history/0.0.3/alpha.4.md = PASS
|
|
```
|
|
|
|
La version devient :
|
|
|
|
```text
|
|
0.0.3-beta.1
|
|
```
|
|
|
|
## Nature de la tranche
|
|
|
|
`beta.1` est une tranche de stabilisation documentaire et de réconciliation. Elle n'ajoute aucun comportement Rust/Web, aucune crate, aucune dépendance et aucune migration.
|
|
|
|
Elle :
|
|
|
|
- réconcilie le chemin Git de lecture/écriture réellement obtenu ;
|
|
- prépare le changelog `0.0.3 (candidate)` à partir des capacités validées ;
|
|
- reclassifie la persistance PostgreSQL comme prochaine mission `0.0.4` ;
|
|
- étend l'horizon afin de représenter les trois produits PGR/HOWTOs/snippets et leurs phases de templates publics/admin puis d'intégration Actix/Maud ;
|
|
- prépare le prompt `0.0.4` pendant la fin de `0.0.3`, conformément au cycle normal ;
|
|
- conserve les autres `DEFER` sans implémentation anticipée.
|
|
|
|
L'étude durable est :
|
|
|
|
```text
|
|
docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
```
|
|
|
|
## Scope des fichiers
|
|
|
|
REPLACE :
|
|
|
|
```text
|
|
VERSION
|
|
Cargo.toml
|
|
README.md
|
|
ROADMAP.md
|
|
CHANGELOG.md
|
|
docs/000-README.md
|
|
docs/architecture/001-PROJECT_PROFILE.md
|
|
docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md
|
|
docs/plans/003-V0_0_3_GIT_WRITE_PLAN.md
|
|
docs/validation/001-VALIDATION_MATRIX.md
|
|
```
|
|
|
|
ADD :
|
|
|
|
```text
|
|
docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
prompts/004-V0_0_4_START_PROMPT.md
|
|
deltas/0.0.3/beta.1.md
|
|
```
|
|
|
|
DELETE : aucun.
|
|
|
|
`crates/` et `Web/` ne sont pas modifiés. Aucun history `beta.1` n'est inclus dans ce delta.
|
|
|
|
## Horizon retenu
|
|
|
|
La prochaine mission potentielle est :
|
|
|
|
```text
|
|
0.0.4 fondation PostgreSQL partagée et migrations
|
|
```
|
|
|
|
L'horizon révisable devient ensuite :
|
|
|
|
```text
|
|
0.0.5 modèles de contenu et projections PGR/HOWTO/snippet
|
|
0.0.6 templates publics des trois sites, pages de garde incluses
|
|
0.0.7 templates d'administration des trois sites
|
|
0.0.8 routes publiques Actix Web + adaptation Maud
|
|
0.0.9 auth/autorisation + routes admin Actix Web + adaptation Maud
|
|
0.0.10 gestion/proposition/revue/publication Git + PostgreSQL
|
|
```
|
|
|
|
Cette numérotation donne une trajectoire produit lisible mais ne transforme pas `0.0.5+` en engagements irrévocables. Les revues d'horizon futures peuvent encore réordonner, scinder ou fusionner ces étapes.
|
|
|
|
## Handoff 0.0.4
|
|
|
|
`prompts/004-V0_0_4_START_PROMPT.md` est créé maintenant parce que la mission PostgreSQL est suffisamment décidée.
|
|
|
|
Le prompt ne fabrique aucune preuve postérieure à `0.0.3` : il ne contient ni commit stable réel de `v0.0.3`, ni SHA-256 d'archive taggée, ni statut post-tag supposé. La future session devra recevoir l'archive et le rapport réels après publication et les vérifier avant développement.
|
|
|
|
## Gate opérateur
|
|
|
|
Exécuter depuis la racine du dépôt après application du delta.
|
|
|
|
### Version, documentation et Rust
|
|
|
|
```bash
|
|
test "$(cat VERSION)" = '0.0.3-beta.1'
|
|
grep -F 'version = "0.0.3-beta.1"' Cargo.toml
|
|
grep -A2 '^## Statut$' history/0.0.3/alpha.4.md | grep -Fx 'PASS'
|
|
|
|
git diff --check
|
|
|
|
python3 -B scripts/audit_markdown_headers.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts deltas history
|
|
python3 -B scripts/audit_markdown_links.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts deltas history
|
|
python3 -B scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts deltas history
|
|
|
|
cargo fmt --all
|
|
cargo fmt --all -- --check
|
|
|
|
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_crate_root_facades.py crates
|
|
python3 -B scripts/audit_rust_export_completeness.py --root . --summary-only
|
|
|
|
cargo metadata --format-version 1 --no-deps > /tmp/sasedev-knowledge-0.0.3-beta.1-metadata.json
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
cargo test -p knowledge-git-lib --test git_read_path
|
|
cargo test -p knowledge-git-lib --test git_write_candidate
|
|
cargo test -p knowledge-git-lib --test git_write_push
|
|
cargo test --workspace --all-targets --all-features
|
|
```
|
|
|
|
### Baseline Web de stabilisation
|
|
|
|
```bash
|
|
(cd Web/knowledge-template-lab && npm ci)
|
|
(cd Web/knowledge-template-lab && npm run typecheck)
|
|
(cd Web/knowledge-template-lab && npm run build)
|
|
```
|
|
|
|
Audit du manifest, sous forme d'une commande indépendante :
|
|
|
|
```bash
|
|
python3 -c 'import json; from pathlib import Path; p=Path("../builds/sasedev-knowledge/web/template-lab/.vite/manifest.json"); m=json.loads(p.read_text(encoding="utf-8")); e=m["src/main.ts"]; assert e.get("file"); assert e.get("css"); print("Knowledge 0.0.3-beta.1 Vite manifest audit: clean")'
|
|
```
|
|
|
|
Les smokes HTTP complets des trois launchers seront obligatoires en `rc.1`. `beta.1` ne modifie aucun runtime Web et valide ici la baseline npm/typecheck/build/manifest en plus des tests Rust workspace.
|
|
|
|
### Contrôles de réconciliation et d'horizon
|
|
|
|
Ces commandes sont volontairement courtes et indépendantes.
|
|
|
|
```bash
|
|
grep -F '## 0.0.3 (candidate)' CHANGELOG.md
|
|
|
|
grep -F -- '- `(h) 0.0.4` — fondation PostgreSQL partagée' ROADMAP.md
|
|
grep -F -- '- `(h) 0.0.6` — templates publics des trois sites' ROADMAP.md
|
|
grep -F -- '- `(h) 0.0.7` — templates d'administration des trois sites' ROADMAP.md
|
|
grep -F -- '- `(h) 0.0.8` — lecture publique Actix Web / Maud' ROADMAP.md
|
|
grep -F -- '- `(h) 0.0.9` — administration Actix Web / Maud et autorisation' ROADMAP.md
|
|
grep -F -- '- `(h) 0.0.10` — gestion, proposition, revue et publication' ROADMAP.md
|
|
|
|
test -f docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
test -f prompts/004-V0_0_4_START_PROMPT.md
|
|
|
|
grep -F '### 0.0.4 — PostgreSQL partagé' docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
grep -F '### 0.0.6 — templates publics' docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
grep -F "### 0.0.7 — templates d'administration" docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
grep -F '### 0.0.8 — Actix Web / Maud public' docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
grep -F 'pgr.sasedev.com affichage et gestion de PGR' docs/studies/007-V0_0_3_GIT_WRITE_RECONCILIATION.md
|
|
|
|
grep -F 'archive sasedev-knowledge-v0.0.3.zip téléchargée depuis le tag Gitea v0.0.3' prompts/004-V0_0_4_START_PROMPT.md
|
|
grep -F 'Ne pas rechercher, charger ni adopter automatiquement une nouvelle version de PGR.' prompts/004-V0_0_4_START_PROMPT.md
|
|
! grep -Eq '[0-9a-f]{40}|[0-9a-f]{64}' prompts/004-V0_0_4_START_PROMPT.md
|
|
|
|
test -z "$(git diff --name-only -- crates Web)"
|
|
test ! -e crates/knowledge-store-postgres-lib
|
|
test ! -e crates/knowledge-forge-gitea-lib
|
|
test ! -e migrations
|
|
test ! -e history/0.0.3/beta.1.md
|
|
```
|
|
|
|
### Hygiène texte et lockfiles
|
|
|
|
```bash
|
|
python3 -c 'from pathlib import Path; roots=[Path("README.md"),Path("RULES.md"),Path("ROADMAP.md"),Path("CHANGELOG.md"),Path("docs"),Path("prompts"),Path("deltas"),Path("history")]; paths=[p for r in roots for p in ([r] if r.is_file() else r.rglob("*")) if p.is_file()]; bad=[str(p) for p in paths if (lambda b: b"\r" in b or not b.endswith(b"\n") or b.endswith(b"\n\n") or any(line != line.rstrip(" \t") for line in b.decode("utf-8").splitlines()))(p.read_bytes())]; print(f"Knowledge 0.0.3-beta.1 text hygiene: clean ({len(paths)} file(s))") if not bad else (_ for _ in ()).throw(AssertionError(bad))'
|
|
|
|
test -f Cargo.lock
|
|
git check-ignore -q Cargo.lock
|
|
if git ls-files --error-unmatch Cargo.lock >/dev/null 2>&1; then echo 'Cargo.lock must remain untracked for Knowledge' >&2; exit 1; fi
|
|
|
|
test -f Web/knowledge-template-lab/package-lock.json
|
|
|
|
git add -A
|
|
git diff --cached --check
|
|
git status --short
|
|
```
|
|
|
|
## Transition
|
|
|
|
### PASS
|
|
|
|
Produire `history/0.0.3/beta.1.md`, l'appliquer, commit/push `0.0.3-beta.1`, puis préparer `0.0.3-rc.1` sans nouvelle fonctionnalité. La RC doit geler le scope et rejouer la gate complète, y compris npm/Vite et les trois smokes HTTP.
|
|
|
|
### FAIL / PARTIAL / BLOCKED
|
|
|
|
Conserver le résultat réel dans son history avant toute correction. Un défaut borné utilise `beta.1.fix.N`. Toute découverte remettant en cause l'intégrité du chemin Git, la mission `0.0.4` ou la trajectoire produit exige un REPLAN explicite avant poursuite.
|