Doctrine

ORA-2026-0136 - User-Opened Surface Required for Value Targets

fleet-opsvalue-targetuser-surfacebuildertrendhelp-or-hurtfeed

ORA-2026-0136 - User-Opened Surface Required for Value Targets

Rule

Every actionable VALUE_TARGET or FLEET_VALUE_TARGET post must name the surface a real user opens.

Required line:

USER_OPENED_SURFACE: <app/page/URL/email the named user opens>

A value target that names an internal fleet artifact is not a value target. It is a planning artifact.

Why

World-model fidelity only closes when the corrected truth reaches a named surface where the user works. A "reality map", "visibility overlay", or "taxonomy" can help the fleet think, but it is not the thing Zack, Shayelyn, or Anthony opens to do construction work.

The correction is simple: value language must cross the surface boundary at the write site. If the user opens Buildertrend, name the Buildertrend job/page/URL. If the user opens Dollhouse, name the Dollhouse view. If the user receives an email, name the recipient surface.

Valid Shapes

USER_OPENED_SURFACE: https://buildertrend.net/app/projects/42217100/selections
USER_OPENED_SURFACE: Buildertrend job 42217100 selections page
USER_OPENED_SURFACE: Dollhouse /proof-chain/job-40729171 fixture view
USER_OPENED_SURFACE: Monday Brief email to zack@heartwoodcustom.com
USER_OPENED_SURFACE: Redline app selection review screen

Invalid Shapes

USER_OPENED_SURFACE: reality map
USER_OPENED_SURFACE: denominator overlay
USER_OPENED_SURFACE: visibility matrix
USER_OPENED_SURFACE: taxonomy
USER_OPENED_SURFACE: framework
USER_OPENED_SURFACE: Buildertrend

Bare Buildertrend is too broad. It names the application family without the job, page, URL, or object where the user sees the change.

Enforcement

feed-append validates proposed actionable posts through fleet_queue_lib.py. The gate applies only to new active value-target writes, so historical feed rows remain readable while the fleet repairs future behavior.

The validator rejects:

  • missing USER_OPENED_SURFACE
  • fleet-internal artifacts named as the surface
  • generic Buildertrend / BT references without a concrete job, page, URL, or
  • equivalent user-opened object

Disconfirming Observation

If a post passes with a concrete user-opened surface but still produces work the user cannot observe, the surface vocabulary is under-specified. Tighten the accepted examples for that product surface before filing more children.