0.1.5-alpha.2

This commit is contained in:
2026-10-01 09:53:53 +02:00
parent 32433caccf
commit e94b78610d
15 changed files with 406 additions and 65 deletions

196
deltas/0.1.5/alpha.2.md Normal file
View File

@@ -0,0 +1,196 @@
<!-- file: deltas/0.1.5/alpha.2.md -->
<!-- version: 1 -->
# Delta 0.1.5-alpha.2 — sémantique normative et conséquences de gate/adoption
## Objet
Stabiliser la force normative de `MUST / SHOULD / MAY` après le cadrage `alpha.1` et la récupération de preuve `alpha.1.fix.1`, puis corriger uniquement les renforcements accidentels démontrés par l'inventaire.
La tranche ne convertit pas mécaniquement les `242` occurrences de `SHOULD / SHOULD NOT`. Elle fixe le contrat transversal, aligne adoption et validation, puis corrige les quelques owners/skeletons/templates où une recommandation était implicitement transformée en obligation de justification ou en `OVERRIDE`.
## Précondition
Le history `history/0.1.5/alpha.1.fix.1.md` doit être présent avec statut `PASS` avant application de ce delta.
La séquence d'ouverture reste conservée telle qu'observée :
```text
alpha.1 PARTIAL
alpha.1.fix.1 PASS
```
Le `PARTIAL` n'est pas réécrit : le fix a seulement acquis les preuves manquantes et autorise maintenant la progression vers la sémantique normative.
## Contrat normatif stabilisé
`RULES.md` devient l'owner primaire de la distinction :
```text
MUST / MUST NOT obligation ou interdiction normative
SHOULD / SHOULD NOT forte recommandation non obligatoire
MAY possibilité neutre
```
Un écart à un `SHOULD / SHOULD NOT` PGR :
- ne constitue pas à lui seul une non-conformité ;
- ne fait pas échouer à lui seul une gate ;
- n'exige pas automatiquement un `OVERRIDE` ;
- MAY être documenté lorsque la raison apporte une valeur durable de maintenance, architecture ou reprise.
Une contradiction avec un `MUST / MUST NOT` réellement applicable reste distincte et continue d'utiliser l'exception ou l'override autorisé par le scope concerné.
## Alignement adoption et validation
`docs/rules/230-ADOPTION.md` passe en révision `2` : la classification `ADOPT / KEEP-LOCAL / OVERRIDE / DEFER` ne renforce plus implicitement un `SHOULD`. Un simple choix différent d'une recommandation ne devient pas un `OVERRIDE` obligatoire.
`docs/rules/400-VALIDATION.md` passe en révision `2` : une gate doit distinguer obligation et recommandation. Un `SHOULD` non suivi peut produire une observation, un diagnostic ou un point de revue, mais pas un `FAIL` par sa seule force PGR. Un projet peut rendre localement un choix obligatoire uniquement en matérialisant explicitement ce contrat local.
## Réconciliation ciblée des effets `SHOULD`
Les owners et artefacts suivants sont corrigés parce que `alpha.1` a démontré un renforcement concret :
- `docs/rules/500-LANGUAGES.md` révision `2` : un override est requis pour une contradiction réelle avec un `MUST / MUST NOT`, pas pour un simple écart à un `SHOULD` ;
- `docs/rules/530-TYPESCRIPT.md` révision `4` : choisir JavaScript malgré la recommandation TypeScript ne crée ni non-conformité, ni override, ni justification obligatoire ;
- `docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md` révision `4` : la politique de lockfile reste une recommandation lorsqu'elle est marquée `SHOULD`, et la référence vivante Games est corrigée de `0.1.5` vers `0.1.6` ;
- `docs/rules/700-FRAMEWORKS.md` révision `3` : la composition conserve la force normative propre des règles héritées au lieu de traiter toute divergence comme override ;
- `docs/skeletons/003-WEB_FRONTEND.md` révision `2` : un choix JavaScript n'impose plus de justification automatique ;
- `docs/templates/008-WEB_TYPESCRIPT_PACKAGE.md` révision `3` : une politique de lockfile différente n'exige plus automatiquement `OVERRIDE` + justification.
Les `MUST` réellement applicables de ces documents restent inchangés dans leur intention.
## Cohérence documentaire
- `README.md` présente `0.1.5-alpha.2` comme la tranche active sans déclarer la stable `0.1.4` remplacée ;
- `docs/000-README.md` marque les owners de sémantique comme réconciliés en `alpha.2` ;
- `docs/plans/011-V0_1_5_NORMATIVE_AUTONOMY_PLAN.md` passe en révision `2`, conserve les constats `alpha.1` comme observations historiques et enregistre la récupération `alpha.1.fix.1` ainsi que la mise en œuvre `alpha.2`.
`ROADMAP.md` et `CHANGELOG.md` restent inchangés. Les histories `0.1.4`, les adoptions Games/KSP et les futurs audits Rust/Clippy restent hors scope.
## Gate opérateur
Appliquer le delta après commit/push de `alpha.1.fix.1`, puis exécuter depuis la racine du dépôt :
```bash
cat VERSION
test -f history/0.1.5/alpha.1.md
test -f history/0.1.5/alpha.1.fix.1.md
test -f deltas/0.1.5/alpha.2.md
test ! -e history/0.1.5/alpha.2.md
grep -Fx '0.1.5-alpha.2' VERSION
grep -A2 '^## Statut$' history/0.1.5/alpha.1.md | grep -Fx 'PARTIAL'
grep -A2 '^## Statut$' history/0.1.5/alpha.1.fix.1.md | grep -Fx 'PASS'
grep -Fx '<!-- version: 15 -->' RULES.md
grep -F 'forte recommandation non obligatoire' RULES.md
grep -F "n'exige pas automatiquement un \`OVERRIDE\`" RULES.md
grep -F "ne fait pas échouer à lui seul une gate" RULES.md
grep -Fx '<!-- version: 2 -->' docs/rules/230-ADOPTION.md
grep -F "ne crée pas à lui seul un \`OVERRIDE\` obligatoire" docs/rules/230-ADOPTION.md
grep -F 'MUST NOT exiger un override uniquement parce que la recommandation' docs/rules/230-ADOPTION.md
grep -Fx '<!-- version: 2 -->' docs/rules/400-VALIDATION.md
grep -F 'MUST NOT faire passer une tranche en `FAIL`' docs/rules/400-VALIDATION.md
grep -F "la gate évalue alors ce contrat local, pas le \`SHOULD\` PGR d'origine" docs/rules/400-VALIDATION.md
grep -Fx '<!-- version: 2 -->' docs/rules/500-LANGUAGES.md
grep -F "Un choix différent d'un \`SHOULD / SHOULD NOT\` général ne nécessite pas, à lui seul, un override" docs/rules/500-LANGUAGES.md
grep -Fx '<!-- version: 4 -->' docs/rules/530-TYPESCRIPT.md
grep -F "n'exige pas automatiquement un \`OVERRIDE\` et ne crée pas une obligation de justification" docs/rules/530-TYPESCRIPT.md
! grep -F 'sauf incompatibilité documentée' docs/rules/530-TYPESCRIPT.md
grep -Fx '<!-- version: 4 -->' docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md
grep -F "Lors de l'adoption \`0.1.6\`" docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md
! grep -F "Lors de l'adoption \`0.1.5\`" docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md
grep -F "ne requiert pas à lui seul un \`OVERRIDE\`" docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md
grep -Fx '<!-- version: 3 -->' docs/rules/700-FRAMEWORKS.md
grep -F "MAY choisir différemment d'un \`SHOULD / SHOULD NOT\`" docs/rules/700-FRAMEWORKS.md
grep -Fx '<!-- version: 2 -->' docs/skeletons/003-WEB_FRONTEND.md
grep -F "sans transformer un choix JavaScript en obligation de justification ou en \`OVERRIDE\`" docs/skeletons/003-WEB_FRONTEND.md
grep -Fx '<!-- version: 3 -->' docs/templates/008-WEB_TYPESCRIPT_PACKAGE.md
grep -F "n'exige pas à lui seul un \`OVERRIDE\` ni une justification" docs/templates/008-WEB_TYPESCRIPT_PACKAGE.md
grep -Fx '<!-- version: 2 -->' docs/plans/011-V0_1_5_NORMATIVE_AUTONOMY_PLAN.md
grep -F 'un écart à cette recommandation ne crée ni non-conformité, ni `FAIL` de gate, ni `OVERRIDE` automatique' docs/plans/011-V0_1_5_NORMATIVE_AUTONOMY_PLAN.md
grep -F -- '- `( ) 0.1.6`' ROADMAP.md
grep -F -- '- `( ) 0.1.7`' ROADMAP.md
grep -F -- '- `( ) 0.1.8`' ROADMAP.md
! grep -F -- '- `( ) 0.1.9`' ROADMAP.md
python3 -B -c "from pathlib import Path; expected={'0.0.1':12,'0.0.2':12,'0.0.3':10,'0.0.4':9,'0.0.5':19,'0.1.0':10,'0.1.1':11,'0.1.2':7,'0.1.3':6,'0.1.4':7}; assert all({p.name for p in Path('deltas',r).glob('*.md')} == {p.name for p in Path('history',r).glob('*.md')} and len(list(Path('deltas',r).glob('*.md'))) == n for r,n in expected.items()); assert {p.name for p in Path('deltas/0.1.5').glob('*.md')} == {'alpha.1.md','alpha.1.fix.1.md','alpha.2.md'}; assert {p.name for p in Path('history/0.1.5').glob('*.md')} == {'alpha.1.md','alpha.1.fix.1.md'}; print('0.1.5 alpha.2 history boundary: clean (105 closed prior pairs, current alpha.2 pending)')"
git diff --exit-code -- history/0.1.4
python3 -B -m unittest discover -s tests -v
python3 -B scripts/audit_text_hygiene.py \
README.md RULES.md ROADMAP.md CHANGELOG.md VERSION \
docs deltas history prompts scripts tests templates .gitignore .settings
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
git diff --check
git status --short
git add VERSION README.md RULES.md docs/000-README.md \
docs/plans/011-V0_1_5_NORMATIVE_AUTONOMY_PLAN.md \
docs/rules/230-ADOPTION.md docs/rules/400-VALIDATION.md \
docs/rules/500-LANGUAGES.md docs/rules/530-TYPESCRIPT.md \
docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md docs/rules/700-FRAMEWORKS.md \
docs/skeletons/003-WEB_FRONTEND.md docs/templates/008-WEB_TYPESCRIPT_PACKAGE.md \
deltas/0.1.5/alpha.2.md
git diff --cached --check
git status --short
```
Le scope indexé attendu avant ajout du history est exactement :
```text
M README.md
M RULES.md
M VERSION
A deltas/0.1.5/alpha.2.md
M docs/000-README.md
M docs/plans/011-V0_1_5_NORMATIVE_AUTONOMY_PLAN.md
M docs/rules/230-ADOPTION.md
M docs/rules/400-VALIDATION.md
M docs/rules/500-LANGUAGES.md
M docs/rules/530-TYPESCRIPT.md
M docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.md
M docs/rules/700-FRAMEWORKS.md
M docs/skeletons/003-WEB_FRONTEND.md
M docs/templates/008-WEB_TYPESCRIPT_PACKAGE.md
```
## Revue opérateur attendue
La revue doit confirmer que la tranche clarifie la force de `SHOULD` sans affaiblir les obligations existantes ; qu'aucun `SHOULD` n'est transformé en `MUST` par une gate, un mapping d'adoption, un skeleton ou un template ; et que les corrections Web ciblées restent des conséquences de la sémantique générale plutôt qu'une réouverture de la fondation Web.
Elle doit également confirmer que l'autonomie post-adoption n'est pas encore implémentée par `alpha.2`, que la frontière PGR / Knowledge n'est pas encore modifiée, et que les scopes `0.1.6` à `0.1.8` restent réservés.
## Transition
### PASS
Produire `history/0.1.5/alpha.2.md` à partir des résultats réellement observés. Dans la même réponse, fournir les commandes commit/push de `0.1.5-alpha.2`, puis préparer séparément `0.1.5-alpha.3` consacré à l'autonomie locale et au réalignement PGR volontaire.
### FAIL / PARTIAL / BLOCKED
Enregistrer le résultat réel dans `history/0.1.5/alpha.2.md` puis ouvrir `alpha.2.fix.N` ou un REPLAN selon la cause. Aucun changement réservé à l'autonomie `alpha.3` ou à la frontière Knowledge `alpha.4` ne doit être absorbé silencieusement dans la correction.