Doctrine

ORA-2026-0134 - Selection SSOT Crossing Rule

heartwoodcamberbuildertrendselectionsprovenancesource-of-truthworld-model-fidelity

ORA-2026-0134 - Selection SSOT Crossing Rule

Rule

When Heartwood selection state and Buildertrend selection state disagree, provenance rank decides the next truth action; surface rank does not.

Buildertrend remains Zack's primary working surface. Heartwood remains the selection source map when it carries source-attested evidence. Neither fact lets a stale row, a clean mirror, or an automation-test rehearsal silently overwrite a stronger source event.

The short form:

BT is where the work is seen.
Heartwood is where selection evidence is made durable.
Provenance decides what may overwrite what.

Precedence Ladder

Resolve selection conflicts by the strongest captured source event, highest first:

1. Captured HCB authority: a dated, scope-bounded decision from Zack, Shayelyn, Anthony, Chad as HCB operator, a signed owner document, or another named authority of record. The authority must be captured in a durable source row, proof packet, screenshot, transcript, or feed ruling. Uncaptured memory of a conversation is search order, not canonical truth. 2. Source-attested Heartwood selection evidence: a source_evidence, proof packet, Gmail/PDF/vendor/owner document, or successor row that names the source, timestamp or document date, project identity, room or scope, and caveat/finality status. 3. Buildertrend authenticated human touch: a current BT value that was edited or accepted by Zack, Shayelyn, Anthony, or another authorized HCB actor. This is a new source event, not UI noise. Capture it back into Heartwood before reconciling or overwriting it. 4. Surface or mirror witness: current BT UI, Heartwood bt_selection, or Camber mirror rows that prove only what their surface currently stores or renders, without independent source attestation. 5. Adapter, dry-run, and automation-test output: rehearsal or diagnostic evidence. It can prove what the adapter observed, generated, or would push. It does not prove owner acceptance or live Buildertrend truth unless a stronger source event is attached. 6. Unproven value: any row or sentence with no source path, actor, time, proof packet, or caveat. It cannot win a conflict.

If two events occupy the same rung, use the narrower scope, fresher timestamp, and clearer actor identity. If that still does not resolve the conflict, mark the field unresolved instead of choosing the smoother story.

Recent evidence makes the BT-human-touch rung intentionally hard to claim. Most available Job 1 proof shows automation-test pages, screenshot readbacks, or surface counts. Those can be strong witnesses about what BT displayed at a time, but they are not proof that Zack or Shayelyn made or accepted the selection unless actor identity is captured.

Required Conflict States

Selection readers and writers must preserve the conflict altitude:

source_true
bt_surface_landed
bt_user_touch_captured
surface_drift_for_review
adapter_attested_observation
automation_mirror_rehearsed
unresolved_selection_conflict

These states answer different questions. source_true says the world model has a source-backed selection claim. bt_surface_landed says Zack can currently see the selection in Buildertrend. bt_user_touch_captured says a BT human edit has become a source event that the world model must reconcile. None of these should be collapsed into a generic "done."

Conflict Handling

When Heartwood and Buildertrend disagree:

  • If Heartwood has source-attested evidence and BT has only a stale or
  • unproven rendering, preserve Heartwood as canonical selection truth and file or run a BT correction path with explicit BT_IMPACT.

  • If BT has an authenticated human touch and Heartwood is older or packetless,
  • capture the BT touch as bt_user_touch_captured, then reconcile the world model. Do not silently overwrite the BT value from an old Heartwood row.

  • If BT has only a live UI screenshot, mirror row, or count, treat it as a
  • timestamped witness. It may close a bt_surface_landed proof when it matches source-backed expectations, but it does not win a selection-truth conflict by itself.

  • If both sides carry source events, compare actor, timestamp, scope, and
  • finality. If they still conflict, mark surface_drift_for_review or unresolved_selection_conflict.

  • If both sides lack provenance, the field is missing truth even if both
  • surfaces show a value.

  • If the only evidence is automation-test, dry-run, or adapter output, the
  • strongest allowed claim is about the rehearsal or observation itself.

The reconciliation output should preserve both claims with source references, the winning provenance, the losing or held provenance, and the next correction path. A clean count without provenance is a false floor.

Edge Cases

Operator tacit knowledge: A direct operator ruling can be a source event only when it is captured with actor, timestamp, project, scope, and caveat. Until then it guides search and triage; it does not harden into truth by aging.

Buildertrend primary surface pressure: BT being primary increases urgency to make drift legible to Zack. It does not lower the proof bar for overwriting source-attested selection truth.

Dry-run adapters: Adapter output may be treated as adapter_attested_observation for what it observed or generated at a named time. It does not become homeowner approval, HCB decision authority, or production BT landedness without a stronger source event.

Source-only Job 1 packets: Gmail/PDF/source packets can advance the selection denominator before DB/BT representation exists. They must not be reported as BT-landed until the BT surface proof exists.

Automation-test mirrors: Rehearsal mirrors are useful because they let the fleet test the crossing path safely. They never outrank production source, human touch, or source-attested Heartwood evidence.

Evidence Trail

  • ORA-2026-0125 established that Buildertrend is Zack's primary working
  • surface while explicitly rejecting Buildertrend source-of-truth absolutism.

  • FLT-0952 / FLT-0975 separated accepted fixture truth from BT surface
  • landedness: source/cross-provider acceptance did not itself create user-side BT proof.

  • CMB-394208 closed Moss without a duplicate automation-test push because
  • the current rehearsal surface already represented the source-backed rows; the BT surface state was treated as representation proof, not broader source truth.

  • CMB-394211 / CMB-394239 preserved the Hurley distinction between
  • automation-test population proof and the underlying source-backed selection packet.

  • CMB-394241 accepted a Moss populated screenshot baseline as surface proof
  • for the expected seven-row automation slice, not as a full source denominator.

  • CMB-394259 restored Hurley automation-test state to two canonical rows
  • after an extra card appeared, showing that Heartwood/source reconciliation can beat an observed BT UI artifact.

  • FLT-1398 added reachability proof for bt_selection source linkage and
  • showed that visible rows without source reachability remain unresolved rather than self-authorizing.

  • HWD-0983 kept BT manufacturer labels useful as row-local witnesses while
  • denying them canonical vendor-registry authority.

  • FLT-1438 / FLT-1456 required Job 1 denominator closeout by evidence
  • altitude, not by clean row counts, after multiple open projects had source packets with empty or partial Heartwood/BT mirrors.

Enforcement Hook

  • Boot surfaces: stamp this doctrine into provider boot surfaces through
  • doctrine-parity-check and lane boot files where they are not generated.

  • Heartwood work: BT-adjacent Heartwood reports should pair BT_IMPACT
  • with a provenance state from this doctrine when selection facts are touched.

  • Camber work: BT selection push, pull, and rehearsal packets should name
  • whether each row is source_true, bt_surface_landed, automation_mirror_rehearsed, or held for review.

  • Feed protocol: conflict-resolution tickets should include the winning
  • source class, the losing/held source class, and the next correction path.

Known Exceptions

Emergency operator instructions can stop an unsafe propagation path immediately before a full source packet exists. The stop is valid as control; the selection truth still needs capture before it becomes canonical.

Pure invoice fields follow the invoice SSOT contract instead of this selection rule. Buildertrend/QB invoice records can be invoice authority; selection, fixture, room, photo, todo, and daily-log claims still need their own source class.

Review Cadence

  • Next review: 2026-06-04
  • Review trigger: first production selection correction where a captured BT
  • human edit conflicts with a source-attested Heartwood row, or first adapter output that a downstream surface attempts to treat as final selection truth.