Status
as-built (emit 1.2.0) · direction (Evidence 2.0.0, section 5.2)
Conceptual layer
③ Analytics → ④ Decision seam
Repo layer
L3 core + SE contracts
Source
architecture section 5.2

Contract: contracts/schemas/intelligence/finding.json · const 1.2.0
Forward schema (direction): finding-2.0.0.json — not what core emits today

What core emits#

Field / ruleAs-built
schema_version1.2.0 (stamped_l3_core.models.finding)
ops_clearanceRequired — measurement boundary, related tags, predicate, stabilize / reopen
value_domainenergy_efficiency | equipment_health (product framing is four outcomes in the master document; field not migrated yet)
MoneyTariff-cited decomposition; no silent invent
Dual-laneOutbox only when status=emitted and delivery=l4
Enveloperecord_type=finding via StampedRecordEnvelope

In-memory tradeoff attached for Lab / L4 tool paths is stripped before outbox (PrescriptionWhat to do, why, who, check plan (direction; as built: prescription.json 1.0.0 / card-proposal) / card scoped).

Historical build docs that say FindingAs-built L3 detector output admitted to L4 (finding.json 1.2.0) 1.1.0 are outdated for emit.

Direction: EvidenceLayer contract for detector output (direction; as built: Finding finding.json 1.2.0) replaces the energy-only Finding with value_vector, contract tier, and evidence labels (D13, DECIDED). PlantState (section 5.1) is produced by estimators and the twin, not by the outbox.


How a Finding becomes L4 work#

Core outbox publish → L4 inbox / DecisionRuntime intake → floor checks (schema, bind, evidence, verification, detector identity when present) → staged graph → terminals emit | supersede | withhold | abstain → card-proposal only when emit allowed.

Normative L4 side: ../l4/15-l3-l4-interface.md · ../l4/07-finding-runtime.md · as-built map ../l4/30-as-built.md.

L3 ownsL4 owns
Detection methods, calculator references, verification-plan builderDecision runtime, portfolio, card proposal
Dual-lane emitTerminals; never invent ₹

Lab / Discovery rows never become customer cards without a new emitted+l4 Finding (or a certified L4 discovery path — contract, not a Lab promote).


Pivot fields L4 cares about#

NeedWhy
Schema-valid 1.2.0Reject intake otherwise
ops_clearanceL5 clearance poll later
Impact / evidence / dedupe_key / engine identityBind and audit
Envelope emitted + l4Only of-record work enters the decision runtime

Optional intake-floor fields (detector_id, detector_version, condition_key, …) may appear on 1.2.0 without a schema bump — see finding.json description and 15-l3-l4-interface.md.

Fast loop and Findings (direction)#

Twin outputs (PlantState direction, write requests, alerts, signals) are not Findings and never enter L4 intake. A twin condition becomes a card only when a scheduled twin-record engine detects it from L2 and emits a 1.2.0 Finding through the outbox. Such Findings cite the episode_id and the plant-box lockfile id inside existing evidence references; no schema bump is claimed. A dedicated field would be a separate contract change. See 05-twin-and-fast-loop.md.

Page history: last 4 changes
  1. 2026-10-07 docs(technical): rewrite l3/ to the architecture 4a28bbd
  2. 2026-10-03 docs(l3): twin runtime, twin-record engines, packs and replay as direction 28255e9
  3. 2026-09-27 docs(architecture): align identity with the four-outcome master document 1663dd2
  4. 2026-09-27 docs(l3): document rulepacks, evals, and L4 intake 8013d9c

Diagram

100%

Search the architecture