feat(qg0): configurable QG-0 title limit via ORCH_QG0_TITLE_MAX (default 200)
Replace the hardcoded `len(name) > 80` cap in the QG-0 entry validation (_qg0_errors) with a configurable Settings.qg0_title_max (env ORCH_QG0_TITLE_MAX, default 200). The 80-char cap was a hygiene limit, not structural, so valid 81-200 char titles were rejected without a business reason. The limit is read dynamically per call and the error text interpolates the active value. Graceful degradation (AC-3, self-hosting safety): an empty/non-numeric env value no longer crashes the process on startup. A field_validator(mode="before") intercepts the raw env before int-parsing and falls back to 200 (never raises), suppressing pydantic ValidationError. Additive and backward-compatible (default 200 > old 80). Invariants unchanged: STAGE_TRANSITIONS, QG_CHECKS registry, DB schema, slug [:30], lower limits, soft-QG-0 warning path, API. Refs: ORCH-069 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -199,3 +199,10 @@ ORCH_POST_DEPLOY_FAIL_THRESHOLD=3
|
||||
ORCH_POST_DEPLOY_5XX_THRESHOLD=0.5
|
||||
ORCH_POST_DEPLOY_AUTO_ROLLBACK=false
|
||||
ORCH_POST_DEPLOY_BASE_URL=http://localhost:8500
|
||||
|
||||
# ── QG-0 entry validation (ORCH-069) ──────────────────────────────────────────
|
||||
# Upper title-length limit for the QG-0 entry gate (_qg0_errors). The old 80-char
|
||||
# cap was a hygiene limit, not structural (slug is cut to [:30] independently, the
|
||||
# DB title TEXT is unbounded). Default 200. An invalid/empty value gracefully
|
||||
# degrades to 200 (the process never crashes on startup).
|
||||
ORCH_QG0_TITLE_MAX=200
|
||||
|
||||
Reference in New Issue
Block a user