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-knowledgecomme nom du dépôt applicatif ;knowledgecomme nom court et préfixe de crates ;- la composition PGR réellement applicable sans activer Java/Android/Tauri ;
- les skeletons
001,002et003comme 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,howtosetsnippets; - les frontières de force normative entre PGR, HOWTO, snippet et project-local ;
- la trajectoire prévisionnelle de
0.0.1et 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.