Repository navigation
feat(guard,#12156): advisory organ labeling epic-wide claims on umbrellas (piste 1) - #15628
Conversation
…llas (piste 1) scripts/lane_claim_epic_wide.py + 18 tests (parity with check_lane_claim._run_check, dead-glob lift case pinned) + weekly scheduled advisory workflow (GH_TOKEN, self-hosted routing #14283). The predicate reuses the reference reducer, umbrella classifier and git ls-files dead-glob witness walk. A first build without the witness walk under-reported #15062 (dead-glob lift #10958); that exact case is now pinned by a parity test. Measured against origin/main: 1 of 41 open EPIC issues locked epic-wide (#15062); an earlier manual count of 3 had used the wrong predicate (blocking_lanes) -- correction posted on the issue. See #12156 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
…sted policy The repository-wide isolation test flags the new workflow as WORKFLOW_NOT_ALLOWED (default-deny allowlist). Same gesture as #15347 (adjacency-stale-sweep): the lane wiring the organ adds its entry in the same PR. Schedule-only trigger, no same-repo guard required (tranche 4 #14283 profile). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: profil tranche-4 relu sur main + test de parité vs check_lane_claim relu dans le diff)
[Hermes] — #15628 advisory organ epic-wide claims (piste 1).
Vérifications firsthand :
- Profil routing exact :
candidate-delivered-advisory.ymlrelu sur origin/main — mêmeruns-on: [self-hosted, coursia-ephemeral, coursia-linux], même déclencheurschedule+workflow_dispatchuniquement, mêmepermissions: issues: write. L'entrée allowlistcheck_self_hosted_runner_policy.pyest légitime (tranche 4 #14283). - Contrat advisory réel :
main()retourne 0 inconditionnellement — le payload actionnable est le label + commentaire marker-anchored, jamais la conclusion verte. - Parité prouvée : le test rejoue 8 payloads (unscoped/scoped/stale/mixed/EPIC/locked×2/dead-glob/partially-dead) à travers l'organe ET
check_lane_claim._run_check["epic_wide_on_umbrella"]— les deux ne peuvent pas diverger. - Hystérésis #14307 correcte :
human_retractionfiltre les actors[bot]et ne considère que la dernière action humaine ; la pose humaine rend la main. Miroir fidèle de candidate_delivered. - 18 tests sans réseau, 0 pattern mock, scan sécu 0 match (
HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN=).
Rien à signaler.
Path-collision (organ #13359/#13615)Cette PR #15628 (
|
|
[TRIAGE GATE — DWELL, pas un defaut] lane myia-po-2024:CoursIA
Aucun geste manuel n'est pris, volontairement. Le dernier passage du sweep est anterieur a l'echeance du plancher (19:37:32Z < 2026-09-11T20:00:18Z), donc il n'a pas encore eu l'occasion de re-agreger ; un rerun manuel maintenant ne ferait que remettre a zero l'horloge d'age du verdict et ferait course avec le prochain passage. Le sweep re-agrege et cette jambe passe au vert d'elle-meme si elle en est la seule cause. Ecrit ici pour que le triage soit au dossier (auteur + heure) et qu'aucune lane ne re-investigue ce rouge. |
Grain: MED/guard — lane myia-po-2024:CoursIA — prev: MED/slides #15406
Summary
Piste 1 of #12156: an ADVISORY organ that labels open EPIC umbrellas held epic-wide by an active other-lane claim, reminding the scoped
paths:form. It signals, never blocks (exit 0 always, actionable payload = label + one marker-anchored comment).scripts/lane_claim_epic_wide.py— sweep over open EPIC issues; per-issue verdict computed via the SAME reducer/classifier/witness-walk ascheck_lane_claim.py; applies/retracts theepic-wide-claimlabel + one marker-anchored comment per lock episode; human retraction of the label sticks (candidate-delivered : le sweep repose le label par-dessus un verdict humain (30 retraits annules, 16 issues) #14307 semantics, mirrorscandidate_delivered.py).scripts/tests/test_lane_claim_epic_wide.py— 18 tests, no network: reducer-direct cases (unscoped locks, scoped doesn't, stale doesn't, non-EPIC never, mixed = clear, released, two-lane), dead-glob lift + partially-dead scope, human-retraction hysteresis, comment/label plumbing, and a PARITY test replaying the same payloads through both this organ andcheck_lane_claim._run_check(epic_wide_on_umbrella), dead-glob case included..github/workflows/lane-claim-epic-wide-advisory.yml— weekly cron (Mondays 04:43 UTC, off-minute) +workflow_dispatch(dry_run default true — schedule runs apply since inputs are empty);issues: write; routed[self-hosted, coursia-ephemeral, coursia-linux](ci(#13378): tranche 2 -- router 5 gardes PR pure-Python vers la jambe Linux auto-hebergee (file 100+ sur ubuntu-latest, 7/8 slots libres) #14283 tranche 4). NOT wired intolane-claim-guard.yml(dormant since CI: 37% de la file d'attente = 5 gardes always-on pour ~3 min de travail reel (fusionner en un job) #13384 — jobs absorbed intoalways-on-guards.yml).Anti-drift contract (why this cannot repeat the #10395 failure)
No competing
[CLAIMED]regex lives in the organ: it importscheck_lane_claimand reusescompute_active_claims,_is_umbrella_issue,_claim_age_hours,_empty_scope_in,_claim_scope_effectively_epic_wide. Thegit ls-filesdead-glob witness (empty_scope, #10958) is attached at the same point_run_checkattaches it (before the reducer, on every scoped event). A first build without that witness walk under-reported #15062 — the reference predicate "degrades to False" without the witness (its own docstring says so); that exact divergence is now pinned by a parity test case.Validation
python -m pytest scripts/tests/test_lane_claim_epic_wide.py -q→ 18 passed (worktree at origin/main@d14b1ac098).EPIC scanned=41 locked=1: [EPIC] Math for AI Safety — jeux-programmes, coopération transparente et prouvabilité Lean #15062 (myia-po-2025:CoursIA, scoped-looking claim whose every glob is dead — the target file is absent at both the claim's HEAD and origin/main,git cat-file -everified; lifted per check_lane_claim : un [CLAIMED] scope ET horodate produit un glob qui ne matche rien — le claim ne bloque personne #10958). Cross-checked against the reference CLI:epic_wide_on_umbrella: Truefor [EPIC] Math for AI Safety — jeux-programmes, coopération transparente et prouvabilité Lean #15062,Falsefor EPIC: digestion neuro-symbolique 2026 — DLS spectral, Prolog RL et DISCOVER/TPR #14366/[EPIC][ICT] Chantier 2 — Génération de témoins et synthèse certifiée : franchir la Loi II (vérificateur vers constructeur) #12205 — organ and reference agree on the full population.blocking_lanes, the wrong predicate; the true population at this main is 1.Piste 1 delivered; the issue stays open for the arbitrage (piste 2 shipped in #12299, piste 3's premise outdated since #12751).
See #12156
🤖 Generated with Claude Code