0.0.1-alpha.1.fix.1

This commit is contained in:
2026-09-27 21:42:49 +02:00
parent 116219f860
commit d632afe11e
14 changed files with 768 additions and 155 deletions

View File

@@ -0,0 +1,237 @@
<!-- file: deltas/0.0.1/alpha.1.fix.1.md -->
<!-- version: 1 -->
# Delta 0.0.1-alpha.1.fix.1 — conformité Eclipse et topologie multi-app
## Base requise
État `0.0.1-alpha.1` committé avec :
```text
deltas/0.0.1/alpha.1.md
history/0.0.1/alpha.1.md = FAIL
```
Le delta `alpha.1` historique ne doit pas être modifié.
La version devient :
```text
0.0.1-alpha.1.fix.1
```
## Objet
Corriger uniquement les défauts observés pendant la gate `alpha.1` et le cadrage associé :
- adopter la politique Eclipse PGR réellement applicable ;
- versionner `.settings/org.eclipse.core.resources.prefs` ;
- ajouter le header `file/version` au `.gitignore` ;
- rendre la gate de fichiers consciente des règles Git ignore au lieu d'interdire les fichiers locaux ignorés ;
- remplacer la baseline « application Web unique/monolithe » par un workspace modulaire à trois applications Actix Web distinctes ;
- expliciter au moins trois sources Git initiales et PostgreSQL partagé pour l'état transversal.
Aucun code fonctionnel, manifest Cargo, frontend, migration SQL ou adapter forge n'est ajouté.
## Fichiers ajoutés
```text
.settings/org.eclipse.core.resources.prefs
deltas/0.0.1/alpha.1.fix.1.md
```
## Fichiers remplacés
```text
.gitignore
VERSION
README.md
RULES.md
ROADMAP.md
CHANGELOG.md
docs/objectives/001-PROJECT_OBJECTIVES.md
docs/architecture/001-PROJECT_PROFILE.md
docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md
docs/plans/001-V0_0_1_FOUNDATION_PLAN.md
docs/validation/001-VALIDATION_MATRIX.md
```
Aucun fichier n'est supprimé.
## Décisions corrigées
### Eclipse
La politique locale devient conforme à la baseline PGR :
```text
.project ignoré
.classpath ignoré
.settings/* ignoré
.settings/org.eclipse.core.resources.prefs versionné
```
La préférence versionnée contient :
```text
eclipse.preferences.version=1
encoding/<project>=UTF-8
```
### Topologie applicative
Le workspace possède trois launchers distincts :
```text
knowledge-pgr-server -> pgr.sasedev.com
knowledge-howtos-server -> howtos.sasedev.com
knowledge-snippets-server -> snippets.sasedev.com
```
Ils partagent des crates `-lib` lorsque l'ownership est commun ; ils ne deviennent pas trois copies du même domaine.
### Sources Git
La baseline contient au minimum trois sources :
```text
pgr
howtos
snippets
```
Le modèle futur doit permettre plusieurs sources par famille et ne doit pas coder une limite fixe à trois repositories.
### PostgreSQL
La baseline retient une base PostgreSQL logique partagée entre les trois applications pour l'état transversal et les projections reconstructibles.
Le contenu éditorial publié reste autoritaire dans Git.
## Validation attendue
Après application du history `alpha.1`, commit/push de `alpha.1`, puis extraction du présent delta depuis la racine du dépôt :
```bash
test "$(cat VERSION)" = "0.0.1-alpha.1.fix.1"
git diff --check
grep -Fx '# file: .gitignore' .gitignore
grep -Fx '# version: 2' .gitignore
grep -Fx '.settings/*' .gitignore
grep -Fx '!.settings/org.eclipse.core.resources.prefs' .gitignore
grep -Fx 'eclipse.preferences.version=1' .settings/org.eclipse.core.resources.prefs
grep -Fx 'encoding/<project>=UTF-8' .settings/org.eclipse.core.resources.prefs
git check-ignore -q .project
if git check-ignore -q .settings/org.eclipse.core.resources.prefs; then
echo '.settings/org.eclipse.core.resources.prefs must be tracked, not ignored' >&2
exit 1
fi
python3 - <<'PY'
from pathlib import Path
import re
import subprocess
expected = {
".gitignore",
".settings/org.eclipse.core.resources.prefs",
"VERSION",
"README.md",
"RULES.md",
"ROADMAP.md",
"CHANGELOG.md",
"docs/000-README.md",
"docs/objectives/001-PROJECT_OBJECTIVES.md",
"docs/architecture/001-PROJECT_PROFILE.md",
"docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md",
"docs/plans/001-V0_0_1_FOUNDATION_PLAN.md",
"docs/validation/001-VALIDATION_MATRIX.md",
"deltas/0.0.1/alpha.1.md",
"deltas/0.0.1/alpha.1.fix.1.md",
"history/0.0.1/alpha.1.md",
"prompts/001-V0_0_1_START_PROMPT.md",
}
actual = set(
subprocess.check_output(
["git", "ls-files", "--cached", "--others", "--exclude-standard"],
text=True,
).splitlines()
)
assert actual == expected, (sorted(actual - expected), sorted(expected - actual))
for path_string in sorted(expected):
path = Path(path_string)
if path.suffix != ".md":
continue
lines = path.read_text(encoding="utf-8").splitlines()
assert lines[0] == f"<!-- file: {path.as_posix()} -->", path
assert re.fullmatch(r"<!-- version: [1-9][0-9]* -->", lines[1]), path
rules = Path("RULES.md").read_text(encoding="utf-8")
objectives = Path("docs/objectives/001-PROJECT_OBJECTIVES.md").read_text(encoding="utf-8")
profile = Path("docs/architecture/001-PROJECT_PROFILE.md").read_text(encoding="utf-8")
architecture = Path("docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md").read_text(encoding="utf-8")
plan = Path("docs/plans/001-V0_0_1_FOUNDATION_PLAN.md").read_text(encoding="utf-8")
for phrase in (
"knowledge-pgr-server",
"knowledge-howtos-server",
"knowledge-snippets-server",
):
assert phrase in rules, phrase
assert phrase in objectives, phrase
assert phrase in architecture, phrase
for phrase in (
"une base PostgreSQL logique partagée",
"au moins trois sources",
):
assert phrase in architecture, phrase
assert "Topologie d'administration" in profile
assert "### alpha.2 — workspace Rust/Cargo minimal" in plan
assert "### rel.1 — fermeture stable" in plan
for forbidden in (
"src/main.rs",
"src/lib.rs",
"Cargo.toml",
"package.json",
"vite.config.ts",
"migrations/",
):
assert not Path(forbidden).exists(), forbidden
print("Knowledge 0.0.1-alpha.1.fix.1 framing audit: clean")
PY
git add -A
git diff --cached --check
git status --short
```
## Revue opérateur complémentaire
Vérifier notamment :
- que `.project` reste local/ignoré et n'apparaît pas dans le staging ;
- que `.settings/org.eclipse.core.resources.prefs` apparaît bien comme ajouté/suivi ;
- qu'aucun code fonctionnel n'a été introduit ;
- que trois applications distinctes sont bien la topologie produit voulue ;
- que le partage PostgreSQL concerne l'état de plateforme et non le contenu Git autoritaire ;
- que la topologie d'administration reste ouverte et qu'aucun quatrième serveur n'est inventé.
## Transition
### PASS
Produire `history/0.0.1/alpha.1.fix.1.md`, appliquer ce history, committer/pousser la tranche, puis seulement préparer `0.0.1-alpha.2`.
### FAIL / PARTIAL / BLOCKED
Conserver le résultat réel dans `history/0.0.1/alpha.1.fix.1.md` et rester dans le scope `alpha.1` avec un éventuel `alpha.1.fix.2`.