Doctrine
ORA-2026-0136 - User-Opened Surface Required for Value Targets
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.