7.7 KiB
Delta 0.0.4-alpha.2 — contrat de composition des skeletons
Baseline et version
Baseline : commit opérateur bf306da (0.0.4-alpha.1) après application de history/0.0.4/alpha.1.md avec statut PASS, puis push sur origin/master.
La baseline attendue contient donc le delta, le plan et le history de alpha.1, sans contenu alpha.2 préalable.
Version avant application :
0.0.4-alpha.1
Version après application :
0.0.4-alpha.2
Objet
Matérialiser le contrat transversal annoncé par le plan 0.0.4 sans anticiper les skeletons concrets des tranches suivantes.
La tranche crée docs/rules/220-SKELETONS.md comme propriétaire normatif unique de l'applicabilité, de la sélection, de la composition, des décisions projet, des overrides et de la validation initiale des skeleton specifications. Elle active également docs/skeletons/ avec un index réel décrivant la responsabilité de la collection.
Les index normatifs et documentaires ainsi que les deux documents d'architecture concernés sont réconciliés avec ce nouveau propriétaire. Le modèle des profils reste possédé par docs/architecture/003-RULE_PROFILE_MODEL.md ; le nouveau document 220 le référence au lieu de dupliquer sa hiérarchie.
Aucun skeleton de fondation, Rust/Cargo, Java/Android, Web, JNI, Tauri ou autre domaine technologique n'appartient à cette tranche.
Scope
REPLACE :
VERSION
README.md
RULES.md
docs/000-README.md
docs/architecture/002-GOVERNANCE_ARCHITECTURE.md
docs/architecture/003-RULE_PROFILE_MODEL.md
docs/rules/000-README.md
ADD :
docs/rules/220-SKELETONS.md
docs/skeletons/000-README.md
deltas/0.0.4/alpha.2.md
DELETE : aucun.
L'archive delta contient uniquement ces dix fichiers complets avec leurs chemins relatifs. Elle ne contient pas history/0.0.4/alpha.1.md, déjà committé dans la baseline, ni history/0.0.4/alpha.2.md, qui sera produit après la gate opérateur.
Le plan docs/plans/004-V0_0_4_SKELETONS_PLAN.md n'est pas modifié : la tranche réalise son étape alpha.2 sans replan ni changement substantiel de trajectoire.
Décisions normatives matérialisées
Le contrat commun impose notamment qu'un skeleton :
- déclare son objectif et son applicabilité à partir de faits du projet ;
- identifie les règles, profils, templates, fichiers, décisions, options, overrides, ordre utile, validation et hors-scope nécessaires ;
- référence les owners normatifs existants au lieu de devenir propriétaire implicite de leurs règles ;
- conserve les projets instanciés autonomes et sans dépendance runtime/build vers PGR ;
- distingue les valeurs obligatoires, exemples, recommandations et choix libres lorsqu'une confusion serait possible ;
- n'applique pas tous les profils PGR par défaut ;
- n'utilise pas l'ordre de composition comme priorité normative implicite ;
- ne crée pas de skeleton composite sans interaction réelle à posséder ;
- utilise une validation proportionnée au contenu réellement matérialisé.
La collection docs/skeletons/ reste vide de specification concrète dans alpha.2 hormis son index. Sa création n'est pas un placeholder : l'index documente le contrat de collection réellement activé par le nouveau owner normatif.
Validation opérateur
Après application sur le commit bf306da, depuis la racine du dépôt :
test "$(cat VERSION)" = '0.0.4-alpha.2'
test -f history/0.0.4/alpha.1.md
test -f deltas/0.0.4/alpha.2.md
test -f docs/rules/220-SKELETONS.md
test -f docs/skeletons/000-README.md
test ! -e history/0.0.4/alpha.2.md
test ! -e docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md
test ! -e docs/skeletons/002-RUST_CARGO_WORKSPACE.md
grep -Fx '<!-- version: 8 -->' README.md
grep -Fx '<!-- version: 10 -->' RULES.md
grep -Fx '<!-- version: 6 -->' docs/000-README.md
grep -Fx '<!-- version: 3 -->' docs/architecture/002-GOVERNANCE_ARCHITECTURE.md
grep -Fx '<!-- version: 3 -->' docs/architecture/003-RULE_PROFILE_MODEL.md
grep -Fx '<!-- version: 11 -->' docs/rules/000-README.md
grep -Fx '<!-- version: 1 -->' docs/rules/220-SKELETONS.md
grep -Fx '<!-- version: 1 -->' docs/skeletons/000-README.md
grep -F 'docs/rules/220-SKELETONS.md' RULES.md
grep -F '220-SKELETONS.md' docs/rules/000-README.md
grep -F 'skeletons/' docs/000-README.md
grep -F '220-SKELETONS.md' docs/architecture/002-GOVERNANCE_ARCHITECTURE.md
grep -F '220-SKELETONS.md' docs/architecture/003-RULE_PROFILE_MODEL.md
python3 -B -m unittest discover -s tests -v
python3 -B scripts/audit_markdown_headers.py \
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
python3 -B scripts/audit_markdown_tables.py \
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
python3 -B scripts/audit_markdown_links.py \
README.md RULES.md ROADMAP.md CHANGELOG.md docs deltas history prompts
python3 -B - <<'PY'
from pathlib import Path
import re
expected_counts = {'0.0.1': 12, '0.0.2': 12, '0.0.3': 10, '0.0.4': 1}
for release, expected in expected_counts.items():
histories = {path.name for path in Path('history', release).glob('*.md')}
if release == '0.0.4':
assert histories == {'alpha.1.md'}, histories
continue
deltas = {path.name for path in Path('deltas', release).glob('*.md')}
assert len(deltas) == expected, (release, len(deltas))
assert deltas == histories, (release, sorted(deltas ^ histories))
text = Path('history/0.0.4/alpha.1.md').read_text(encoding='utf-8')
assert re.search(r'## Statut\s+PASS\s', text)
assert sorted(path.name for path in Path('docs/skeletons').glob('*.md')) == ['000-README.md']
rule = Path('docs/rules/220-SKELETONS.md').read_text(encoding='utf-8')
for phrase in (
'## Applicabilité',
'## Contenu minimal d\'une specification',
'## Sélection des règles et profils',
'## Templates et artefacts techniques',
'## Décisions propres au projet',
'## Composition de plusieurs skeletons',
'## Overrides et exceptions',
'## Validation de l\'instanciation',
):
assert phrase in rule, phrase
print('Skeleton contract audit: clean (alpha.1 PASS baseline, alpha.2 contract/index only)')
PY
git diff --check
git add VERSION README.md RULES.md docs/000-README.md \
docs/architecture/002-GOVERNANCE_ARCHITECTURE.md \
docs/architecture/003-RULE_PROFILE_MODEL.md \
docs/rules/000-README.md docs/rules/220-SKELETONS.md \
docs/skeletons/000-README.md deltas/0.0.4/alpha.2.md
git diff --cached --check
git status --short
Le scope indexé attendu avant ajout du history est :
M README.md
M RULES.md
M VERSION
A deltas/0.0.4/alpha.2.md
M docs/000-README.md
M docs/architecture/002-GOVERNANCE_ARCHITECTURE.md
M docs/architecture/003-RULE_PROFILE_MODEL.md
M docs/rules/000-README.md
A docs/rules/220-SKELETONS.md
A docs/skeletons/000-README.md
La revue opérateur doit également confirmer que 220-SKELETONS.md reste transversal, ne duplique pas les règles de profils ou de validation et ne matérialise aucun choix technologique futur par anticipation.
Transition
PASS
Rédiger et livrer history/0.0.4/alpha.2.md avec les résultats réellement observés ; l'appliquer puis committer la tranche. La tranche suivante est 0.0.4-alpha.3, consacrée à la première skeleton specification de fondation d'un projet gouverné.
Le history alpha.2 et le delta alpha.3 MAY être livrés dans la même réponse après la gate PASS, tout en restant deux archives séparées. Le delta alpha.3 MUST NOT être appliqué avant le commit complet de alpha.2.
FAIL
Consigner le résultat réel dans le history de alpha.2, puis corriger le contrat dans 0.0.4-alpha.2.fix.1 ou produire un REPLAN motivé. Aucun skeleton concret de alpha.3 ne doit être absorbé silencieusement dans un fix.