11 KiB
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 :
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 :
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.mdrévision2: un override est requis pour une contradiction réelle avec unMUST / MUST NOT, pas pour un simple écart à unSHOULD;docs/rules/530-TYPESCRIPT.mdrévision4: choisir JavaScript malgré la recommandation TypeScript ne crée ni non-conformité, ni override, ni justification obligatoire ;docs/rules/540-JAVASCRIPT_PACKAGE_ECOSYSTEM.mdrévision4: la politique de lockfile reste une recommandation lorsqu'elle est marquéeSHOULD, et la référence vivante Games est corrigée de0.1.5vers0.1.6;docs/rules/700-FRAMEWORKS.mdrévision3: 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.mdrévision2: un choix JavaScript n'impose plus de justification automatique ;docs/templates/008-WEB_TYPESCRIPT_PACKAGE.mdrévision3: une politique de lockfile différente n'exige plus automatiquementOVERRIDE+ justification.
Les MUST réellement applicables de ces documents restent inchangés dans leur intention.
Cohérence documentaire
README.mdprésente0.1.5-alpha.2comme la tranche active sans déclarer la stable0.1.4remplacée ;docs/000-README.mdmarque les owners de sémantique comme réconciliés enalpha.2;docs/plans/011-V0_1_5_NORMATIVE_AUTONOMY_PLAN.mdpasse en révision2, conserve les constatsalpha.1comme observations historiques et enregistre la récupérationalpha.1.fix.1ainsi que la mise en œuvrealpha.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 :
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 :
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.