6.7 KiB
Delta 0.0.1-alpha.1.fix.1 — conformité Eclipse et topologie multi-app
Base requise
État 0.0.1-alpha.1 committé avec :
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 :
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/versionau.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
.settings/org.eclipse.core.resources.prefs
deltas/0.0.1/alpha.1.fix.1.md
Fichiers remplacés
.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 :
.project ignoré
.classpath ignoré
.settings/* ignoré
.settings/org.eclipse.core.resources.prefs versionné
La préférence versionnée contient :
eclipse.preferences.version=1
encoding/<project>=UTF-8
Topologie applicative
Le workspace possède trois launchers distincts :
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 :
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 :
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
.projectreste local/ignoré et n'apparaît pas dans le staging ; - que
.settings/org.eclipse.core.resources.prefsapparaî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.