@sireai/optimus 0.1.43 → 0.1.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/cli/optimus.js +2 -0
  2. package/dist/cli/optimus.js.map +1 -1
  3. package/dist/problem-solving-core/codex/codex-runner.d.ts +8 -0
  4. package/dist/problem-solving-core/codex/codex-runner.js +210 -5
  5. package/dist/problem-solving-core/codex/codex-runner.js.map +1 -1
  6. package/dist/task-environment/delivery/delivery-warning-copy.js +1 -8
  7. package/dist/task-environment/delivery/delivery-warning-copy.js.map +1 -1
  8. package/dist/task-environment/delivery/feishu-analysis-doc-service.js +1 -1
  9. package/dist/task-environment/delivery/feishu-analysis-doc-service.js.map +1 -1
  10. package/dist/task-environment/delivery/feishu-notifier.js +5 -3
  11. package/dist/task-environment/delivery/feishu-notifier.js.map +1 -1
  12. package/dist/task-environment/delivery/pm-feishu-card-renderer.d.ts +2 -0
  13. package/dist/task-environment/delivery/pm-feishu-card-renderer.js +39 -13
  14. package/dist/task-environment/delivery/pm-feishu-card-renderer.js.map +1 -1
  15. package/dist/task-environment/delivery/task-delivery-service.d.ts +0 -3
  16. package/dist/task-environment/delivery/task-delivery-service.js +6 -113
  17. package/dist/task-environment/delivery/task-delivery-service.js.map +1 -1
  18. package/dist/task-environment/observability/logger.js +2 -0
  19. package/dist/task-environment/observability/logger.js.map +1 -1
  20. package/dist/task-environment/orchestration/task-orchestrator.js +2 -1
  21. package/dist/task-environment/orchestration/task-orchestrator.js.map +1 -1
  22. package/package.json +2 -2
  23. package/task-harnesses/bugfix/STANDARD.md +1 -0
  24. package/task-harnesses/pm/CONSTRAINTS.md +4 -12
  25. package/task-harnesses/pm/CONTEXT.md +2 -7
  26. package/task-harnesses/pm/EVOLUTION.md +4 -4
  27. package/task-harnesses/pm/ROLE.md +4 -8
  28. package/task-harnesses/pm/STANDARD.md +62 -255
@@ -2,6 +2,10 @@
2
2
 
3
3
  Defines the mandatory PM execution flow, artifact contract, and delivery standard.
4
4
 
5
+ ### Required outputs
6
+ - `prototype.html`: the main review artifact
7
+ - `result.md`: dense rule supplement for downstream implementation
8
+
5
9
  ## Execution sequence
6
10
  Complete work in this order:
7
11
 
@@ -12,25 +16,14 @@ Complete work in this order:
12
16
 
13
17
  2. `Map`
14
18
  - build a requirement map before designing screens or writing HTML
15
- - include:
16
- - product goal
17
- - target user
18
- - bounded scope
19
- - entry point
20
- - core flow
21
- - key states
22
- - critical rules
23
- - explicit non-goals
24
- - open questions
19
+ - include: product goal, target user, bounded scope, entry point, core flow, key states, critical rules, explicit non-goals, open questions
25
20
 
26
21
  3. `Plan Representation`
27
22
  - for each critical rule, choose exactly one:
28
23
  - `Represented Interactively`
29
- - `Represented via Annotation`
30
24
  - `Downgraded / Simulated`
31
25
  - `Not Represented`
32
26
  - use `Represented Interactively` only when the prototype will contain direct behavioral evidence
33
- - use `Represented via Annotation` when the rule is review-critical but not faithfully expressible through lightweight interaction
34
27
 
35
28
  4. `Frame`
36
29
  - define the minimum screen and state set that makes the accepted scope reviewable
@@ -40,27 +33,15 @@ Complete work in this order:
40
33
  5. `Build`
41
34
  - produce one reviewable `prototype.html`
42
35
  - make the main path, major states, and key transitions inspectable
43
- - add anchored review annotations where interaction is insufficient
36
+ - keep `prototype.html` focused on product interaction; move scope, exclusion, truth-status, simulation, and open-question commentary into `result.md` unless the source explicitly defines them as in-product UI
44
37
 
45
38
  6. `Review`
46
39
  - explicitly spawn one reviewer subagent after the first build
47
- - reviewer input must include:
48
- - source requirement document
49
- - source URL when available
50
- - accepted scope
51
- - requirement map
52
- - representation plan
53
- - `prototype.html` when present
54
- - `result.md`
55
- - `annotations.json` when present
56
- - previous review findings and builder revisions when this is round 2 or 3
57
- - current round number and maximum round count
40
+ - reviewer input must include the source requirement document, source URL when available, accepted scope, requirement map, representation plan, `prototype.html` when present, `result.md`, current round number, and maximum round count
41
+ - include previous reviewer findings and builder revisions in rounds 2 and 3
58
42
  - reviewer must judge against the reviewer rubric defined below
59
- - record one review round log entry containing:
60
- - round number
61
- - reviewer verdict
62
- - key gaps
63
- - recommended revisions or explicit approval
43
+ - record one review round log entry with round number, reviewer verdict, key gaps, and recommended revisions or explicit approval
44
+ - if reviewer subagent invocation fails, log the failure, skip the reviewer loop for this run, and continue normal artifact finalization; do not hang waiting for the reviewer path to recover
64
45
 
65
46
  7. `Revise`
66
47
  - if the reviewer finds material gaps, revise the prototype and rerun the reviewer subagent
@@ -70,74 +51,30 @@ Complete work in this order:
70
51
  - another revise-and-review pass is unlikely to improve trustworthiness materially
71
52
  - if the final reviewer verdict still finds material gaps after the maximum rounds, downgrade closure instead of looping further
72
53
  - the builder must read the latest reviewer output before revising
73
- - each new review round must include:
74
- - the previous reviewer findings
75
- - what the builder changed
76
- - what the builder intentionally did not change and why
54
+ - each new review round must include the previous reviewer findings, what changed, and what was intentionally not changed and why
77
55
 
78
56
  8. `Deliver`
79
57
  - generate `result.md`
80
- - generate `annotations.json` whenever a prototype exists
81
58
  - generate `review-log.md` whenever the reviewer loop ran
82
59
  - declare deviations, simulations, and unresolved implementation-critical points precisely
83
60
 
84
61
  If execution stops early, explain which step could not be completed and why.
85
62
 
86
- ## Review loop standard
87
- - the reviewer subagent must be explicitly requested; do not assume it will appear automatically
88
- - the reviewer must not rewrite the prototype directly; it judges and recommends
89
- - the builder applies revisions and owns the updated artifacts
90
- - provide the reviewer with facts first, not builder conclusions first
91
- - the reviewer should treat the source requirement and produced artifacts as primary evidence; builder framing is supporting context only
92
- - reviewer findings do not justify unlimited scope growth, denser chrome, or extra speculative screens by default
93
- - each review round should classify every material finding as one of:
63
+ ## Reviewer protocol
64
+ - the reviewer subagent must be explicitly requested; it is a judge, not a builder
65
+ - provide facts first: source requirement, source URL when available, accepted scope, produced artifacts, then builder framing
66
+ - required reviewer inputs: requirement document, source URL when available, accepted scope, requirement map, representation plan, `prototype.html` when present, `result.md`, current round number, maximum rounds, and prior findings/revisions for rounds 2 and 3
67
+ - reviewer findings do not justify unlimited scope growth, denser chrome, or speculative screens by default
68
+ - each review round must classify material findings as:
94
69
  - `Must Fix Before Complete`
95
70
  - `Can Ship As Partial`
96
71
  - `Open Question`
97
- - examples of `Must Fix Before Complete`:
98
- - missing core flow coverage
99
- - important requirement content is omitted, misunderstood, or inconsistent with the source document
100
- - missing or materially wrong key rule representation
101
- - deeper business or interaction logic is only described textually and not demonstrated clearly enough through the prototype
102
- - explicit source fact drift that changes review interpretation
103
- - simulated behavior presented as if it were faithful interaction
104
- - annotation layer and `annotations.json` disagree on important meaning
105
- - the artifact set is too weak to guide downstream AI coding without major guessing about rules, state behavior, or implementation intent
106
- - UI quality is materially below design-review expectations, especially when the requirement document already contains screenshots, diagrams, or strong structural visual cues that were not meaningfully used
107
- - examples of `Can Ship As Partial`:
108
- - useful prototype exists, but some non-core states remain merged or downgraded
109
- - some important but secondary rules remain annotation-only or simulated
110
- - the core design direction is usable, but parts of the visual system or interaction polish still fall below designer-grade expectations
111
- - examples of `Open Question`:
112
- - requirement ambiguity prevents stronger representation without invention
113
-
114
- ## Reviewer input contract
115
- Each reviewer round should receive these inputs in this priority order:
116
-
117
- 1. `Source facts`
118
- - requirement document
119
- - source URL when available
120
- - explicit accepted scope
121
-
122
- 2. `Produced artifacts`
123
- - `prototype.html` when present
124
- - `result.md`
125
- - `annotations.json` when present
126
-
127
- 3. `Builder framing`
128
- - requirement map
129
- - representation plan
130
- - declared deviations, simulations, and unresolved points
131
-
132
- 4. `Round context`
133
- - current round number
134
- - maximum rounds: `3`
135
- - previous reviewer findings and builder revisions for rounds 2 and 3
136
-
137
- ## Reviewer output contract
138
- Each reviewer round must produce a compact review record that the builder can consume directly.
139
-
140
- Minimum fields:
72
+ - `Must Fix Before Complete` covers missing or wrong core flow/rule coverage, source inconsistency, weak logic demonstration, misleading simulation, artifact weakness that blocks downstream AI coding, or materially subpar UI fidelity against available source cues
73
+ - `Can Ship As Partial` covers useful but incomplete review artifacts: merged non-core states, simulated secondary rules, or design quality gaps that do not destroy core reviewability
74
+ - `Open Question` covers requirement ambiguity that cannot be resolved without invention
75
+
76
+ ## Reviewer record
77
+ Each review round must produce a compact record with:
141
78
  - `Round`
142
79
  - `Reviewer Verdict`
143
80
  - `Coverage Assessment`
@@ -156,60 +93,48 @@ Allowed `Reviewer Verdict` values:
156
93
  - `Can Ship As Partial`
157
94
  - `Approved for Prototype Complete`
158
95
 
159
- ## Builder handoff contract
160
- After each review round, the builder must:
161
- - read the full reviewer output
162
- - revise the prototype and companion artifacts when `Must Fix Before Complete` findings exist
163
- - preserve unresolved but non-blocking findings inside `result.md` when closure remains partial
164
- - run a full core-panel self-check before requesting the next review, not only a point fix for the previous `Must Fix`
165
- - prefer downgrade over another revise round when the next change would require speculative product invention, materially larger scope, or a noisier prototype that reduces reviewability
166
- - write a concise round handoff into `review-log.md` containing:
167
- - what was changed
168
- - what was intentionally left unchanged
169
- - why the next review should or should not still expect a gap
170
-
171
- ## Reviewer rubric
172
- The reviewer must evaluate the prototype against these principles in order:
96
+ ## Review judgment order
97
+ The reviewer must judge in this order:
173
98
 
174
99
  1. `Requirement completeness and correctness`
175
- - the interactive prototype must reflect the requirement document fully enough for the accepted scope
176
- - important requirement content must not be missing, misunderstood, or inconsistent
100
+ - accepted-scope content must be present, correctly understood, and consistent with the source
177
101
 
178
102
  2. `Logic demonstrability`
179
- - deeper logic chains, dependencies, and cause-effect behavior must be demonstrated clearly
180
- - the prototype must not stop at first-layer description when the requirement meaning depends on richer interaction logic
103
+ - deeper dependencies and cause-effect behavior must be demonstrated, not left at first-layer description
181
104
 
182
105
  3. `Representation correctness`
183
- - interaction, annotation, simulation, and omission must each be used deliberately and truthfully
184
- - if a rule needs to be understood for review, the prototype must either demonstrate it or annotate it clearly
185
- - avoid reviewer-driven overbuilding: do not add extra flows, fake data breadth, or decorative complexity unless they directly improve requirement understanding
106
+ - interaction, simulation, and omission must be deliberate and truthful
107
+ - if a rule cannot be shown faithfully, declare the gap in `result.md`
108
+ - avoid reviewer-driven overbuilding that adds decorative or speculative complexity without improving requirement understanding
186
109
 
187
110
  4. `Implementation readiness for AI coding`
188
- - the artifact set must give downstream AI coding enough rule context, implementation guardrails, and annotation coverage to avoid major guessing
189
- - `result.md` and `annotations.json` must supplement the prototype where direct interaction is insufficient
190
-
191
- 5. `UI design quality and visual fidelity`
192
- - the prototype should reach designer-grade quality for its intended fidelity level
193
- - visual style, layout cues, screenshots, diagrams, and structural hints from the requirement document should be used as first-priority guidance when present
194
- - avoid generic or template-looking UI when the source document provides stronger visual direction
195
- - every core panel must remain visibly populated and reviewable after each revision; do not accept a panel that retains only a title, labels, or empty chrome while its intended information carrier disappears
196
- - for `Represented Interactively` modules, visible content must remain materially present:
197
- - charts must still show visible bars, lines, points, or equivalent graphical carriers rather than only captions or axes
198
- - explanatory panels such as scope / exclusion / guardrail areas must retain enough information density to communicate their product meaning, not collapse into thin placeholder copy
199
- - if a revision fixes one issue but causes another panel to become visually blank, materially thinner, or harder to interpret, treat it as a new blocking regression
200
-
201
- 6. `Artifact consistency`
202
- - `prototype.html`, `result.md`, and `annotations.json` must agree on key rules, limitations, and truth status
203
-
204
- 7. `Regression control after revision`
205
- - every later review round must re-check the whole accepted prototype surface, not only the previous `Must Fix` list
206
- - the reviewer must explicitly check for:
207
- - newly blank or near-blank core panels
208
- - graph containers whose DOM exists but whose intended visual content is no longer meaningfully visible
209
- - explanatory regions whose copy became materially thinner or lost review-critical meaning
210
- - regressions where a previously acceptable panel becomes weaker after a later fix
211
- - if such regressions appear, record them under `New Regression Since Previous Round` and classify them as `Must Fix Before Complete` when they reduce reviewability materially
212
- - if a proposed follow-up revision would mainly add complexity, speculative branches, or visual clutter without improving requirement truth, prefer `Prototype Partial` over further churn
111
+ - the artifact set must give downstream AI coding enough rule context and guardrails to avoid major guessing
112
+ - `result.md` must supplement the prototype where interaction alone is insufficient
113
+
114
+ 5. `UI fidelity and panel visibility`
115
+ - use screenshots, diagrams, layout cues, and structural hints from the source as first-priority guidance when present
116
+ - the prototype should read as product UI, not a delivery brief or review console
117
+ - every core panel must stay visibly populated and reviewable after each revision
118
+ - for `Represented Interactively` modules, intended visual carriers must remain materially visible
119
+ - charts still need visible bars, lines, points, or equivalent graphical carriers
120
+ - product-facing explanatory regions defined by the source UI must not collapse into thin placeholder copy
121
+ - if one fix makes another panel visually blank, materially thinner, or harder to interpret, treat that as a new blocking regression
122
+
123
+ 6. `Artifact consistency and regression control`
124
+ - `prototype.html` and `result.md` must agree on key rules, limitations, and truth status
125
+ - later rounds must re-check the whole accepted surface, not only the previous `Must Fix` list
126
+ - explicitly check for newly blank panels, invisible graph content, materially weakened product-facing explanatory regions, and regressions where a previously acceptable panel becomes weaker after a later fix
127
+ - record material regressions under `New Regression Since Previous Round`
128
+ - prefer `Prototype Partial` over further churn when the next revision would mainly add complexity, speculative branches, or visual clutter without improving requirement truth
129
+
130
+ ## Builder response to review
131
+ After each review round, the builder must:
132
+ - read the full reviewer output
133
+ - revise the prototype and companion artifacts when `Must Fix Before Complete` findings exist
134
+ - preserve unresolved but non-blocking findings in `result.md` when closure remains partial
135
+ - run a full core-panel self-check before requesting the next review, not only a point fix for the previous `Must Fix`
136
+ - prefer downgrade over another revise round when the next change would require speculative invention, materially larger scope, or a noisier prototype that reduces reviewability
137
+ - write a concise handoff into `review-log.md` containing what changed, what stayed unchanged, and why the next review should or should not still expect a gap
213
138
 
214
139
  ## Closure policy
215
140
  - decide closure only after the final review round
@@ -234,41 +159,14 @@ The reviewer must evaluate the prototype against these principles in order:
234
159
 
235
160
  ## Prototype standard
236
161
  - `prototype.html` is the main review artifact
162
+ - `prototype.html` is not the place for delivery portal content or truth-status summaries
237
163
  - the prototype must make the main user flow inspectable
238
164
  - prefer depth on the core path over shallow breadth
239
165
  - support meaningful review actions such as navigation, state changes, or key transitions
240
- - keep the prototype understandable when annotations are hidden or minimized
241
166
  - keep core panels visibly reviewable across revisions
242
167
  - do not count a panel as interactively represented when its main carrier is visually missing, nearly invisible, or replaced by bare labels only
243
168
  - if the accepted scope includes charted data, preserve visible graphical expression rather than text-only scaffolding
244
169
 
245
- ## Annotation standard
246
- - use a dedicated review mode when annotation density would otherwise disrupt normal reading
247
- - keep review-only controls secondary, collapsible, or minimized
248
- - assign stable target ids
249
- - recommended target attribute: `data-pm-target="<id>"`
250
- - recommended annotation attribute: `data-pm-annotation="<id>"`
251
- - each annotation should have one primary target whenever possible
252
- - clicking an annotation should focus its target; clicking a target affordance should reveal the linked annotation
253
- - use stronger linkage such as numbered mapping or connector lines only when it improves readability
254
-
255
- ### Truth semantics
256
- - `Confirmed`: faithful to the source requirement
257
- - `Simulated`: represented approximately for review
258
- - `Open Question`: unresolved and review-relevant
259
-
260
- ### Good annotation targets
261
- - server-side rules that materially affect UX
262
- - formulas, thresholds, ordering, permissions, and gating
263
- - approximations that could be mistaken as final behavior
264
- - unresolved behavior reviewers must notice
265
-
266
- ### Bad annotation targets
267
- - long PRD excerpts without interpretation
268
- - screen facts already obvious from the UI
269
- - visual design commentary with no product impact
270
- - missing core flows that should have been prototyped directly
271
-
272
170
  ## Runtime result contract
273
171
  - return exactly one runtime JSON object
274
172
  - normal completion and analysis-only closure both return `completed`
@@ -287,10 +185,10 @@ The reviewer must evaluate the prototype against these principles in order:
287
185
  ## Artifact contract
288
186
  - always generate `result.md` on normal completion
289
187
  - generate `prototype.html` for `Prototype Complete` and `Prototype Partial`
290
- - generate `annotations.json` whenever `prototype.html` is generated
291
188
  - generate `review-log.md` when the PM review loop ran
292
189
  - use repository-independent artifact paths
293
190
  - `result.md` is the only framework-required result artifact
191
+ - put scope boundaries, exclusions, simulations, assumptions, truth-status notes, and open questions in `result.md`, not in the default prototype page
294
192
  - task-private files are optional and must support review directly
295
193
 
296
194
  ## Feishu delivery document
@@ -298,7 +196,6 @@ The reviewer must evaluate the prototype against these principles in order:
298
196
  - treat the Feishu delivery document as a delivery portal, not as a second PRD
299
197
  - detailed interaction belongs in `prototype.html`
300
198
  - rule supplements belong in `result.md`
301
- - structured annotation handoff belongs in `annotations.json`
302
199
 
303
200
  ### Required structure
304
201
  1. `需求文档`
@@ -309,95 +206,6 @@ The reviewer must evaluate the prototype against these principles in order:
309
206
  - keep artifact purpose attached to the artifact itself
310
207
  - do not duplicate artifact content in the delivery document
311
208
 
312
- ## `annotations.json` contract
313
- - purpose: machine-readable export of anchored review annotations
314
- - paired artifact: normally `prototype.html`
315
- - top-level fields:
316
- - `version`
317
- - `artifact`
318
- - `annotations`
319
- - `annotations` may be empty, but must exist when the file is generated
320
-
321
- ### Each annotation record must include
322
- - `id`
323
- - `target`
324
- - `type`
325
- - `status`
326
- - `priority`
327
- - `title`
328
- - `content`
329
-
330
- ### `target` must include
331
- - `elementId`
332
- - optional `page`
333
- - optional `anchor`: `top` | `right` | `bottom` | `left` | `inline` | `state`
334
-
335
- ### Recommended enums
336
- - `type`:
337
- - `interaction`
338
- - `state`
339
- - `calculation`
340
- - `data_rule`
341
- - `edge_case`
342
- - `empty_state`
343
- - `error_state`
344
- - `permission`
345
- - `out_of_scope`
346
- - `open_question`
347
- - `status`:
348
- - `confirmed`
349
- - `assumption`
350
- - `simulated`
351
- - `open_question`
352
- - `priority`:
353
- - `high`
354
- - `medium`
355
- - `low`
356
-
357
- ### Optional fields
358
- - `secondaryTargets`
359
- - `structured`
360
- - `sourceRefs`
361
- - `implementationImpact`
362
- - `reviewerNote`
363
-
364
- ### Generation rules
365
- - create one record per review-meaningful annotation, not per DOM node
366
- - if a rule is represented via annotation in the requirement map, it must appear here
367
- - keep truth status aligned with the prototype
368
- - use `structured` when formulas, state keys, limits, or forbidden interpretations matter
369
-
370
- ### Example
371
- ```json
372
- {
373
- "version": "1.0",
374
- "artifact": "prototype.html",
375
- "annotations": [
376
- {
377
- "id": "ann-load-rate-all-rule",
378
- "target": {
379
- "page": "power-dashboard",
380
- "elementId": "load-rate-trend-chart",
381
- "anchor": "right"
382
- },
383
- "type": "calculation",
384
- "status": "confirmed",
385
- "priority": "high",
386
- "title": "All Load Rate calculation rule",
387
- "content": "All Load Rate must be calculated as total power divided by total capacity. Average-based calculation is not allowed.",
388
- "structured": {
389
- "formula": "sum(room.power) / sum(room.capacity) * 100%",
390
- "forbiddenFormula": "avg(room.loadRate)"
391
- },
392
- "implementationImpact": "Affects trend aggregation logic, KPI cards, and chart tooltip consistency.",
393
- "sourceRefs": [
394
- "Load Rate Trend > All view"
395
- ]
396
- }
397
- ]
398
- }
399
- ```
400
-
401
209
  ## `result.md` contract
402
210
  Keep `result.md` dense, implementation-oriented, and in Chinese unless the task explicitly requires another language.
403
211
 
@@ -438,7 +246,7 @@ Keep `result.md` dense, implementation-oriented, and in Chinese unless the task
438
246
 
439
247
  # 闭环判定
440
248
  - Closure Level:Prototype Partial
441
- - 判定依据:核心路径可评审,但历史场景下 Power 统计口径仍未明确,且部分规则仍以 annotation 承载。
249
+ - 判定依据:核心路径可评审,但历史场景下 Power 统计口径仍未明确,且部分规则仍未能通过交互完全表达。
442
250
  - 主要剩余问题:历史 Power KPI 的精确定义仍是 Open Question。
443
251
  ```
444
252
 
@@ -462,13 +270,13 @@ Keep `result.md` dense, implementation-oriented, and in Chinese unless the task
462
270
  ## Round 1
463
271
  - Reviewer Verdict: Must Fix Before Complete
464
272
  - Must Fix:
465
- - `All Load Rate` 计算口径未在原型或 annotation 中明确。
273
+ - `All Load Rate` 计算口径未在原型或 `result.md` 中明确。
466
274
  - Can Ship As Partial:
467
275
  - 历史 Power KPI 口径仍可暂时保留为开放问题。
468
276
  - Open Questions:
469
277
  - `Last 90 Days` 聚合粒度是否按月展示仍待确认。
470
278
  - Builder Action:
471
- - 新增 `All Load Rate` 计算口径 annotation,并调整结果说明。
279
+ - 补强原型交互表达,并在 `result.md` 中补充规则说明。
472
280
  ```
473
281
 
474
282
  ## Final self-check
@@ -477,7 +285,6 @@ Keep `result.md` dense, implementation-oriented, and in Chinese unless the task
477
285
  - final closure matches the last reviewer verdict
478
286
  - every material key rule has a declared representation mode
479
287
  - any remaining downgraded or missing behavior is disclosed in `result.md`
480
- - `annotations.json` matches the actual annotation layer in `prototype.html`
481
288
  - `result.md` contains no delivery-index or artifact-list sections
482
289
  - source facts are preserved or deviations are explicitly declared
483
290
  - sample data is not presented as source truth