---
title: System gap audit — orchestrator + skills + standing-context
date: 2026-05-10
authored_by: claude-code-orchestrator (3 parallel subagents — workflow / standing-context / skill-coverage)
purpose: Consolidated gap analysis to drive Option C (build lfo-gap-analyse skill) + immediate methodology proposals.
status: factual report; proposals queued at `_Internal/lessons-learned/proposals-pending.md` for Rocky triage per CLAUDE.md §3.3.
---

# System gap audit — 2026-05-10

Three parallel subagents audited the orchestrator state. Consolidated findings below.

## Top 5 highest-leverage workflow gaps (rank: Rocky-touchpoint cost)

1. **Pre-IFC contingency uplift not codified.** Pre-IFC drawings (`Issued for Review`, `IFI`, 90% Design, 60% Concept) require labour cont uplift to 15% (vs IFC default 10%), with materials cont mirrored. Currently asked Rocky every pre-IFC bid (~70% of bids). **Proposal:** new `§13.4 design-maturity-contingency-uplift` rule.
2. **Materials-cont mirrors labour-cont** assumption was orchestrator-interpreted in session-d58cec3f, self-flagged for "sanity-check re-confirmation". Should be deterministic, not flagged. **Proposal:** sub-rule under §13.4 above.
3. **BoQ format default (Q-G4)** auto-decided at only 60% confidence "no Rocky preference stated" → always flag-eligible. Rocky's actual every-time pick = "both lump-sum + BoQ-response (defensive)". **Proposal:** lock standing-context §8 default = "both" at 85% confidence.
4. **HC-relationship + bid-type questions (re-bid vs separate package)** repeatedly fire as Phase-1 bid-specific flags. Lesson `lesson-2026-05-08-bid-lifecycle.md:53` explicitly lists this as calibration-to-do. **Proposal:** new `§13.5 HC-relationship-via-Airtable-history` rule.
5. **Phase-1 entry batched gate** asks 3 questions every bid-kickoff (operating mode, comparator-role, HC+programme). Operating mode should be persisted in `state.json.rocky_defaults`; comparator-role auto-detectable; HC+programme falls through to precedent-finder. **Proposal:** new `§13.7 operating-mode-rocky-default` + `§13.6 comparator-role-via-filename-pattern` rules + `state.json` schema bump.

## Missed gap-watch fires (need new G6/G7/G8 rules)

| New rule | Pattern | Mitigation |
|---|---|---|
| **G6 BCS-metadata in worker-readable** | Worker-readable file (per-job CLAUDE.md, 00-brief.md, exclusions skeleton, orch-to-pricer.md) contains comparator filename / author name / total / supersession marker / scope-split delta / schema label | Refuse-to-write block in `lfo-prompt-pricing` and `lfo-blind-driver` before any worker-readable file persistence |
| **G7 exclusion-default contradicts spec** | Standard-exclusion-library default (cure period, joint spec) contradicts a value in parsed BoQ-from-drawings or pavement-spec output (e.g. exclusions A7 says 14-day cure but spec §10.1.1 says 7-day) | Insert spec-overrides-default reminder in first-pass prompt |
| **G8 magnitude-variance-acceptance** | Phase 3 sealed total deviates from §7 magnitude estimate by >X% — currently triggers Rocky flag manually | Codify ±10% as auto-accept, >10% as Rocky flag, per new standing-context §15 |

## Standing-context §13 auto-decision rule proposals (10 candidates ranked frequency × $-impact)

Full evidence base (file:line citations) in `_Internal/lessons-learned/proposals-pending.md` under `## §13 rule proposals — 2026-05-10`. Summary:

| # | Rule name | Confidence | $-impact-if-wrong | Evidence n |
|---|---|---|---|---|
| §13.4 | TCE-supplies-everything-but-LFCS-trade | 95% | $50-200k | 4 (2602/2629/2630/Homestead) |
| §13.5 | Formwork-props-supply-default-by-HC-on-bridge-and-tall-wall | 85% | $5-15k | 4 (2602/2627-StClares/2628/2630) |
| §13.6 | LAFHA postcode-precedent extension (named towns) | 95%/90% | $40-50k | enhances §13.1 |
| §13.7 | Site-exposure-via-postcode-and-tide-line | 60-95% | $5-15k | 3 (2602/2627/2630) — promotes the §13.2 reservation |
| §13.8 | Adverse-weather-via-site-type-and-programme-length | 75-90% | $7-15k | 4 (2602/2628/2629/2630) — promotes §13.3 reservation |
| §13.9 | Hours-of-work default (Mon-Fri day shift) | 95% | $20-40k | 5+ (2602/2627×2/2628/2629/2630) |
| §13.10 | Saw-cut-within-24hr always in scope on pavement | 90% | $3-8k | 2 (2627-Airey/2628) |
| §13.11 | Chemical curing compounds (AS3799) ALWAYS excluded | 99% | $1-3k + warranty tail | already in standing-context §1.4 — codify as deterministic so orchestrator stops re-asking |
| §13.12 | Cure-period-via-spec-precedence (7d vs 14d) | 90% | $200-1500 | 4 (2602/2627/2629/2630) |
| §13.13 | Defensible-for-variations posture defaults whenever pre-IFC | 95% | $20-100k | 4 (2602/2627/2629/2630) |

Plus 7 deferred candidates needing more datapoints (Solutions Plus supply pattern, Vaughan/Mack permanent-civil pattern, reo-intensity productivity, working-at-heights penalty, WWTP induction premium, bid-format-by-HC, heritage/asbestos default).

## Skill coverage gaps (7 missing skills proposed, ranked by leverage)

1. **`lfo-precedent-import`** — read external precedent sources (Hus's vault, Drive shared folder, Rates Build Up xlsx), digest, mirror to vault. **Highest leverage** — corpus is currently empty so `lfo-precedent-finder` cannot fire. Today's manual ingestion was N hours; codified = 1 invocation per batch.
2. **`lfo-sanity-check-driver`** — Phase 4 orphan. Currently inlined in `lfo-bid-lifecycle`.
3. **`lfo-submission-gate`** — Phase 6 orphan.
4. **`lfo-bcs-rotate-and-sweep`** — Path-D recovery is recurring; encode the file-rotation + leak-sweep + whitelist-write pattern.
5. **`lfo-job-bootstrap`** — per-bid scaffolding (job folder + per-job CLAUDE.md + 00-brief.md). Currently inlined every bid.
6. **`lfo-rfi-extract`** — RFI capture/prioritisation/send-to-HC/response-tracking. Today free-form.
7. **`lfo-job-folder-diff`** — structural diff against external comparator. Today's manual diff work showed the gap.

## Workflow friction (parallelisation opportunities)

- **Phase 3.5 envelope build** documented as parallel with Phase 3-4 but actually runs sequentially. Should kick off concurrently with Phase 3 worker spawn.
- **Phase 1 + Phase 2 batched gates** — should merge into single Phase-1-exit AskUserQuestion ("auto-decided N intake + M std-exclusions; flagged K. Push through?") instead of two batches.
- **BCS pre-flight + Phase 1 priority-chain** could run in parallel.
- **Daemon polls 30s** — drop to 10s during phase-3-worker / phase-4-sanity (bursty activity).
- **Phase 7 lessons-write** fires post-bid-close. Move proposals-pending writes to mid-bid (append on detection) so concurrent next-bid in queue benefits.

## Skill description / overlap fixes

- **`lfo-bid-lifecycle` Phase 3 duplicates `lfo-prompt-pricing` 6 templates verbatim.** Refactor: bid-lifecycle Phase 3 = "invoke lfo-prompt-pricing with step={N}" calls, no template content.
- **`lfo-prompt-pricing` description outdated** — references "Rocky pastes" but autonomous-daemon mode bypasses this. Update description to cover both modes.
- **`lfo-handoff-watcher` write vs `lfo-prompt-pricing` output** — dual paths today. Recommend: prompt-pricing produces body; handoff-watcher wraps + writes. No template logic in handoff-watcher.
- **`lfo-gap-watch` description** — minimal, doesn't surface auto-trigger. Update.
- **`lfo-blind-driver` description** — add "REVEAL trigger keyword (case-insensitive)" so the search-time matcher catches Rocky's command word.
- **`lfo-prompt-pricing` inputs** — workflow step name list is illustrative not enumerated. Convert to enum.

## Source subagent transcripts

- Workflow auditor: task `a0fd70a14fd76b05b` — output at `C:/Users/mclou/AppData/Local/Temp/claude/.../tasks/a0fd70a14fd76b05b.output`
- Standing-context auditor: task `aa37f15157722ea52`
- Skill coverage reviewer: task `a268299631f4e387f`

Each subagent cited file:line evidence per claim. Full transcripts available if Rocky wants drill-down on any item.
