Files
sasedev-knowledge/deltas/0.0.1/alpha.1.md
2026-09-27 21:04:10 +02:00

6.8 KiB

Delta 0.0.1-alpha.1 — cadrage et gouvernance Knowledge

Base requise

Nouveau dépôt applicatif sasedev-knowledge avant sa première tranche gouvernée.

Aucune release Knowledge antérieure n'existe. L'absence initiale de VERSION, rules, plan, delta/history ou code applicatif est normale.

Le cadrage de cette tranche a été préparé à partir des artefacts externes autoritaires suivants :

PGR tag stable              v0.1.1
pgr-v0.1.1.zip SHA-256      caaf8f456f7f8520172ea7705fd0cf5c5bf0e942dc4a773410bcbe7fe4ce243a
PGR publish report          pgr-0.1.1-publish.001-report.md = PASS
Knowledge start prompt      prompts/001-V0_0_1_START_PROMPT.md

L'absence de .git dans l'archive taggée PGR est normale et a été vérifiée comme telle.

Objet

Établir le gate de framing 0.0.1-alpha.1 avant toute implémentation fonctionnelle : gouvernance locale, owners/skeletons PGR applicables, architecture Git/forge/PostgreSQL, frontières PGR/HOWTO/snippet, plan de release et validation proportionnée.

La version devient :

0.0.1-alpha.1

Cette tranche n'ajoute aucun serveur Actix, frontend Vite, schéma PostgreSQL, adapter Gitea ou implémentation Git.

Fichiers ajoutés

.gitignore
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
prompts/001-V0_0_1_START_PROMPT.md

Aucun fichier n'est remplacé ou supprimé.

Aucun manifest de suppression n'est nécessaire.

Décisions de cadrage

La tranche fixe notamment :

  • sasedev-knowledge comme nom du dépôt applicatif ;
  • knowledge comme nom court et préfixe de crates ;
  • la composition PGR réellement applicable sans activer Java/Android/Tauri ;
  • les skeletons 001, 002 et 003 comme trajectoire de composition, avec matérialisation progressive ;
  • l'absence d'override PGR identifié ;
  • Git comme backend autoritaire du contenu ;
  • une forge comme adapter optionnel distinct des opérations Git ;
  • une synchronisation fonctionnant sans webhook ;
  • PostgreSQL comme état applicatif et projection reconstructible ;
  • le monolithe modulaire comme baseline de départ ;
  • la séparation des dépôts pgr, howtos et snippets ;
  • les frontières de force normative entre PGR, HOWTO, snippet et project-local ;
  • la trajectoire prévisionnelle de 0.0.1 et ses décisions explicitement différées.

Prévalidation assistant effectuée

Avant livraison du delta, la stable PGR source a été vérifiée et rejouée :

archive SHA-256             PASS
archive CRC                 PASS
292 entries / 256 files / 36 directories
root pgr/                   PASS
symlinks                    0
.git                        absent
VERSION                     0.1.1
Python tests                48/48 PASS
Markdown headers            clean, 231 files
Markdown tables             clean, 9 tables / 231 files
Markdown links              clean, 267 links / 231 files
0.1.1 deltas/histories      11 / 11, statuts conformes au publish report

Cette prévalidation ne constitue pas le résultat de la gate opérateur Knowledge.

Validation attendue

Depuis la racine du nouveau dépôt après extraction du delta :

test "$(cat VERSION)" = "0.0.1-alpha.1"

git diff --check

python3 - <<'PY'
from pathlib import Path
import re

expected = {
    ".gitignore",
    "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",
    "prompts/001-V0_0_1_START_PROMPT.md",
}

actual = {
    path.as_posix()
    for path in Path(".").rglob("*")
    if path.is_file() and ".git" not in path.parts
}
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")
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 (
    "caaf8f456f7f8520172ea7705fd0cf5c5bf0e942dc4a773410bcbe7fe4ce243a",
    "Aucun `OVERRIDE` PGR n'est établi",
    "Git est la source autoritaire du contenu versionné publié",
):
    assert phrase in rules, phrase

for phrase in ("ADOPT", "KEEP-LOCAL", "OVERRIDE", "DEFER", "003-WEB_FRONTEND"):
    assert phrase in profile, phrase

for phrase in (
    "Git est le backend du contenu ; une forge est une capacité optionnelle.",
    "RepositoryEventSource",
    "PGR / HOWTO / snippet / project-local",
    "Git versus PostgreSQL",
):
    assert phrase in architecture, phrase

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", "package.json", "vite.config.ts", "migrations/"):
    assert not Path(forbidden).exists(), forbidden

print("Knowledge 0.0.1-alpha.1 framing audit: clean")
PY

git add -A
git diff --cached --check
git status --short

Revue opérateur complémentaire :

  • vérifier qu'aucun fichier fonctionnel non listé n'a été introduit ;
  • vérifier que le dépôt est réellement nouveau ou que tout fichier local préexistant non livré a été identifié avant git add -A ;
  • vérifier la cohérence des décisions locales et des DEFER ;
  • vérifier l'absence de secret, credential, URL privée sensible ou chemin machine absolu ;
  • vérifier que les fichiers Eclipse/IDE locaux restent ignorés.

Transition

PASS

Transmettre les sorties complètes de la gate opérateur.

L'assistant produit ensuite une archive history séparée pour history/0.0.1/alpha.1.md, puis prépare 0.0.1-alpha.2 consacré au workspace Rust/Cargo minimal conformément au plan.

Le commit de alpha.1 intervient uniquement après application du history observé et avant application du delta suivant.

FAIL / PARTIAL / BLOCKED

Conserver le résultat réel dans le history correspondant.

Rester dans le scope alpha.1 et produire 0.0.1-alpha.1.fix.1 si le défaut relève de cette tranche. Aucun scope alpha.2 ne doit être introduit dans le fix.