{
  "_generated_by": "byan-sync-rules",
  "version": 1,
  "min_passes": 3,
  "last_verdict_must_be": "ok",
  "min_score": 95,
  "auto_keywords": [
    "prod",
    "production",
    "client",
    "contrat",
    "template officiel",
    "livrable",
    "deliverable",
    "mise en production",
    "release"
  ],
  "completion_claim_markers": [
    "done",
    "finished",
    "complete",
    "delivered",
    "ready",
    "shipped",
    "terminé",
    "fini",
    "livré",
    "prêt",
    "c'est bon",
    "voilà"
  ],
  "scope_guard": {
    "enforce_paths": true,
    "exempt_globs": [
      ".byan-strict/",
      "_byan-output/",
      ".git/"
    ]
  },
  "freshness_window_seconds": 600,
  "banners": {
    "context": "[STRICT MODE ACTIVE]\nYou are under BYAN Strict Mode. Before building:\n  1. Lock the scope (byan_strict_lock_scope) with testable acceptance criteria.\nWhile building:\n  2. Do not downgrade the scope. Surface any gap, do not cut silently.\nBefore delivering:\n  3. Run >= 3 self-verify passes (byan_strict_self_verify), re-reading the\n     original request each time. The last pass must report verdict \"ok\".\n  4. Call byan_strict_complete to earn the audit token.\nHard claims (security/performance/compliance) require LEVEL-1 sourcing (95%).\nA commit without a fresh, matching audit token is blocked by the pre-commit gate.\n",
    "stop_block": "Strict mode: the turn cannot end. The locked scope has not passed three self-verify passes with a final \"ok\" verdict. Run byan_strict_self_verify until the scope is satisfied, then byan_strict_complete.",
    "scope_deny": "Strict mode: this write targets a path outside the locked scope. Either it belongs to the scope (re-lock with the corrected paths) or it does not (do not write it)."
  }
}
