feat(lab): canonize versioned report template

This commit is contained in:
DCCONSTRUCTIONS
2026-07-27 16:05:32 +03:00
parent 2c016b117d
commit 95c6540691
20 changed files with 582 additions and 128 deletions
+16 -1
View File
@@ -152,7 +152,7 @@ core/laboratory/eNNContract.ts
immutable API/schema adapter
workspaces/laboratory/ENNResult.tsx
concise summary + admitted evidence + result projection
typed values for the versioned summary + admitted evidence + result projection
domain renderer module
only when an existing renderer cannot express the evidence
@@ -167,6 +167,18 @@ styles/laboratory.css
The complete engineering narrative remains in Ops. The product component
receives a concise typed projection.
`components/laboratory/LaboratoryPresentation.tsx` owns the executable
`missioncore.laboratory-report/v1` anatomy. `LaboratorySummary` requires
`question`, `approach`, `principalResult`, and `limitation`;
`LaboratoryResultSummary` requires metrics plus `proved`, `notProved`, and
`decision`. A bounded LAB result module cannot own the canonical summary/result
DOM or CSS classes. The product UI test discovers every `ENNResult.tsx`
automatically and rejects such a fork.
Legacy/integrated diagnostic viewers may keep a result interaction inside the
evidence slot only where that viewer is already the admitted result instrument.
This exception does not apply automatically to a new LAB.
## Local ontology decision
Mission Core already has three semantic mechanisms:
@@ -201,6 +213,9 @@ vocabulary and executable contracts. They do not create a second runtime model.
- LAB code and CSS remain outside the central workspace buckets;
- central composition files cannot silently return to their previous size.
`test/laboratoryProductUi.test.mjs` additionally enforces the versioned LAB
report fields and shared result component across bounded LAB modules.
The line limits are ratchets, not quality targets. When a file reaches a limit,
split a feature; do not raise the limit to accommodate unrelated behavior.