0.0.4-beta.1.fix.1

This commit is contained in:
2026-09-24 17:38:05 +02:00
parent fdaaa357d4
commit 3f8fa6b34e
3 changed files with 286 additions and 1 deletions

View File

@@ -1 +1 @@
0.0.4-beta.1
0.0.4-beta.1.fix.1

View File

@@ -0,0 +1,200 @@
<!-- file: deltas/0.0.4/beta.1.fix.1.md -->
<!-- version: 1 -->
# 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.

View File

@@ -0,0 +1,85 @@
<!-- file: history/0.0.4/beta.1.fix.1.md -->
<!-- version: 1 -->
# 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.