0.1.5-alpha.2
This commit is contained in:
196
deltas/0.1.5/alpha.2.md
Normal file
196
deltas/0.1.5/alpha.2.md
Normal 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.
|
||||
Reference in New Issue
Block a user