---
proposal_id: PR-2026-05-10-005
title: Add G6 / G7 / G8 to gaps-pattern-library.md (BCS-leak / spec-vs-default / magnitude-variance)
target_file: Codebase/lfcs-orchestrator/standards/gaps-pattern-library.md
authored_by: claude-code-orchestrator (lfo-gap-analyse workflow audit findings)
created: 2026-05-10
status: proposed-pending-Rocky-review
priority: HIGH (G6 prevents repeat of 2026-05-08 BCS breaches; G7 prevents over-pricing on cure period; G8 codifies variance acceptance)
---

# Proposed gap-watch rules G6 / G7 / G8

## G6 — BCS-metadata in worker-readable artefacts (BLOCK severity)

**Detect when:** any worker-readable file (per-job CLAUDE.md, 00-brief.md, exclusions skeleton, orch-to-pricer.md, handoff bus messages, state.json beyond opaque comparator_handle) contains:
- regex `comparator|Comparator|COMPARATOR`
- regex `(Liam|Hus).{0,30}(quote|estimate)` (author + word "quote/estimate")
- filename matches `*Comparator*`, `*_v-CW*`, `*-blind-compare-*`, `*supersession*`
- presence of `_internal_quarantined_for_session_id` references
- schema labels like `pre.IFC.posture.split`, `scope.split.delta`

**What goes wrong:** anchoring bias breaks BCS independence; sessions abort-on-breach. Two consecutive sessions on bid 2627 (d58cec3f + 09c7347d) aborted on this exact failure 2026-05-08.

**Mitigation:** refuse-to-write block in `lfo-prompt-pricing` and `lfo-blind-driver` skills BEFORE any worker-readable file persistence. Whitelist > blacklist for path control.

**Severity:** block (do NOT relay until Rocky resolves)

**Companion:** if G6 fires in retry mode, invoke `lfo-bcs-rotate-and-sweep` for Path-D recovery.

---

## G7 — exclusion-default contradicts drawing/spec (CORRECT severity)

**Detect when:** any standard-exclusion-library default value (cure period, joint spec, concrete grade, reo grade, formwork class) contradicts a value parsed from BoQ-from-drawings or pavement-spec output.

Example pattern (from session-80b1f893-2627 line 92): exclusions A7 says 14-day cure but spec §10.1.1 says 7-day.

**What goes wrong:** over- or under-pricing on a recurring exclusion line; carries forward to next bid if not caught.

**Mitigation:** insert "spec-overrides-default reminder" line in first-pass prompt before relay. If contradiction is material (>$5k pricing impact), surface to Rocky in the assumptions log under `## Mid-bid additions` section.

**Severity:** correct (append correction inline, relay)

---

## G8 — magnitude-variance-acceptance threshold (FLAG severity)

**Detect when:** Phase 3 sealed bottom-up total deviates from §7 magnitude estimate by >X% — currently triggers Rocky flag manually.

**Codification:** ±10% = auto-accept (not flagged); >±10% = Rocky flag at sanity-check entry.

**What goes wrong:** without the threshold, every variance (even 6%) gets flagged → noise; very large variances (e.g. 30%) might slip through if §7 magnitude was stale.

**Mitigation:** add standing-context §15 (NEW) defining the threshold; gap-watch enforces.

**Severity:** flag (informational; not blocking)

**Companion proposal:** PR-2026-05-10-006 adds the standing-context §15 magnitude-variance section.

---

## Apply

Append G6 / G7 / G8 rows to bottom of `gaps-pattern-library.md` per existing format. Each row gets:
- Rule ID
- Pattern detection predicate (boolean rule, NOT LLM judgment)
- Mitigation
- Severity routing per existing skill `lfo-gap-watch` SKILL.md §6

After Rocky-confirms, update `lfo-gap-watch` SKILL.md procedure step 3 to handle G6-G8 explicitly.

Touchpoint reduction:
- G6: prevents 2 BCS-breach restarts per bid where they fire (~10-20% of BCS-active bids)
- G7: prevents 1 over-pricing correction per bid where it fires
- G8: replaces noisy "every variance flagged" with threshold-based flagging
