From 3f8fa6b34ea5b0030068b8fe4b5901c91fdd5d8c Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Thu, 24 Sep 2026 17:38:05 +0200 Subject: [PATCH] 0.0.4-beta.1.fix.1 --- VERSION | 2 +- deltas/0.0.4/beta.1.fix.1.md | 200 ++++++++++++++++++++++++++++++++++ history/0.0.4/beta.1.fix.1.md | 85 +++++++++++++++ 3 files changed, 286 insertions(+), 1 deletion(-) create mode 100644 deltas/0.0.4/beta.1.fix.1.md create mode 100644 history/0.0.4/beta.1.fix.1.md diff --git a/VERSION b/VERSION index 47875e8..4198680 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.4-beta.1 +0.0.4-beta.1.fix.1 diff --git a/deltas/0.0.4/beta.1.fix.1.md b/deltas/0.0.4/beta.1.fix.1.md new file mode 100644 index 0000000..1336be6 --- /dev/null +++ b/deltas/0.0.4/beta.1.fix.1.md @@ -0,0 +1,200 @@ + + + +# Delta 0.0.4-beta.1.fix.1 — correction de la gate de réconciliation + +## Baseline et version + +Baseline : tranche `0.0.4-beta.1` enregistrée `FAIL`, avec `history/0.0.4/beta.1.md` appliqué, committé et poussé. Le delta et le history `beta.1` restent des snapshots historiques et MUST NOT être réécrits. + +Version avant application : + +```text +0.0.4-beta.1 +``` + +Version après application : + +```text +0.0.4-beta.1.fix.1 +``` + +## Motif + +La gate `beta.1` a échoué avant l'exécution de son audit Python de réconciliation à cause d'une chaîne délimitée par apostrophes simples contenant l'apostrophe de `l'arborescence` : + +```text +SyntaxError: unterminated string literal +``` + +Les tests, audits Markdown et contrôles précédant cette commande ont réussi. Aucun défaut des règles, skeletons, templates ou documents vivants n'a été observé. + +Le présent fix corrige uniquement la gate en utilisant une chaîne Python correctement délimitée, puis rejoue les preuves nécessaires de la réconciliation. + +## Scope + +REPLACE : + +```text +VERSION +``` + +ADD : + +```text +deltas/0.0.4/beta.1.fix.1.md +``` + +DELETE : aucun. + +Aucun document vivant, règle, skeleton, template, script, test ou history antérieur n'est modifié. + +## Validation opérateur + +Après commit et push de `0.0.4-beta.1` avec son history `FAIL`, appliquer ce delta puis exécuter à la racine : + +```bash +test "$(cat VERSION)" = '0.0.4-beta.1.fix.1' +git cat-file -e HEAD:history/0.0.4/beta.1.md +test -f history/0.0.4/beta.1.md +test -f deltas/0.0.4/beta.1.md +test -f deltas/0.0.4/beta.1.fix.1.md +test ! -e history/0.0.4/beta.1.fix.1.md + +grep -A2 '^## Statut$' history/0.0.4/beta.1.md | grep -Fx 'FAIL' +grep -A2 '^## Statut$' history/0.0.4/alpha.4.fix.1.md | grep -Fx 'PASS' + +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 +import tomllib + +expected_histories = { + 'alpha.1.md': 'PASS', + 'alpha.2.md': 'PASS', + 'alpha.3.md': 'PASS', + 'alpha.4.md': 'FAIL', + 'alpha.4.fix.1.md': 'PASS', + 'beta.1.md': 'FAIL', +} +histories = {path.name for path in Path('history/0.0.4').glob('*.md')} +assert histories == set(expected_histories), histories +for name, status in expected_histories.items(): + text = Path('history/0.0.4', name).read_text(encoding='utf-8') + assert re.search(rf'## Statut\s+{status}\s', text), (name, status) + +deltas = {path.name for path in Path('deltas/0.0.4').glob('*.md')} +assert deltas == set(expected_histories) | {'beta.1.fix.1.md'}, deltas + +skeletons = sorted(path.name for path in Path('docs/skeletons').glob('*.md')) +assert skeletons == [ + '000-README.md', + '001-PROJECT_GOVERNANCE_FOUNDATION.md', + '002-RUST_CARGO_WORKSPACE.md', +], skeletons + +root_index = Path('README.md').read_text(encoding='utf-8') +docs_index = Path('docs/000-README.md').read_text(encoding='utf-8') +skel_index = Path('docs/skeletons/000-README.md').read_text(encoding='utf-8') +for name in ( + '001-PROJECT_GOVERNANCE_FOUNDATION.md', + '002-RUST_CARGO_WORKSPACE.md', +): + assert name in root_index, name + assert name in docs_index, name + assert name in skel_index, name + +foundation = Path('docs/skeletons/001-PROJECT_GOVERNANCE_FOUNDATION.md').read_text(encoding='utf-8') +for owner in ( + '200-GOVERNANCE.md', + '210-WORKFLOW.md', + '300-DOCUMENTATION.md', + '400-VALIDATION.md', +): + assert owner in foundation, owner + +rust = Path('docs/skeletons/002-RUST_CARGO_WORKSPACE.md').read_text(encoding='utf-8') +for owner in ('500-LANGUAGES.md', '510-RUST_CARGO.md'): + assert owner in rust, owner +for value in ('0.1.0', '2024', 'project-name', 'project-core-lib'): + assert value in rust, value +assert 'Ils ne deviennent jamais des valeurs universelles par simple copie.' in rust +assert 'Cargo.lock' in rust + +rule = Path('docs/rules/220-SKELETONS.md').read_text(encoding='utf-8') +assert 'Un skeleton sélectionne les owners normatifs applicables ; il ne redéfinit pas leur contenu.' in rule +assert 'MUST NOT devenir une valeur universelle par simple copie' in rule + +validation = Path('docs/validation/001-VALIDATION_MATRIX.md').read_text(encoding='utf-8') +for audit_id in ('PGR-MD-HEADER-001', 'PGR-MD-TABLE-001', 'PGR-NAV-001'): + assert audit_id in validation, audit_id +assert "vérifie uniquement l'existence des cibles de liens Markdown locaux inline" in validation + +rust_audits = Path('docs/validation/002-RUST_STYLE_AUDITS.md').read_text(encoding='utf-8') +assert 'facultatif' in rust_audits.lower() +assert "Les audits ne modifient ni les fichiers inspectés ni l'arborescence de build." in rust_audits + +plan = Path('docs/plans/004-V0_0_4_SKELETONS_PLAN.md').read_text(encoding='utf-8') +for deferred in ( + 'Java / Maven / Gradle — différé', + 'Android — différé', + 'Web, JNI, Tauri et autres familles absentes — différés', +): + assert deferred in plan, deferred + +for path in ( + Path('templates/rust-cargo/rustfmt.toml'), + Path('templates/rust-cargo/clippy.toml'), + Path('templates/rust-cargo/.cargo/config.toml'), + Path('templates/rust-cargo/Cargo.toml'), + Path('templates/rust-cargo/crates/project-core-lib/Cargo.toml'), +): + with path.open('rb') as stream: + tomllib.load(stream) + +print('Skeleton beta reconciliation fix audit: clean (beta.1 FAIL recorded, 3 skeleton docs, 5 TOML parsed)') +PY + +git diff --check +git add VERSION deltas/0.0.4/beta.1.fix.1.md +git diff --cached --check +git status --short +``` + +La sortie Git attendue avant ajout du history du fix est exactement : + +```text +M VERSION +A deltas/0.0.4/beta.1.fix.1.md +``` + +## Revue opérateur complémentaire + +Confirmer que : + +- le `FAIL beta.1` reste visible et n'est pas réécrit ; +- le fix ne change aucune règle, aucun skeleton, aucun template et aucun audit ; +- `220` reste le propriétaire du contrat transversal et `001`/`002` restent des orchestrateurs/compositeurs de leurs owners ; +- les valeurs de templates restent adaptables et non universelles ; +- Java/Android/Web/JNI/Tauri restent différés sans placeholder anticipé. + +## Transition + +### PASS + +Créer et appliquer séparément `history/0.0.4/beta.1.fix.1.md`, committer et pousser le fix, puis préparer `0.0.4-rc.1`. + +Le history du fix et le delta `rc.1` MAY être livrés ensemble sous forme de deux archives séparées après observation de cette gate opérateur. + +### FAIL + +Enregistrer le diagnostic réel dans `history/0.0.4/beta.1.fix.1.md`, puis poursuivre par `beta.1.fix.2` limité à la réconciliation ou faire un REPLAN explicite si un défaut de contenu est réellement découvert. diff --git a/history/0.0.4/beta.1.fix.1.md b/history/0.0.4/beta.1.fix.1.md new file mode 100644 index 0000000..6b7ae82 --- /dev/null +++ b/history/0.0.4/beta.1.fix.1.md @@ -0,0 +1,85 @@ + + + +# History 0.0.4-beta.1.fix.1 — correction de la gate de réconciliation + +## Statut + +PASS + +La gate opérateur de `0.0.4-beta.1.fix.1` exécutée le `2026-09-24` confirme que l'échec de `beta.1` provenait uniquement de la syntaxe de sa gate et que la réconciliation interne prévue est propre après correction. + +Le history `beta.1` reste enregistré `FAIL` et n'est pas réécrit rétroactivement. + +## Baseline et version + +La tranche précédente `0.0.4-beta.1` a été committée et poussée sous le commit observé : + +```text +fdaaa35 +``` + +Ce commit contient `history/0.0.4/beta.1.md` avec statut `FAIL`. Le history de `alpha.4.fix.1` reste présent avec statut `PASS`. + +La version contrôlée après application du fix est : + +```text +0.0.4-beta.1.fix.1 +``` + +Le delta `deltas/0.0.4/beta.1.fix.1.md` est présent et `history/0.0.4/beta.1.fix.1.md` était absent pendant la gate. + +## Validation opérateur observée + +La suite Python a exécuté `15` tests, tous réussis : + +```text +Ran 15 tests in 0.238s + +OK +``` + +Les trois audits Markdown ont réussi : + +```text +Markdown header audit: clean (117 file(s)) +Markdown table audit: clean (3 table(s), 117 file(s)) +Markdown link audit: clean (113 local link(s), 117 file(s)) +``` + +L'audit Python corrigé de réconciliation s'est exécuté jusqu'à son terme et a affiché : + +```text +Skeleton beta reconciliation fix audit: clean (beta.1 FAIL recorded, 3 skeleton docs, 5 TOML parsed) +``` + +Il confirme notamment : + +- la chaîne historique `alpha.1 = PASS`, `alpha.2 = PASS`, `alpha.3 = PASS`, `alpha.4 = FAIL`, `alpha.4.fix.1 = PASS`, `beta.1 = FAIL` ; +- la présence exclusive des trois documents de la collection skeletons : index, fondation gouvernée et spécialisation Rust/Cargo ; +- les owners généraux `200/210/300/400` de la fondation et `500/510` de la spécialisation Rust/Cargo ; +- le caractère adaptable et non universel des valeurs `0.1.0`, `2024`, `project-name` et `project-core-lib` ; +- les limites documentées des audits Markdown et Rust ; +- le maintien du différé Java/Maven/Gradle, Android, Web, JNI et Tauri ; +- le parsing réussi des cinq fichiers TOML Rust/Cargo. + +`git diff --check` et `git diff --cached --check` n'ont produit aucun diagnostic. Le scope Git observé avant ce history est exactement : + +```text +M VERSION +A deltas/0.0.4/beta.1.fix.1.md +``` + +La transcription du terminal intercale des fragments de heredoc avec les sorties des tests et audits ; les résultats finaux et le statut Git restent néanmoins explicites et aucun échec n'est présent dans cette gate corrigée. + +## Revue de cohérence + +Aucune correction de contenu PGR n'est requise par ce fix. Les règles, skeletons, templates, scripts, tests et documents vivants restent inchangés par rapport à `beta.1`. + +La réconciliation confirme que `220-SKELETONS.md` possède le contrat transversal tandis que les skeletons `001` et `002` composent les owners existants sans les redéfinir. Les domaines différés restent absents sans placeholder anticipé. + +## Transition + +`0.0.4-beta.1.fix.1` est enregistré `PASS`. + +Appliquer ce history, committer et pousser la tranche avant d'appliquer `0.0.4-rc.1`. Le commit futur de ce fix n'est pas attesté par la transcription fournie.