Skip to content

rules(C.7,#13410): ancrage code[N] au HEAD — PR fille extraite de #14207 (attente ratification user) - #14397

Merged
jsboige merged 1 commit into
mainfrom
rules/c7-enrich-anchor
Sep 3, 2026
Merged

jsboige merged 1 commit into
mainfrom
rules/c7-enrich-anchor

Conversation

@jsboige

@jsboige jsboige commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/rules -- lane myia-po-2023:CoursIA -- prev: LIGHT/refactor #14260

Summary

PR fille demandee par le coordinateur (merge-gate DM 2026-09-02T23:53Z) : la section C.7 (ancrage code[N] au HEAD) est extraite de #14207 pour ratification user separee — tout ajout a .claude/rules/ passe par une PR dediee + sign-off user (CLAUDE.md section A), le coordinateur ne peut pas donner ce sign-off en mergeant.

Contenu : +11 lignes, byte-identique a la section extraite de #14207.

La convention C.7 en une ligne

Un pointeur code[N] ecrit dans le markdown designe la N-ieme cellule CODE (base 0) au HEAD de la branche, jamais le layout de main depuis lequel le generateur a travaille.

Les 4 incidents mesures qui la fondent

Incident Defaut mesure
#14111 / #14117 Deux PR utilisaient des sens opposes de code[N] (index de cellule CODE vs index absolu de cellule) — la convention n'existait pas, chacun reinventait
#14161 Ancres ecrites contre le layout absolu de MAIN : 5/8 pointeurs atterrissaient sur du markdown apres les insertions de la branche
#14166 Les deux espaces melés dans un meme notebook : 12 ancres sur 13 fausses au head

Clauses

  1. Convention unique : code[N] = N-ieme cellule CODE, base 0, au HEAD.
  2. Rebasage post-insertion : generer les ancres APRES toutes les insertions (insertions BAS->HAUT : recalculer systematiquement).
  3. Fidelite ancre-contenu (C.4 etendu) : une ancre qui cite un nombre/signature/entite doit verifier contre la sortie reelle de la cible au HEAD.
  4. Validation pre-commit : scan_enrich_quality.py <nb> --base <base.ipynb> — 0 finding HIGH.

Dependances

Statut

HOLD ratification user — ne pas merger sans sign-off explicite (CLAUDE.md section A). Le coordinateur porte la demande au user.

See #13410
See #14207

…14207

PR fille demandee par ai-01 (merge-gate 2026-09-02T23:53Z) : tout ajout
a .claude/rules/ passe par PR dediee + sign-off user (CLAUDE.md section A).
Contenu identique a la section extraite de #14207.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 2, 2026
Split demande par le coordinateur (merge-gate 2026-09-02T23:53Z) :
.rules/ exige une PR dediee + sign-off user. Le fichier retrouve
l'etat main ; la section vit desormais dans #14397.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@github-actions github-actions Bot added variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) labels Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2023:CoursIA a deja consomme son budget LIGHT du jour (#14223 (merge a 2026-09-02T18:25:30Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added the variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory) label Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-02) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] — #14397 PR fille C.7 : vérification de l'extraction et des dépendances.

  • Extraction byte-identique confirmée : la section C.7 au head b519692d (1774 chars) est strictement identique à celle qu'#14207 avait ajoutée en 6ca9584e. La mère l'a bien retirée depuis (commit 2fccc954 "retirer C.7 — extraite en PR fille") → aucun double-ajout, aucun conflit, quel que soit l'ordre de merge.
  • Dépendances clause 4 réelles : scripts/notebook_tools/scan_enrich_quality.py + son test + le workflow .github/workflows/enrich-quality-gate.yml existent bien sur la tête de la mère #14207 (2fccc954). La clause devient exécutable dès merge de la mère — le body est exact.
  • Numérotation cohérente : C.1–C.6 présents dans le fichier au head, C.7 suit ; le renvoi « C.4 étendu » pointe sur la section existante (Interprétation grounded, L79).
  • Scan sécurité : +11 lignes de markdown rules, zéro secret, zéro chemin machine.
  • Diff = exactement la section annoncée (11 ajouts, 0 suppression), rien d'autre.

Le HOLD ratification user est respecté — pas de verdict de merge de ma part. Contenu sain au plan factuel. (contrainte token : COMMENT only)

myia-ai-01 pushed a commit that referenced this pull request Sep 2, 2026
…ancre code[N] au HEAD (rule C.7) (#14207)

* feat(tooling,#13410): validateur enrich classes (a)-(h) + convention ancre code[N] au HEAD (C.7)

Etend le dispositif de validation de la vague enrich (aggregate NanoClaw
2026-09-01, roo-extensions #3374) : scan_cell_ordering.py couvrait la
POSITION des cellules, rien ne couvrait le CONTENU genere.

- scripts/notebook_tools/scan_enrich_quality.py : scanner read-only des
  classes systemiques -- (a) decimales non ancrees (LOW), (b) reecriture
  < 25 % de survie (HIGH) / < 50 % (MED), (c) perte d'accents >= 60 %
  (HIGH), (d) arithmetique inline fausse (HIGH), (e) href relatifs 404
  (HIGH), (f) ancres code[N] hors-head -- OOR code-index (HIGH) +
  absolue-sur-markdown/adjacence (MED), (g) entites fantomes dans les
  fences (HIGH, base64 exclu), (h) solution complete avant un exercice
  TODO (HIGH). Calibre sur les tetes reelles #14161 (11 HIGH), #14164
  (9), #14166 (11) ; familles SymbolicLearning/Part2-CSP/Part4 clean.
- enrich_quality_ci.py + .github/workflows/enrich-quality-gate.yml :
  gate per-PR regression (nouveaux HIGH seulement, pattern #3240).
- 28 tests (reproduction des classes + durcissement FP : accents
  regagnes, ancres code-index correctes, scaffolding de donnees,
  commentaires francais Lean, queues de sommes longues, base64 PNG).
- rule C.7 notebook-conventions.md + notebook-enricher.md + skill
  enrich-notebooks : convention unique code[N] = N-ieme cellule CODE
  0-based AU HEAD, rebasage post-insertion, validation pre-commit.

Refs: #13410 (19:36Z, 20:19Z), roo-extensions #3374, #14161, #14164, #14166.

Co-Authored-By: Claude-Code <noreply@anthropic.com>

* fix(ci,#13410): enrich-quality-gate -- invocation errexit-safe

Sous bash -e, out=$(cmd) avorte avant rc=$? : les branches rc=1/rc=2
etaient du code mort et le resume d'echec etait perdu. Pattern
out=$(...) && rc=0 || rc=$? (pinned par test_detector_gate_errexit_safety).

Co-Authored-By: Claude-Code <noreply@anthropic.com>

* chore(#13410): retirer C.7 de la branche -- extraite en PR fille #14397

Split demande par le coordinateur (merge-gate 2026-09-02T23:53Z) :
.rules/ exige une PR dediee + sign-off user. Le fichier retrouve
l'etat main ; la section vit desormais dans #14397.

Co-Authored-By: Claude-Code <noreply@anthropic.com>

---------

Co-authored-by: Claude-Code <noreply@anthropic.com>
@jsboige
jsboige merged commit 823b2cd into main Sep 3, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant