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

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/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

.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 .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.