---
purpose: Canonical template + discipline rules for the per-bid assumptions log. Referenced from CLAUDE.md §11 (summary) and `lfo-intake-gate/SKILL.md` (writer).
authored_by: claude-code-orchestrator
created: 2026-05-09
applies_to: every bid driven through the orchestrator
---

# Assumptions log — template + discipline

Every bid driven through the orchestrator produces ONE assumptions log: `_Internal/assumptions-log-{job-id}.md`. Append-only (per CLAUDE.md §3.6). The log is Rocky's batched-review surface for everything the orchestrator auto-decided plus everything it flagged.

## Template

```markdown
---
job_no: {job-id}
session_id: {orchestrator-session-uuid}
created: {YYYY-MM-DD}
agent: lfcs-orchestrator
purpose: Auto-decided + flagged assumptions for {job-id}. Append-only. Rocky reviews before submission.
---

# Assumptions Log — Job {job-id}

## Auto-decided (no Rocky input needed; confidence ≥60%)

| # | Question | Decision | Source | Confidence | Risk if wrong |
|---|----------|----------|--------|------------|---------------|
| 1 | LAFHA | OUT | §13.1 LAFHA-via-Botany-distance: Botany→Hornsby 50 min via Google Maps 2026-05-08 | 95% | $44K underprice if wrong (10 weeks × 4 crew × $110/day) |
| 2 | Site exposure | Coastal-air | Step 5 web research: postcode 2540 + drawings show slab above MHW; AS3600 cover requirements consistent with coastal-air not immersion | 80% | $5K saltwater consumables uplift if tidal |
| 3 | Labour rate | $95/hr blended | §1 standing-context default; no precedent override | 90% | $30K if rate should be $98 |
| 4 | Margin/cont. | labour ×1.265 / materials ×1.265 | §1 standing-context locked formula | 95% | n/a — locked rule |
| 5 | Adverse weather | Include 1 day/fortnight | Step 3 precedent: 2630 same site type | 85% | $7K if should exclude as variation |
| 6 | Q-1 scope | 4 standard items + 1 bid-specific (FRP arm option) | RFQ + drawing review | 90% | scope omission cost varies |

## Flagged for Rocky review (confidence ≥60% but material risk)

- **Row 5 — adverse weather.** Confidence 85% but $-impact ~$7K. 2630 was 12-week open deck; current bid is 10-week semi-enclosed. Pattern likely holds; Rocky to confirm before lock.
- **Row 7 — Q-G7 site exposure subcategory.** Step 5 web research returned coastal-air; drawings spec stainless 316 reo. G2-shadow gap-watch fired. Confidence dropped to 65%. Risk if reclassified tidal: +$15K materials uplift.

## Open questions (genuinely unknowable — needs Rocky)

- (none yet — populated when priority-chain step 6 returns confidence <60%)

## Web research log (priority chain step 5)

| Call # | Query | Tokens | Source URL(s) | Captured fact |
|---|---|---|---|---|
| 1 | "Botany NSW to Hornsby NSW one-way drive time Google Maps" | 1,200 | maps.google.com/dir/Botany,NSW/Hornsby,NSW | 50 min one-way off-peak; cited 2026-05-08 |
| 2 | "postcode 2540 coastal zone classification" | 800 | abs.gov.au/... | NSW South Coast, coastal but not within tidal flood zone |

Budget: max 10 calls per bid. Calls so far: 2/10.

## Override history (Rocky corrections)

| Row # | Original auto-decision | Rocky override | Reason | Logged to lessons? |
|---|---|---|---|---|
| (rows added when Rocky flips an auto-decision at the review gate) |

## Mid-bid additions

(populated when new questions arise after Phase 1 — e.g. "BoQ has an ADDED row for diamond saw cuts — is this in scope?". Use the same Auto-decided / Flagged / Open subsections. Re-surface to Rocky before sanity-check.)
```

## Discipline rules

- **Every priced take-off must come with the assumptions log.** No first-pass output is final until the log is populated with at least the 6 standing intake questions + any open bid-specific decisions.
- **Append-only.** Never edit prior rows. If an auto-decision turns out wrong mid-bid, append a new row with `corrected_from: row_N` reference.
- **Source citation is mandatory.** Each row names the priority-chain step that yielded the answer + a specific source (file path, URL with timestamp, methodology row ID, lesson file, or precedent job number).
- **Risk-if-wrong column.** Rough $-estimate or descriptive impact (e.g. "$5K materials uplift", "scope-out, no $-impact"). Helps Rocky triage which rows to actually verify.
- **Rocky-overrides become lessons.** Every Rocky override at the review gate gets a row in the override-history table AND a candidate lessons-learned write. If the override pattern repeats across 2+ bids, codify in `standards/standing-context.md` §13 as a new auto-decision rule.
- **Surfacing pattern.** Phase 1 exit: orchestrator runs `AskUserQuestion` once with summary text "Auto-decided N. Flagged M. Open Q. View log?" — single batched gate, not per-row.
- **Mid-bid additions.** New questions that arise after Phase 1 get appended to the same log under the `## Mid-bid additions` section with own auto-decided / flagged / open subsections. Re-surface to Rocky before sanity-check.
