Business-rule reference sections extracted from the entity specs. The content under each heading is preserved verbatim from the spec it came from — no editing, no reconciliation. For authoritative rule text, see business-rules.md.


Worksheet

Parenthood & ownership:

  • BR-005 — Every Item has exactly one Worksheet
  • BR-006 — Every Recipe has exactly one Worksheet
  • BR-007 — A Worksheet has exactly one parent — Item OR Recipe, not both (XOR)

Building block linking:

  • BR-030 — Recipe declares ≥1 Input Parameter and an Output Unit
  • BR-033 — Recipe’s total cost computed by evaluating its Worksheet with supplied Input Parameter values
  • BR-035 — Items can be duplicated; their Worksheets (and all children) are copied; snapshot rates carry forward

Item Status Derivation (v0.2, Item spec v0.3):

  • BR-019a — Item Status (Unpriced / Plugged / Priced) derived from Worksheet content (presence of cost-contributing children) + parent Item.plug_rate
  • BR-019bplug_rate and Worksheet cost are mutually exclusive (Item cannot have both a plug_rate set AND Worksheet cost-contributing children at the same time)

Snapshot semantics & Modifier Catalog:

  • BR-027 — Modifier Catalog is admin-defined within Resource Types (numeric attributes with math operations: quantity_multiplier, rate_adder, lump_sum_add, total_multiplier)
  • BR-028 — Modifier values inherit from Resource defaults at drag-in; estimators can override per-instance without affecting Resource definition
  • BR-029 — Modifier math applied in deterministic order (BR-029): quantity_multiplier → rate_adder → (qty × rate) → lump_sum_add → total_multiplier
  • BR-040 — Worksheet Resources store a snapshot of rate, Unit, flags, and modifier defaults (frozen at drag-in; estimator fields always editable)
  • BR-041 — Worksheet Recipes store a snapshot of Input Parameter values
  • BR-042 — Snapshots do NOT auto-sync when underlying Resource or Recipe changes
  • BR-043 — Snapshot divergence flagged by Anomaly Review; estimator explicitly pushes updates through

Rate-edit mechanics (v0.4):

  • BR-047 — Default per-instance rate override (implicit action; changes this Worksheet Resource’s snapshot_rate only)
  • BR-048 — Bulk “Apply to this Estimate” override (explicit action; updates all Worksheet Resources within current Estimate referencing same Resource)
  • BR-049 — “Fork to new Resource” creates Resource in Project-Specific Price Book (explicit action; current Worksheet Resource points to new Resource)
  • BR-049a — Rate change cascades Reviewed → Priced (any rate change via BR-047/048/049 triggers automatic cascade of affected Items back to Priced state)

Ordering & structure:

  • BR-044 — Worksheet child entities (Variable, Calculation, Content, Worksheet Resource, Worksheet Recipe) each carry their own ordering; Worksheet itself has no layout-order attribute
  • BR-046 — Production Rate links quantity and duration (Variable pattern, not a separate entity)

Program Task linking:

  • BR-102 — Linking a Program Task to an Item adds a duration Variable to the Item’s Worksheet

Content:

  • BR-130 — Four Content Blocks ship by default: Inclusions, Exclusions, Task Breakdown, Risks