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