0.0.4-beta.1.fix.1
This commit is contained in:
200
deltas/0.0.4/beta.1.fix.1.md
Normal file
200
deltas/0.0.4/beta.1.fix.1.md
Normal 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.
|
||||
85
history/0.0.4/beta.1.fix.1.md
Normal file
85
history/0.0.4/beta.1.fix.1.md
Normal 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.
|
||||
Reference in New Issue
Block a user