@stalfh233/omc-cli 0.0.0-stage → 0.4.0

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 (181) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +304 -3
  3. package/coverage/m1-coverage-manifest-v1.json +1278 -0
  4. package/dist/approval-token.js +102 -0
  5. package/dist/args.js +25 -0
  6. package/dist/artifacts.js +119 -0
  7. package/dist/bench/call-face-eval.js +256 -0
  8. package/dist/bench/context-attribution.js +151 -0
  9. package/dist/bench/discovery-cost-eval.js +230 -0
  10. package/dist/bench/driver.js +81 -0
  11. package/dist/bench/evals.js +236 -0
  12. package/dist/bench/fake-http-server.js +65 -0
  13. package/dist/bench/instrument.js +87 -0
  14. package/dist/bench/intent-face-eval.js +343 -0
  15. package/dist/bench/run.js +166 -0
  16. package/dist/bench/scenario.js +343 -0
  17. package/dist/bench/types.js +76 -0
  18. package/dist/bi-wire.js +41 -0
  19. package/dist/bizservice-config.js +581 -0
  20. package/dist/call.js +153 -0
  21. package/dist/capability-absences.js +23 -0
  22. package/dist/capability-overview.js +492 -0
  23. package/dist/capability-shape.js +154 -0
  24. package/dist/cli-contract.js +70 -0
  25. package/dist/cli-output.js +73 -0
  26. package/dist/cli.js +1418 -0
  27. package/dist/code-rules.js +69 -0
  28. package/dist/command-transport.js +155 -0
  29. package/dist/config-store.js +195 -0
  30. package/dist/context.js +21 -0
  31. package/dist/contract-consistency.js +66 -0
  32. package/dist/contract-resources.js +62 -0
  33. package/dist/coverage-consistency.js +62 -0
  34. package/dist/coverage-registry.js +76 -0
  35. package/dist/coverage.js +130 -0
  36. package/dist/data-list-filter.js +114 -0
  37. package/dist/discovery.js +390 -0
  38. package/dist/endpoints.js +154 -0
  39. package/dist/environment-policy.js +26 -0
  40. package/dist/execution-metadata.js +1092 -0
  41. package/dist/fake/app.js +45 -0
  42. package/dist/fake/b2-registration.js +594 -0
  43. package/dist/fake/businessrule.js +242 -0
  44. package/dist/fake/datarule.js +72 -0
  45. package/dist/fake/dictionary.js +108 -0
  46. package/dist/fake/environment.js +30 -0
  47. package/dist/fake/field.js +167 -0
  48. package/dist/fake/form.js +101 -0
  49. package/dist/fake/index.js +121 -0
  50. package/dist/fake/list-view.js +289 -0
  51. package/dist/fake/model.js +136 -0
  52. package/dist/fake/online-js.js +18 -0
  53. package/dist/fake/report.js +253 -0
  54. package/dist/fake/routes.js +47 -0
  55. package/dist/fake/rule-lifecycle.js +37 -0
  56. package/dist/fake/runtime-data.js +367 -0
  57. package/dist/fake/state.js +67 -0
  58. package/dist/fake/workflow.js +364 -0
  59. package/dist/field-change.js +200 -0
  60. package/dist/field-families.js +896 -0
  61. package/dist/form-layout.js +111 -0
  62. package/dist/form-support.js +821 -0
  63. package/dist/goal-routes.js +468 -0
  64. package/dist/governed-execution.js +87 -0
  65. package/dist/human-summary.js +212 -0
  66. package/dist/identity.js +62 -0
  67. package/dist/intent/baseline.js +57 -0
  68. package/dist/intent/capabilities/bizservice.js +274 -0
  69. package/dist/intent/capabilities/businessrule.js +493 -0
  70. package/dist/intent/capabilities/datarule.js +187 -0
  71. package/dist/intent/capabilities/field.js +545 -0
  72. package/dist/intent/capabilities/form.js +136 -0
  73. package/dist/intent/capabilities/index.js +64 -0
  74. package/dist/intent/capabilities/listview.js +157 -0
  75. package/dist/intent/capabilities/model.js +100 -0
  76. package/dist/intent/capabilities/onlinejs.js +108 -0
  77. package/dist/intent/capabilities/report.js +355 -0
  78. package/dist/intent/capabilities/workflow.js +458 -0
  79. package/dist/intent/capability.js +6 -0
  80. package/dist/intent/cli.js +91 -0
  81. package/dist/intent/compare.js +56 -0
  82. package/dist/intent/compiler.js +79 -0
  83. package/dist/intent/dsl.js +129 -0
  84. package/dist/intent/plan-file.js +63 -0
  85. package/dist/intent/readback.js +65 -0
  86. package/dist/intent/schema.js +158 -0
  87. package/dist/intent/validation.js +30 -0
  88. package/dist/intent/yaml.js +315 -0
  89. package/dist/json-column.js +68 -0
  90. package/dist/lanes/app-contract.js +95 -0
  91. package/dist/lanes/app-coverage.js +16 -0
  92. package/dist/lanes/app.js +174 -0
  93. package/dist/lanes/apply-changes.js +231 -0
  94. package/dist/lanes/b2-registration-contract.js +292 -0
  95. package/dist/lanes/b2-registration-coverage.js +48 -0
  96. package/dist/lanes/b2-registration.js +1187 -0
  97. package/dist/lanes/businessrule-contract.js +232 -0
  98. package/dist/lanes/businessrule-coverage.js +16 -0
  99. package/dist/lanes/businessrule.js +221 -0
  100. package/dist/lanes/contract-support.js +65 -0
  101. package/dist/lanes/coverage-declaration.js +9 -0
  102. package/dist/lanes/datarule-contract.js +155 -0
  103. package/dist/lanes/datarule-coverage.js +19 -0
  104. package/dist/lanes/datarule-protocol.js +308 -0
  105. package/dist/lanes/datarule.js +818 -0
  106. package/dist/lanes/dictionary-contract.js +78 -0
  107. package/dist/lanes/dictionary-coverage.js +24 -0
  108. package/dist/lanes/dictionary.js +235 -0
  109. package/dist/lanes/environment-contract.js +70 -0
  110. package/dist/lanes/environment-coverage.js +14 -0
  111. package/dist/lanes/environment.js +163 -0
  112. package/dist/lanes/field-contract.js +223 -0
  113. package/dist/lanes/field-coverage.js +27 -0
  114. package/dist/lanes/field.js +374 -0
  115. package/dist/lanes/form-contract.js +97 -0
  116. package/dist/lanes/form-coverage.js +16 -0
  117. package/dist/lanes/form.js +185 -0
  118. package/dist/lanes/lane-ids.js +34 -0
  119. package/dist/lanes/list-view-contract.js +175 -0
  120. package/dist/lanes/list-view-coverage.js +20 -0
  121. package/dist/lanes/list-view-shapes.js +1207 -0
  122. package/dist/lanes/list-view.js +578 -0
  123. package/dist/lanes/meta-contract.js +85 -0
  124. package/dist/lanes/meta.js +255 -0
  125. package/dist/lanes/model-contract.js +168 -0
  126. package/dist/lanes/model-coverage.js +20 -0
  127. package/dist/lanes/model.js +986 -0
  128. package/dist/lanes/online-js-contract.js +99 -0
  129. package/dist/lanes/online-js-coverage.js +28 -0
  130. package/dist/lanes/online-js.js +127 -0
  131. package/dist/lanes/report-contract.js +144 -0
  132. package/dist/lanes/report-coverage.js +21 -0
  133. package/dist/lanes/report.js +476 -0
  134. package/dist/lanes/rule-graph.js +1846 -0
  135. package/dist/lanes/rule-lifecycle-contract.js +92 -0
  136. package/dist/lanes/rule-lifecycle-coverage.js +20 -0
  137. package/dist/lanes/rule-lifecycle.js +176 -0
  138. package/dist/lanes/runtime-data-contract.js +264 -0
  139. package/dist/lanes/runtime-data-coverage.js +25 -0
  140. package/dist/lanes/runtime-data.js +1054 -0
  141. package/dist/lanes/workflow-contract.js +223 -0
  142. package/dist/lanes/workflow-coverage.js +40 -0
  143. package/dist/lanes/workflow.js +1813 -0
  144. package/dist/online-js-layout.js +58 -0
  145. package/dist/online-js-source.js +276 -0
  146. package/dist/package-tool.js +51 -0
  147. package/dist/package.js +73 -0
  148. package/dist/plan.js +73 -0
  149. package/dist/read.js +144 -0
  150. package/dist/redact.js +28 -0
  151. package/dist/rule-support.js +587 -0
  152. package/dist/runtime-support.js +134 -0
  153. package/dist/server.js +92 -0
  154. package/dist/session-manager.js +30 -0
  155. package/dist/session.js +149 -0
  156. package/dist/skills.js +112 -0
  157. package/dist/support.js +98 -0
  158. package/dist/tool-types.js +127 -0
  159. package/dist/tools.js +59 -0
  160. package/dist/usage-log.js +197 -0
  161. package/dist/wire.js +287 -0
  162. package/dist/workflow-support.js +99 -0
  163. package/dist/write-lease.js +26 -0
  164. package/dist/write-lock.js +109 -0
  165. package/dist/write.js +176 -0
  166. package/dist/zip.js +156 -0
  167. package/docs/tool-surface-map.md +42 -0
  168. package/package.json +71 -6
  169. package/skills/omc-acceptance-criteria.md +47 -0
  170. package/skills/omc-business-configuration.md +257 -0
  171. package/skills/omc-capabilities.md +197 -0
  172. package/skills/omc-capability-scouting.md +55 -0
  173. package/skills/omc-config-draft-review.md +171 -0
  174. package/skills/omc-five-piece-flow.md +35 -0
  175. package/skills/omc-glossary.md +86 -0
  176. package/skills/omc-refusals.md +110 -0
  177. package/skills/omc-requirement-analysis.md +161 -0
  178. package/skills/omc-requirement-vocabulary.md +51 -0
  179. package/skills/omc-start-here.md +82 -0
  180. package/skills/omc-tool-selection.md +119 -0
  181. package/skills/omc-write-hazards.md +87 -0
@@ -0,0 +1,1278 @@
1
+ {
2
+ "manifest_type": "omc.coverage.manifest",
3
+ "schema_version": 1,
4
+ "wave": "M1",
5
+ "generated_from": "b8f22d6",
6
+ "revised_from": "2e22fb8",
7
+ "revision_note": "v1 revision: leg1-4 live-proven base capabilities merged in from prior-wave evidence (field families, model management, form publish chain, B1/B1.2, C-plane workflow, Online JS, M2 write/readback, B2 registration face, environment governance, cross-plane e2e delivery). No new live probes were run; every added item cites existing evidence only.",
8
+ "version_family": "8.6",
9
+ "anchor_version": "8.6.26",
10
+ "coverage_policy": "Every capability is enumerated. Unsupported capabilities are explicitly listed and are not omitted; blocked and static-only records are not runtime coverage claims.",
11
+ "items": [
12
+ {
13
+ "capability": "Data dictionary lifecycle and field option sources",
14
+ "status": "executable",
15
+ "scope": "Dictionary metadata/records create, update, list, readback, enable/disable, and selection/relation option source configuration.",
16
+ "version_family": "8.6",
17
+ "anchor_version": "8.6.26",
18
+ "evidence": [
19
+ {
20
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../DataDictionaryController.java",
21
+ "anchor": "157-410"
22
+ },
23
+ {
24
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../DictionaryFacadeImpl.java",
25
+ "anchor": "141-196,241-267"
26
+ },
27
+ {
28
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../SchemaAnalyzer.java",
29
+ "anchor": "349-454"
30
+ },
31
+ {
32
+ "path": "cp-sources/frontend-dist/admin/js/30525.0fa42d55.js",
33
+ "anchor": "dictionaryApi/options strategy"
34
+ },
35
+ {
36
+ "path": "packages/omc-cli/test/dictionary.test.ts",
37
+ "anchor": "dictionary lifecycle and option sources"
38
+ }
39
+ ],
40
+ "lane": "dictionary-management",
41
+ "tools": [
42
+ "dictionary.list",
43
+ "dictionary.type",
44
+ "dictionary.names",
45
+ "dictionary.get",
46
+ "dictionary.records",
47
+ "dictionary.parent",
48
+ "dictionary.save",
49
+ "dictionary.status",
50
+ "dictionary.usage",
51
+ "dictionary.classes",
52
+ "dictionary.class.save",
53
+ "dictionary.class.delete"
54
+ ],
55
+ "scopes": [
56
+ "dictionary list",
57
+ "dictionary type read",
58
+ "dictionary names read",
59
+ "dictionary read",
60
+ "dictionary records read",
61
+ "dictionary parent records read",
62
+ "dictionary save",
63
+ "dictionary status",
64
+ "dictionary record usage",
65
+ "dictionary classes",
66
+ "dictionary class save",
67
+ "dictionary class delete"
68
+ ]
69
+ },
70
+ {
71
+ "capability": "W1 list-view design-time header lifecycle",
72
+ "status": "partial",
73
+ "scope": "Create, list readback, get_header readback, forced LIST/showOnPc/unpublished defaults, delete, exact absence, and owned fixture cleanup.",
74
+ "excluded_or_unsupported_reason": "Child configuration cascade, update/sort/show operations, runtime list visibility/cache, publish semantics, filtering, sorting, and DB orphan boundaries were not probed.",
75
+ "version_family": "8.6",
76
+ "anchor_version": "8.6.26",
77
+ "evidence": [
78
+ {
79
+ "path": ".scratch/omc-route-wayfinder/acceptance/w1-list-view-live-20260910052544791-5bd555612f44.json",
80
+ "anchor": "contract.source; wire; checks"
81
+ },
82
+ {
83
+ "path": ".scratch/omc-route-wayfinder/research/list-view-static-scout.md",
84
+ "anchor": "§3 Live wire facts; §6 live-only boundaries"
85
+ },
86
+ {
87
+ "path": "scripts/run-w1-list-view-live.mjs",
88
+ "anchor": "runner"
89
+ },
90
+ {
91
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../BizQueryController.java",
92
+ "anchor": "211-255,281-352"
93
+ }
94
+ ],
95
+ "lane": "W1-list-view",
96
+ "tools": [
97
+ "listview.get",
98
+ "listview.list",
99
+ "listview.create",
100
+ "listview.configure",
101
+ "listview.delete"
102
+ ],
103
+ "scopes": [
104
+ "create list readback header forced defaults delete"
105
+ ]
106
+ },
107
+ {
108
+ "capability": "W2 permissions and authorization matrix",
109
+ "status": "blocked",
110
+ "scope": "Permission discovery/readback, application/model/field permissions, resource permissions, roles, runtime validation, and cleanup boundary.",
111
+ "excluded_or_unsupported_reason": "No authoritative base URL, app/schema identity, W2 fixture, authenticated tenant context, or non-admin identity; no request or mutation was attempted.",
112
+ "version_family": "8.6",
113
+ "anchor_version": "8.6.26",
114
+ "evidence": [
115
+ {
116
+ "path": ".scratch/omc-route-wayfinder/acceptance/w2-permissions-live-20260910.md",
117
+ "anchor": "§Result; §Remaining scope"
118
+ },
119
+ {
120
+ "path": ".scratch/omc-route-wayfinder/research/permissions-static-scout.md",
121
+ "anchor": "§1; §3; §5; §6"
122
+ },
123
+ {
124
+ "path": "src/permission-product-crud-capabilities.ts",
125
+ "anchor": "133-185"
126
+ }
127
+ ],
128
+ "lane": "W2-permissions"
129
+ },
130
+ {
131
+ "capability": "S26 same-model aggregation semantics",
132
+ "status": "partial",
133
+ "scope": "Observed same-model AGGREGATION OR/AND grouping, zero/empty-set behavior, DRAFT exclusion, self-model cycle refusal, and cleanup evidence.",
134
+ "excluded_or_unsupported_reason": "Broad aggregation implementation remains gated; result coercion, null/mixed-null shapes, query semantics, and persistent=false lifecycle are not a general contract.",
135
+ "version_family": "8.6",
136
+ "anchor_version": "8.6.26",
137
+ "evidence": [
138
+ {
139
+ "path": ".scratch/omc-route-wayfinder/leg6b-s25-reentry-closeout.md",
140
+ "anchor": "§S26 row 25; §Environment"
141
+ },
142
+ {
143
+ "path": ".scratch/omc-field-type-ladder/research/s26-formula-aggregation.md",
144
+ "anchor": "§9.1; §9.3; §9 Final Recommendation"
145
+ },
146
+ {
147
+ "path": ".scratch/omc-field-type-ladder/acceptance/s26-matrix-20260910001932237.md",
148
+ "anchor": "publish refusal errcode 305003"
149
+ },
150
+ {
151
+ "path": ".scratch/omc-field-type-ladder/acceptance/s26-cleanup-20260910003052146.md",
152
+ "anchor": "cleanup"
153
+ }
154
+ ],
155
+ "lane": "W5-S26-aggregation"
156
+ },
157
+ {
158
+ "capability": "W5 S26 cross-model aggregation",
159
+ "status": "blocked",
160
+ "scope": "Cross-model AGGREGATION OR/AND, zero/empty-set, DRAFT exclusion, and persistent contrast requiring a published target.",
161
+ "excluded_or_unsupported_reason": "No qualifying published target fixture exists; publishing customer/project would mutate the baseline and is prohibited by the handoff. No request, readback, cleanup, or replay was made.",
162
+ "version_family": "8.6",
163
+ "anchor_version": "8.6.26",
164
+ "evidence": [
165
+ {
166
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
167
+ "anchor": "257-260"
168
+ },
169
+ {
170
+ "path": ".scratch/omc-field-type-ladder/research/s26-formula-aggregation.md",
171
+ "anchor": "461-480"
172
+ },
173
+ {
174
+ "path": "scripts/run-s26-aggregation-live.mjs",
175
+ "anchor": "3-19,441-458"
176
+ },
177
+ {
178
+ "path": ".scratch/omc-route-wayfinder/leg6b-s25-reentry-closeout.md",
179
+ "anchor": "25,32-38"
180
+ }
181
+ ],
182
+ "lane": "W5-S26-cross-model"
183
+ },
184
+ {
185
+ "capability": "W6 S27 nested child-table metadata",
186
+ "status": "blocked",
187
+ "scope": "Nested CHILD_TABLE shape, recursive metadata/readback, and safe second fixture boundary.",
188
+ "excluded_or_unsupported_reason": "The design face refused nested CHILD_TABLE with 50000; source lacks an exact recursive payload and source/target child identity contract. No guessed replay or second fixture was attempted.",
189
+ "version_family": "8.6",
190
+ "anchor_version": "8.6.26",
191
+ "evidence": [
192
+ {
193
+ "path": ".scratch/omc-field-type-ladder/research/s27-childtable-depth.md",
194
+ "anchor": "§11; §W6 S27 follow-up lines 356-360; §7.2; §8.2-§8.3"
195
+ },
196
+ {
197
+ "path": ".scratch/omc-field-type-ladder/acceptance/s27-probe-20260910003256725.md",
198
+ "anchor": "nested CHILD_TABLE 50000"
199
+ },
200
+ {
201
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../BizPropertyController.java",
202
+ "anchor": "887-905"
203
+ }
204
+ ],
205
+ "lane": "W6-S27-advanced-childtable"
206
+ },
207
+ {
208
+ "capability": "W6 S27 child relation and Sheet 201 linkage",
209
+ "status": "blocked",
210
+ "scope": "Child WORK_SHEET/MULT_WORK_SHEET relation, linkage options, cycle gates, and Sheet 201 controls.",
211
+ "excluded_or_unsupported_reason": "Exact relation/linkage payload, ownership, target identity, publish/readback, and runtime/view-only semantics are not closed; only scalar child evidence is cleaned.",
212
+ "version_family": "8.6",
213
+ "anchor_version": "8.6.26",
214
+ "evidence": [
215
+ {
216
+ "path": ".scratch/omc-field-type-ladder/research/s27-childtable-depth.md",
217
+ "anchor": "347-354,358-360"
218
+ },
219
+ {
220
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
221
+ "anchor": "213-217"
222
+ },
223
+ {
224
+ "path": ".scratch/omc-field-type-ladder/research/childtable-contract.md",
225
+ "anchor": "v1 scalar boundary and exclusions"
226
+ }
227
+ ],
228
+ "lane": "W6-S27-relation-linkage"
229
+ },
230
+ {
231
+ "capability": "W6 S27 child-to-child mapping",
232
+ "status": "blocked",
233
+ "scope": "Child-to-child mapping payload, persistence owner, publish/readback, and runtime proof.",
234
+ "excluded_or_unsupported_reason": "No exact payload or persistence owner is established and no safe source/target fixture is available; guessed mapping and nested-shape replay are explicitly prohibited.",
235
+ "version_family": "8.6",
236
+ "anchor_version": "8.6.26",
237
+ "evidence": [
238
+ {
239
+ "path": ".scratch/omc-field-type-ladder/research/s27-childtable-depth.md",
240
+ "anchor": "352-354,358-360"
241
+ },
242
+ {
243
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
244
+ "anchor": "215"
245
+ }
246
+ ],
247
+ "lane": "W6-S27-child-to-child"
248
+ },
249
+ {
250
+ "capability": "W6 S28 business-rule node spectrum",
251
+ "status": "static-only",
252
+ "scope": "27-node enum/parser inventory; 23 minimal authorable node dry-gates and EXCEPTION terminal rule documented.",
253
+ "excluded_or_unsupported_reason": "Dry-gate is not runtime semantics. MESSAGE delivery, GET_LIST output, ASSIGN aggregation, DATA_CHECK timing, cross-model BRANCH, failure envelopes, and dev-mode behavior remain unverified.",
254
+ "version_family": "8.6",
255
+ "anchor_version": "8.6.26",
256
+ "evidence": [
257
+ {
258
+ "path": ".scratch/omc-business-rules/research/s28-rule-27-node-spectrum.md",
259
+ "anchor": "§Conclusion; §13.1-§13.2"
260
+ },
261
+ {
262
+ "path": ".scratch/omc-business-rules/research/businessrule-engine-scout.md",
263
+ "anchor": "17-61,125-136"
264
+ },
265
+ {
266
+ "path": "src/businessrule-contract.ts",
267
+ "anchor": "node spectrum contract"
268
+ }
269
+ ],
270
+ "lane": "W6-S28-node-spectrum"
271
+ },
272
+ {
273
+ "capability": "W6 S28 LOGIC_VERIFY residual node",
274
+ "status": "blocked",
275
+ "scope": "Source-backed LOGIC_VERIFY DTO and validation-only node_run_map request readiness.",
276
+ "excluded_or_unsupported_reason": "Runner stopped before authentication because OMC_CLOUDPIVOT_BASE_URL was absent; no HTTP request or runtime refusal/pass was claimed.",
277
+ "version_family": "8.6",
278
+ "anchor_version": "8.6.26",
279
+ "evidence": [
280
+ {
281
+ "path": ".scratch/omc-business-rules/acceptance/s28-spectrum-20260910055124896.md",
282
+ "anchor": "lines 5-24"
283
+ },
284
+ {
285
+ "path": ".scratch/omc-business-rules/research/s28-rule-27-node-spectrum.md",
286
+ "anchor": "79-86"
287
+ },
288
+ {
289
+ "path": "scripts/run-s28-node-spectrum-live.mjs",
290
+ "anchor": "residual LOGIC_VERIFY runner"
291
+ },
292
+ {
293
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../LogicVerifyNode.java",
294
+ "anchor": "19-22,51-80"
295
+ },
296
+ {
297
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../JudgeCondition.java",
298
+ "anchor": "20-57"
299
+ },
300
+ {
301
+ "path": "cp-sources/backend/decompiled-full/launcher-8.6.26/.../VerifyCondition.java",
302
+ "anchor": "20-60"
303
+ }
304
+ ],
305
+ "lane": "W6-S28-logic-verify"
306
+ },
307
+ {
308
+ "capability": "W7 S29 greenfield workflow authoring",
309
+ "status": "executable",
310
+ "scope": "Greenfield model/workflow create, draft update, validate, publish, simulate twice, version/readback matrix, delete gate, physical cascade cleanup.",
311
+ "excluded_or_unsupported_reason": "This status covers the observed greenfield authoring chain only; executed-instance runtime behavior is represented separately as blocked or partial residual OQs.",
312
+ "version_family": "8.6",
313
+ "anchor_version": "8.6.26",
314
+ "evidence": [
315
+ {
316
+ "path": ".scratch/omc-approval-workflow/acceptance/s29-probe-20260910012330184.md",
317
+ "anchor": "greenfield chain and readbacks"
318
+ },
319
+ {
320
+ "path": ".scratch/omc-approval-workflow/acceptance/s29-cleanup-20260910012431077.md",
321
+ "anchor": "cleanup"
322
+ },
323
+ {
324
+ "path": "src/s29-workflow-greenfield-contract.ts",
325
+ "anchor": "15-50"
326
+ },
327
+ {
328
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
329
+ "anchor": "221-232"
330
+ }
331
+ ],
332
+ "lane": "W7-S29-greenfield",
333
+ "tools": [
334
+ "workflow.get_draft",
335
+ "workflow.get_published",
336
+ "workflow.create",
337
+ "workflow.update",
338
+ "workflow.publish",
339
+ "workflow.bindRule",
340
+ "workflow.delete",
341
+ "configure_workflow",
342
+ "workflow.validate"
343
+ ],
344
+ "scopes": [
345
+ "greenfield workflow authoring"
346
+ ]
347
+ },
348
+ {
349
+ "capability": "W7 S29 runtime workflow work-item query (search_workitems)",
350
+ "status": "executable",
351
+ "scope": "GET /api/api/runtime/workflow/search_workitems (WorkItemSearchVO via @ModelAttribute; the server injects userId so the result is the caller's todo) returns PageVO<WorkItemVO>; per item bizObjectId/schemaCode resolved via GET /api/api/runtime/workflow/getBizObjectByWfInstanceId. Wire shape pinned from WorkflowInstanceController.searchWorkItems + WorkflowInstanceRuntimeController.handleSearchWorkItems + RuntimeController.searchWorkItems/WorkflowInstanceFacadeImpl.queryWorkItems. WorkItemSearchVO.filterWorkflowInstanceId is a NOT-equal exclusion on instanceId (BizWorkitemServiceImpl.toSearchWorkItemsCriterion:400-402), so exact instance matching is applied client-side.",
352
+ "excluded_or_unsupported_reason": "Live-proven 2026-09-11: startWorkflow -> workitem.list discovered workItemId 970fe802baba463d97c1d97f3695bb3a + bizObjectId c607b77af4ab4293a1f6ce314ec9327c -> approval submit -> list count 0 and record COMPLETED. Evidence in .scratch/omc-app-management/issues/06-workitem-list-capability.md.",
353
+ "version_family": "8.6",
354
+ "anchor_version": "8.6.26",
355
+ "evidence": [
356
+ {
357
+ "path": "packages/omc-cli/src/lanes/workflow.ts",
358
+ "anchor": "workitem.list"
359
+ },
360
+ {
361
+ "path": ".scratch/omc-app-management/issues/06-workitem-list-capability.md",
362
+ "anchor": "静态取证"
363
+ }
364
+ ],
365
+ "lane": "W7-S29-greenfield",
366
+ "tools": [
367
+ "workitem.list"
368
+ ],
369
+ "scopes": [
370
+ "runtime workflow work-item query"
371
+ ]
372
+ },
373
+ {
374
+ "capability": "workflow participant resolution (org roles/departments)",
375
+ "status": "executable",
376
+ "scope": "GET /api/api/organization/role/list (role groups with children; {id,name,code,roleType,corpId}) and GET /api/api/organization/department/tree (data.departmentList[]; {id,name,code,corpId,parentId}). Used to resolve a workflow participant to a platform-known reference: real published workflows use {Originator}, a JSON array [{\"code\",\"corpId\",\"id\",\"name\",\"type\"}] (type 2=role, 3=user), or a function like FindUserByRole({Originator.OU},\"<roleCode>\",\"random\"). Free text resolves to nobody.",
377
+ "version_family": "8.6",
378
+ "anchor_version": "8.6.26",
379
+ "evidence": [
380
+ {
381
+ "path": ".scratch/omc-context-cost-round4/evidence/real-env-observation.md",
382
+ "anchor": "participant grammar; role/department read APIs"
383
+ },
384
+ {
385
+ "path": "packages/omc-cli/src/lanes/workflow.ts",
386
+ "anchor": "org.role.list / org.department.list"
387
+ }
388
+ ],
389
+ "lane": "W7-S29-greenfield",
390
+ "tools": [
391
+ "org.role.list",
392
+ "org.department.list",
393
+ "org.user.search"
394
+ ],
395
+ "scopes": [
396
+ "workflow participant resolution"
397
+ ]
398
+ },
399
+ {
400
+ "capability": "W7 S29 residual workflow OQs",
401
+ "status": "partial",
402
+ "scope": "14-OQ disposition: 10 closed, OQ-03 partial, and OQ-04/OQ-07/OQ-10/OQ-11 blocked.",
403
+ "excluded_or_unsupported_reason": "No controlled executed workflow instance, recovered type-254 writer, multi-participant runtime fixture, or cross-store correlation evidence was available for the four blocked OQs; OQ-03 has template-side evidence only.",
404
+ "version_family": "8.6",
405
+ "anchor_version": "8.6.26",
406
+ "evidence": [
407
+ {
408
+ "path": "src/s29-workflow-greenfield-contract.ts",
409
+ "anchor": "53-68"
410
+ },
411
+ {
412
+ "path": ".scratch/omc-approval-workflow/research/s29-workflow-second-tier.md",
413
+ "anchor": "§9 OQ-4/OQ-7/OQ-10/OQ-11; §14"
414
+ },
415
+ {
416
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
417
+ "anchor": "224-228"
418
+ }
419
+ ],
420
+ "lane": "W7-S29-residual-OQs"
421
+ },
422
+ {
423
+ "capability": "S25 business-rule enable/invoke/disable/delete lifecycle",
424
+ "status": "executable",
425
+ "scope": "Model switch restoration, enable, custom rule invoke, effect log, disable, delete, version-row cleanup, absence, and dbsweep-clean fixture lifecycle.",
426
+ "excluded_or_unsupported_reason": "The closed capability is the DATA_OP/button lifecycle fixture; broader event dispatch transaction semantics remain outside this item.",
427
+ "version_family": "8.6",
428
+ "anchor_version": "8.6.26",
429
+ "evidence": [
430
+ {
431
+ "path": ".scratch/omc-business-rules/acceptance/s25-enable-20260910001115307.md",
432
+ "anchor": "L1-L8; invoke"
433
+ },
434
+ {
435
+ "path": ".scratch/omc-business-rules/acceptance/s25-cleanup-20260910001140227.md",
436
+ "anchor": "verdict CLEANED; L9 dbsweep"
437
+ },
438
+ {
439
+ "path": ".scratch/omc-business-rules/acceptance/s25-db-entry-evidence-20260910.md",
440
+ "anchor": "43-68"
441
+ },
442
+ {
443
+ "path": ".scratch/omc-route-wayfinder/leg6b-s25-reentry-closeout.md",
444
+ "anchor": "14-18,24"
445
+ }
446
+ ],
447
+ "lane": "S25-rule-lifecycle",
448
+ "tools": [
449
+ "rule.enable",
450
+ "rule.disable",
451
+ "rule.delete",
452
+ "rule.disableMany",
453
+ "configure_rule"
454
+ ],
455
+ "scopes": [
456
+ "enable invoke disable delete"
457
+ ]
458
+ },
459
+ {
460
+ "capability": "S32 RESTFUL business integration",
461
+ "status": "executable",
462
+ "scope": "RESTFUL service/method creation, method list readback, platform invoke against owned echo endpoint, argument round-trip, and service absence cleanup.",
463
+ "excluded_or_unsupported_reason": "The observed invoke chain is covered; old probe attempts left historical service rows requiring the documented orphan-cleanup path, so cleanup evidence must be checked per run. Custom SPI loading is a separate unsupported/blocked boundary.",
464
+ "version_family": "8.6",
465
+ "anchor_version": "8.6.26",
466
+ "evidence": [
467
+ {
468
+ "path": ".scratch/omc-route-wayfinder/acceptance/s32-restful-probe-20260910042217789.md",
469
+ "anchor": "Facts; Steps"
470
+ },
471
+ {
472
+ "path": ".scratch/omc-route-wayfinder/acceptance/s32-restful-cleanup-20260910042256808.md",
473
+ "anchor": "serviceAbsent; dbSweep residuals"
474
+ },
475
+ {
476
+ "path": ".scratch/omc-route-wayfinder/research/s32-b2-extension-debug.md",
477
+ "anchor": "124-145"
478
+ },
479
+ {
480
+ "path": "src/s32-restful-contract.ts",
481
+ "anchor": "RESTFUL contract"
482
+ }
483
+ ],
484
+ "lane": "S32-business-integration"
485
+ },
486
+ {
487
+ "capability": "S32 custom SPI extension loading and BIZ_ACTION runtime",
488
+ "status": "blocked",
489
+ "scope": "Custom protocol SPI discovery, extension deployment/loading, facade injection, adapter binding, and invoke.",
490
+ "excluded_or_unsupported_reason": "Runtime loading depends on startup ServiceLoader/Redis and closed platform context; no runtime-ready custom SPI or BIZ_ACTION proof exists. Official empty SPI and @SetValue assumptions cannot be treated as registration.",
491
+ "version_family": "8.6",
492
+ "anchor_version": "8.6.26",
493
+ "evidence": [
494
+ {
495
+ "path": ".scratch/omc-route-wayfinder/research/s32-b2-extension-debug.md",
496
+ "anchor": "109-122; 146-161"
497
+ },
498
+ {
499
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
500
+ "anchor": "68-69,233-238"
501
+ },
502
+ {
503
+ "path": ".scratch/omc-route-wayfinder/leg6b-s25-reentry-closeout.md",
504
+ "anchor": "30"
505
+ }
506
+ ],
507
+ "lane": "S32-custom-extension"
508
+ },
509
+ {
510
+ "capability": "M2 runtime data-entry field-value projection",
511
+ "status": "partial",
512
+ "scope": "Runtime form save/list/delete/absence transport and known form/load versus list projection boundary.",
513
+ "excluded_or_unsupported_reason": "Save/delete/absence are observed, but custom field value authoritative list readback is null and OpenAPI v3 is not exposed; form/load, sorting, and runtime semantics remain open.",
514
+ "version_family": "8.6",
515
+ "anchor_version": "8.6.26",
516
+ "evidence": [
517
+ {
518
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
519
+ "anchor": "133-135,208-209"
520
+ },
521
+ {
522
+ "path": ".scratch/omc-route-wayfinder/research/m2-null-rootcause.md",
523
+ "anchor": "root cause and form/load authority"
524
+ },
525
+ {
526
+ "path": ".scratch/omc-route-wayfinder/research/s30-existing-contract-source-rescout.md",
527
+ "anchor": "231-236"
528
+ }
529
+ ],
530
+ "lane": "M2-runtime-data"
531
+ },
532
+ {
533
+ "capability": "S30 existing-contract source rescout",
534
+ "status": "static-only",
535
+ "scope": "Source-anchored reconciliation of field/form/data/business-rule contract boundaries and residual live questions.",
536
+ "excluded_or_unsupported_reason": "This is source reconciliation, not a new live acceptance; Online JS runtime, BIZ_ACTION/SPI, M2 projection, and mixed-version behavior remain open.",
537
+ "version_family": "8.6",
538
+ "anchor_version": "8.6.26",
539
+ "evidence": [
540
+ {
541
+ "path": ".scratch/omc-route-wayfinder/research/s30-existing-contract-source-rescout.md",
542
+ "anchor": "198-236"
543
+ },
544
+ {
545
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
546
+ "anchor": "90,207-208"
547
+ }
548
+ ],
549
+ "lane": "S30-contract-rescout"
550
+ },
551
+ {
552
+ "capability": "S31 source-scout accelerator",
553
+ "status": "static-only",
554
+ "scope": "Offline source-scanning acceleration and report generation.",
555
+ "excluded_or_unsupported_reason": "Conditions were completed, but live/CDP/database snapshot execution was not performed; this is not environment coverage.",
556
+ "version_family": "8.6",
557
+ "anchor_version": "8.6.26",
558
+ "evidence": [
559
+ {
560
+ "path": ".scratch/omc-route-wayfinder/research/s31-scout-accelerator.json",
561
+ "anchor": "report"
562
+ },
563
+ {
564
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
565
+ "anchor": "91"
566
+ }
567
+ ],
568
+ "lane": "S31-scout"
569
+ },
570
+ {
571
+ "capability": "Inline backend coding and EXECUTE_CODE/ONLINE_DEVELOP rule surfaces",
572
+ "status": "unsupported",
573
+ "scope": "CloudPivot inline backend code execution and development-mode rule nodes.",
574
+ "excluded_or_unsupported_reason": "Permanently outside the delivery boundary; backend logic must come from the two-开 extension package and be consumed through the approved service registry.",
575
+ "version_family": "8.6",
576
+ "anchor_version": "8.6.26",
577
+ "evidence": [
578
+ {
579
+ "path": "CONTEXT.md",
580
+ "anchor": "97-103"
581
+ },
582
+ {
583
+ "path": ".scratch/omc-route-wayfinder/map.md",
584
+ "anchor": "34-39,93-95"
585
+ },
586
+ {
587
+ "path": ".scratch/omc-business-rules/research/s28-rule-27-node-spectrum.md",
588
+ "anchor": "30-32"
589
+ }
590
+ ],
591
+ "lane": "boundary-unsupported"
592
+ },
593
+ {
594
+ "capability": "App publish, environment release, and production mutation",
595
+ "status": "unsupported",
596
+ "scope": "Application publish and production/environment-wide release operations.",
597
+ "excluded_or_unsupported_reason": "Permanently outside the usable-model/configuration ladder and this M1 acceptance wave; no manifest item may imply these operations are covered.",
598
+ "version_family": "8.6",
599
+ "anchor_version": "8.6.26",
600
+ "evidence": [
601
+ {
602
+ "path": "CONTEXT.md",
603
+ "anchor": "70-80"
604
+ },
605
+ {
606
+ "path": ".scratch/omc-route-wayfinder/map.md",
607
+ "anchor": "96-102"
608
+ }
609
+ ],
610
+ "lane": "boundary-unsupported"
611
+ },
612
+ {
613
+ "capability": "OCR and ELECTRONIC_SIGN field families",
614
+ "status": "unsupported",
615
+ "scope": "Field types OCR(250) and ELECTRONIC_SIGN(251).",
616
+ "excluded_or_unsupported_reason": "Survey-noted and explicitly outside the current M1 close; they are enumerated here to make the unsupported boundary explicit rather than silently omitted.",
617
+ "version_family": "8.6",
618
+ "anchor_version": "8.6.26",
619
+ "evidence": [
620
+ {
621
+ "path": ".scratch/omc-route-wayfinder/map.md",
622
+ "anchor": "98-99"
623
+ },
624
+ {
625
+ "path": ".scratch/omc-field-type-ladder/research/type-matrix.md",
626
+ "anchor": "field family survey"
627
+ }
628
+ ],
629
+ "lane": "boundary-unsupported"
630
+ },
631
+ {
632
+ "capability": "Field family full chain: create→publish→form draft→form publish→control binding readback (seven live-accepted families)",
633
+ "status": "executable",
634
+ "scope": "Full per-family chain for text-extension, people-department, address-attachment, dictionary-enum, relevance (propertyTypes 9/11/16 with resolved schemaCode/queryCode control options per fix 28d6f80), formula (EXPRESSION-only; persistent=true-only; resultType SHORT_TEXT(0)/NUMERICAL(2); operator allowlist excludes assignment/define per D1), and child-table (scalar-column allow-list only per D2; custom-sort gate per D3; subSchema shape tolerance per D4).",
635
+ "excluded_or_unsupported_reason": "Numeric-logical (rung 02) and date-time (rung 03) families ride superseded lineage and are carried as a separate partial item. Nested child-table, aggregation formulas, and cross-model scope are covered by their own manifest items.",
636
+ "version_family": "8.6",
637
+ "anchor_version": "8.6.26",
638
+ "evidence": [
639
+ {
640
+ "path": "src/families/registry.ts",
641
+ "anchor": "56-64 registration lines; superseded (live accepted) markers"
642
+ },
643
+ {
644
+ "path": ".scratch/omc-field-type-ladder/acceptance/ticket25-live-master-publish-hold-20260907081006214-e83c98c1-56c4-42bc-b11c-af18c5cc4a12.json",
645
+ "anchor": "people-department full-chain hold"
646
+ },
647
+ {
648
+ "path": ".scratch/omc-field-type-ladder/acceptance/ticket26-live-master-publish-hold-20260907155612711-546e5629-a9b1-4b91-b20b-03eadc512617.json",
649
+ "anchor": "address-attachment full-chain hold"
650
+ },
651
+ {
652
+ "path": ".scratch/omc-field-type-ladder/issues/09-relevance-live-stage6-fix.md",
653
+ "anchor": "Status: done — live master-publish-hold completed on ticket30-relevance @ 28d6f80"
654
+ },
655
+ {
656
+ "path": ".scratch/omc-field-type-live/acceptance/formula-execute-20260908070129070.md",
657
+ "anchor": "formula field-create live PASS"
658
+ },
659
+ {
660
+ "path": ".scratch/omc-field-type-live/acceptance/childtable-execute-20260908070635135.md",
661
+ "anchor": "child-table field-create live PASS (parent + 2 scalar sub-columns)"
662
+ },
663
+ {
664
+ "path": ".scratch/omc-route-wayfinder/leg2-live-acceptance.md",
665
+ "anchor": "L1 formula controls-89 readback + formulaConfig fidelity; L2 Sheet201 readback"
666
+ },
667
+ {
668
+ "path": ".scratch/omc-field-type-ladder/research/formula-contract.md",
669
+ "anchor": "§7 EXPRESSION-only v1 scope (D1)"
670
+ },
671
+ {
672
+ "path": ".scratch/omc-field-type-ladder/research/childtable-contract.md",
673
+ "anchor": "v1 scalar boundary and exclusions (D2-D4)"
674
+ }
675
+ ],
676
+ "lane": "field-families",
677
+ "tools": [
678
+ "field.list",
679
+ "field.create",
680
+ "field.update",
681
+ "field.publish",
682
+ "field.delete"
683
+ ],
684
+ "scopes": [
685
+ "create publish readback"
686
+ ]
687
+ },
688
+ {
689
+ "capability": "Numeric-logical and date-time field families full chain",
690
+ "status": "partial",
691
+ "scope": "Same create→publish→form draft→form publish→control binding readback chain for the numeric-logical (rung 02) and date-time (rung 03) families.",
692
+ "excluded_or_unsupported_reason": "The registry marks both families superseded lineage and no per-family live acceptance artifact was located in the repository; promoting them to executable by inference from other families' live chains would overstate the evidence.",
693
+ "version_family": "8.6",
694
+ "anchor_version": "8.6.26",
695
+ "evidence": [
696
+ {
697
+ "path": "src/families/registry.ts",
698
+ "anchor": "57-58 rung 02/03 superseded-lineage markers"
699
+ },
700
+ {
701
+ "path": ".scratch/omc-field-type-ladder/issues/02-numeric-logical-family.md",
702
+ "anchor": "family issue lineage"
703
+ },
704
+ {
705
+ "path": ".scratch/omc-field-type-ladder/issues/03-date-time-family.md",
706
+ "anchor": "family issue lineage"
707
+ }
708
+ ],
709
+ "lane": "field-families"
710
+ },
711
+ {
712
+ "capability": "G1 field-level data rules (bizdatarule) lifecycle",
713
+ "status": "partial",
714
+ "scope": "List by schemaCode/dataRuleType, create, update, delete of 8.6.26 field-level data rules (DataRuleType 1 CHECK / 2 CALCULATE|stitch / 3 DISPLAY / 4 required / 5 read-only), options JSON-string encoding, and authoritative list readback/absence.",
715
+ "excluded_or_unsupported_reason": "EXTENSION_RULE (8) and CALCULATE AGGREGATION grading are out of scope; runtime rule evaluation and the form attributes[].historyOpt design snapshot are not mutated by this lane.",
716
+ "version_family": "8.6",
717
+ "anchor_version": "8.6.26",
718
+ "evidence": [
719
+ {
720
+ "path": "packages/omc-cli/src/lanes/datarule.ts",
721
+ "anchor": "handler list/create/update/delete + options gate"
722
+ },
723
+ {
724
+ "path": ".scratch/omc-app-management/research/configuration-gap-report.md",
725
+ "anchor": "§3 P0/G1; §5.1 Spec A"
726
+ }
727
+ ],
728
+ "lane": "G1-datarule",
729
+ "tools": [
730
+ "datarule.list",
731
+ "datarule.create",
732
+ "datarule.update",
733
+ "datarule.delete"
734
+ ],
735
+ "scopes": [
736
+ "create update delete readback"
737
+ ]
738
+ },
739
+ {
740
+ "capability": "Model management lifecycle (create/publish/physical delete/absence)",
741
+ "status": "executable",
742
+ "scope": "Model create, publish, physically_delete bound to the application tree-node id (tree id ≠ h_biz_schema id; passing schema id yields errcode 0 silent non-delete), unique-match tree id auto-resolution, async delete settle (h_app_delete_history RUN→END), 10011 exact absence readback, dbsweep-authoritative confirmation.",
743
+ "excluded_or_unsupported_reason": "Delete authority is the owned-fixture governed path; app publish and environment-wide release remain unsupported boundary items. Child cascade semantics outside field→model staging were not generalized.",
744
+ "version_family": "8.6",
745
+ "anchor_version": "8.6.26",
746
+ "evidence": [
747
+ {
748
+ "path": ".scratch/omc-route-wayfinder/leg2-closeout.md",
749
+ "anchor": "wire facts 6 (tree id resolution, async settle, absence authority)"
750
+ },
751
+ {
752
+ "path": ".scratch/omc-route-wayfinder/leg4-closeout.md",
753
+ "anchor": "wire fact 5 (tree node id ≠ schema id, errcode 0 silent non-delete)"
754
+ },
755
+ {
756
+ "path": ".scratch/omc-usable-model-ladder/acceptance/ladder-evidence-rollup.md",
757
+ "anchor": "rung 0 model create + rung 5 composite four-level cleanup (10011 absence)"
758
+ },
759
+ {
760
+ "path": ".scratch/cloudpivot-complete-capability/ticket02-model-live-final.json",
761
+ "anchor": "ticket02 model series live final"
762
+ }
763
+ ],
764
+ "lane": "model-management",
765
+ "tools": [
766
+ "model.create",
767
+ "model.update",
768
+ "model.delete",
769
+ "model.deleteMany",
770
+ "model.setSummary",
771
+ "configure_model",
772
+ "model.list",
773
+ "model.inspect"
774
+ ],
775
+ "scopes": [
776
+ "create publish physical delete absence read list inspect"
777
+ ]
778
+ },
779
+ {
780
+ "capability": "Form publish chain (draft-first → publish → publishedHtmlJson readback)",
781
+ "status": "executable",
782
+ "scope": "bizsheet draft-first update (draft side only, published side null) → publish literal promotion → publishedHtmlJson authoritative readback; gate-key subset tolerance on readback; controls formulaConfig double-layer JSON literal fidelity; designer-standard scaffolding composition (Title 203 + system row 101/104/100 + group 200 + business rows).",
783
+ "excluded_or_unsupported_reason": "Design-time publication writes no bizsheet history rows on first publish (history only on subsequent publishes); designer required-rule editor non-persistence against literal requiredFormula is pinned as a delivery rule, not a covered capability.",
784
+ "version_family": "8.6",
785
+ "anchor_version": "8.6.26",
786
+ "evidence": [
787
+ {
788
+ "path": ".scratch/omc-route-wayfinder/leg2-closeout.md",
789
+ "anchor": "wire fact 1 (draft-first full pass, literal promotion, formulaConfig fidelity)"
790
+ },
791
+ {
792
+ "path": ".scratch/omc-route-wayfinder/leg2-live-acceptance.md",
793
+ "anchor": "L1 formula chain incl. controls-89 readback"
794
+ },
795
+ {
796
+ "path": ".scratch/omc-usable-model-ladder/acceptance/ladder-evidence-rollup.md",
797
+ "anchor": "rungs 3-4 form draft/publish + ticket14 scaffolding amendment"
798
+ },
799
+ {
800
+ "path": ".scratch/omc-usable-model-ladder/acceptance/ticket12-live-execute-20260904085317371-398bbb5e-cff9-4a50-b4ce-3ccdb45f4cf2.json",
801
+ "anchor": "form-publish ceiling run"
802
+ },
803
+ {
804
+ "path": ".scratch/omc-usable-model-ladder/acceptance/ticket11-live-execute-20260904051842665-cb02ad42-ee17-47ef-beb8-28f9233746d7.json",
805
+ "anchor": "form-draft + control config run"
806
+ }
807
+ ],
808
+ "lane": "form-publish-chain",
809
+ "tools": [
810
+ "form.get",
811
+ "form.draft",
812
+ "form.publish",
813
+ "configure_form"
814
+ ],
815
+ "scopes": [
816
+ "publishedHtmlJson authoritative readback",
817
+ "draft publish publishedHtmlJson readback"
818
+ ]
819
+ },
820
+ {
821
+ "capability": "B1 dead-state rules and B1.2 CRUD/conditional node graphs",
822
+ "status": "executable",
823
+ "scope": "B1 minimal dead-state DATA_OP rule (START→END, compile→save→readback≡intent, never enabled) live-accepted; B1.2 CRUD + QUERY + BRANCH conditional node graphs clean through the node_run_map dry-gate (empty deadCycleRunMapList/notExistPropertyObjectList/notExistOrgObjectList) with negative-control discrimination; D14 wire facts (BRANCH targetObjectCode, literal schemaCode inputParam, QUERY inputParam).",
824
+ "excluded_or_unsupported_reason": "Enabled-rule runtime dispatch is the separate S25 item; simple-graph cross-model BRANCH conditions fail the dry-gate (leg4 wire fact 7) — same-schema conditions only; MESSAGE delivery, GET_LIST output, and ASSIGN aggregation remain static-only per the S28 item.",
825
+ "version_family": "8.6",
826
+ "anchor_version": "8.6.26",
827
+ "evidence": [
828
+ {
829
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
830
+ "anchor": "leg1 B1 execute live PASS; D8; D14"
831
+ },
832
+ {
833
+ "path": ".scratch/omc-business-rules/acceptance/b1-dead-live-20260908044544040.md",
834
+ "anchor": "B1 dead-state live acceptance"
835
+ },
836
+ {
837
+ "path": ".scratch/omc-route-wayfinder/issues/impl-04-businessrule-contract.md",
838
+ "anchor": "B1 contract promotion scope"
839
+ },
840
+ {
841
+ "path": ".scratch/omc-route-wayfinder/leg2-closeout.md",
842
+ "anchor": "terminal 4 (B1.2 CRUD dead-state map live PASS, node_run_map clean)"
843
+ },
844
+ {
845
+ "path": ".scratch/omc-route-wayfinder/leg3-closeout.md",
846
+ "anchor": "live#4 OTHER+targetConditionGroups accepted, negative control"
847
+ },
848
+ {
849
+ "path": ".scratch/omc-route-wayfinder/leg4-closeout.md",
850
+ "anchor": "wire fact 7 cross-model BRANCH boundary"
851
+ },
852
+ {
853
+ "path": "src/businessrule-contract.ts",
854
+ "anchor": "node spectrum + dry-gate contract"
855
+ }
856
+ ],
857
+ "lane": "B1-businessrule",
858
+ "tools": [
859
+ "rule.save",
860
+ "rule.node.update"
861
+ ],
862
+ "scopes": [
863
+ "dead-state CRUD conditional node graphs"
864
+ ]
865
+ },
866
+ {
867
+ "capability": "C-plane minimal workflow template lifecycle",
868
+ "status": "executable",
869
+ "scope": "Minimal workflow template via /api/workflow/publish: independent DRAFT→PUBLISH (no model publish prerequisite), versioned readback (version number in errmsg; get_published v1/PUBLISH/four activities), delete with list-association unbind (303024 → POST /api/api/app/query/update clears associationCode), 401001 exact absence after delete.",
870
+ "excluded_or_unsupported_reason": "judge/exit normalization, SIMULATIVE semantics, WORKFLOW trigger dispatch points, and COMMENT(7)/APPROVAL_INFO(254) runtime management remain open per leg3; executed-instance behavior is the separate W7 S29 pair.",
871
+ "version_family": "8.6",
872
+ "anchor_version": "8.6.26",
873
+ "evidence": [
874
+ {
875
+ "path": ".scratch/omc-route-wayfinder/leg3-closeout.md",
876
+ "anchor": "live#1; wire fact 1 (publish independence, 303024 unbind, 401001 absence)"
877
+ },
878
+ {
879
+ "path": ".scratch/omc-business-rules/research/workflow-engine-scout.md",
880
+ "anchor": "template DTO, version lifecycle, publish contract, live#1 results"
881
+ }
882
+ ],
883
+ "lane": "C-workflow-template"
884
+ },
885
+ {
886
+ "capability": "Online JS composer (onlinejs.compose, draftHtmlJson customScript element)",
887
+ "status": "executable",
888
+ "scope": "onlinejs.compose reads the existing draftHtmlJson, JSON-parses the COMPLETE layout element array and PRESERVES the platform template: the four-element skeleton (style + beforeCustomScript + customScript + afterCustomScript) is kept verbatim when present (attrs included) and filled with platform defaults when missing, every layout/control element is preserved, and ONLY the customScript element is rebuilt canonically as {tagName:'script', id:'customScript', innerHTML:<source>, attrs:[]} (the designer calls e.attrs.some(...), so a missing tagName/object attrs breaks the Online JS editor with 't.some is not a function'). It then drives bizsheet/update + bizsheet/publish (force:true) and reads publishedHtmlJson back verbatim with a SHA-256 fingerprint. Never writes a partial [customScript]-only array (issue 11 regression).",
889
+ "excluded_or_unsupported_reason": "Covered scope is the composer + bizsheet html chain on the owned fixture (live#2 SHA-256 equal, zero residue); portal-side rendering and page-level runtime behavior are outside design-face evidence.",
890
+ "version_family": "8.6",
891
+ "anchor_version": "8.6.26",
892
+ "evidence": [
893
+ {
894
+ "path": "packages/omc-cli/src/lanes/online-js.ts",
895
+ "anchor": "composer fidelity evidence"
896
+ },
897
+ {
898
+ "path": ".scratch/omc-route-wayfinder/leg4-closeout.md",
899
+ "anchor": "wire fact 6 (parsed-object JSON members, empty-state, customScript slot)"
900
+ },
901
+ {
902
+ "path": "packages/omc-cli/test/ticket-73-onlinejs-template-fidelity.test.ts",
903
+ "anchor": "composer fidelity evidence"
904
+ }
905
+ ],
906
+ "lane": "online-js",
907
+ "tools": [
908
+ "onlinejs.compose"
909
+ ],
910
+ "scopes": [
911
+ "draft promotion publish verbatim readback"
912
+ ]
913
+ },
914
+ {
915
+ "capability": "M2 runtime data write and authoritative readback (form/save + form/load)",
916
+ "status": "executable",
917
+ "scope": "POST /api/api/runtime/form/save with nested data persists correctly (errcode 0, objectId returned); GET form/load (bizObject.data) is the authoritative custom-field readback; list projection boundary pinned (custom fields keys-present-values-null, system fields owner/createdTime/name valued).",
918
+ "excluded_or_unsupported_reason": "List-plane projection semantics (which fields project, ordering, pagination) remain open and are carried by the existing M2 partial item; OpenAPI v3 face is not exposed (405).",
919
+ "version_family": "8.6",
920
+ "anchor_version": "8.6.26",
921
+ "evidence": [
922
+ {
923
+ "path": ".scratch/omc-route-wayfinder/leg2-closeout.md",
924
+ "anchor": "terminal 3 (authoritative YES) + wire fact 3"
925
+ },
926
+ {
927
+ "path": ".scratch/omc-route-wayfinder/research/m2-null-rootcause.md",
928
+ "anchor": "root cause: read face; form/load authority (RuntimeController.java:1510-1549)"
929
+ },
930
+ {
931
+ "path": ".scratch/omc-route-wayfinder/leg3-closeout.md",
932
+ "anchor": "wire fact 5 (M2 re-verification: list system fields valued, custom keys-empty)"
933
+ }
934
+ ],
935
+ "lane": "M2-runtime-data",
936
+ "tools": [
937
+ "data.load",
938
+ "data.save",
939
+ "data.update",
940
+ "data.delete",
941
+ "data.submit"
942
+ ],
943
+ "scopes": [
944
+ "authoritative readback form load",
945
+ "write authoritative readback form save"
946
+ ]
947
+ },
948
+ {
949
+ "capability": "M2 runtime data submit (runtime/form/submit, WorkItemSubmitVO)",
950
+ "status": "static-only",
951
+ "scope": "POST /api/api/runtime/form/submit — WorkItemSubmitVO (extends WorkItemDataVO) with formType in {1,2}. formType=2 -> submitBizSheet sets sequenceStatus=COMPLETED (no workflow, returns objectId/schemaCode/formCode); formType=1 + workflowCode -> startWorkflow (returns workflowInstanceId/workItemId). Wire shape pinned from FormRuntimeController.java:1041-1081 + submitBizSheet:267-276.",
952
+ "excluded_or_unsupported_reason": "Live verification requires the user's authorized environment — this item is contract-tested only and live PASS will be recorded in a follow-up acceptance session.",
953
+ "version_family": "8.6",
954
+ "anchor_version": "8.6.26",
955
+ "evidence": [
956
+ {
957
+ "path": "omc-planning/omc-mcp-interface-evidence.md",
958
+ "anchor": "Issue 13 — data.submit"
959
+ }
960
+ ],
961
+ "lane": "M2-runtime-data"
962
+ },
963
+ {
964
+ "capability": "W7 workflow endEventHandler business-rule binding (workflow.bindRule)",
965
+ "status": "static-only",
966
+ "scope": "workflow.bindRule merges { bizActions:[<ruleCode>], bizActionType:'BIZ_RULE' } into the named event handler (default endEventHandler) via /api/api/workflow/update, without overwriting the rest of the template. ActivityEventHandler shape pinned from WorkflowTemplateModel.java:48-66 and ActivityEventHandler.java:21-55. Designer face pinned from admin-cracked/95768.c52b301b/deobfuscated.js:22243-22803.",
967
+ "excluded_or_unsupported_reason": "Live verification requires the user's authorized environment — this item is contract-tested only and live PASS will be recorded in a follow-up acceptance session.",
968
+ "version_family": "8.6",
969
+ "anchor_version": "8.6.26",
970
+ "evidence": [
971
+ {
972
+ "path": "omc-planning/omc-mcp-interface-evidence.md",
973
+ "anchor": "Issue 14 — workflow.bindRule"
974
+ }
975
+ ],
976
+ "lane": "W7-S29-greenfield"
977
+ },
978
+ {
979
+ "capability": "B2 service and method registration face (create/readback/delete) with the designer structured write face (RESTFUL, DATA_SQL, DATA_TABLE, SAP, KAFKA, SOAP; serviceConfig plaintext, methodConfig AES-128-ECB, SOAP methods WSDL-discovered)",
980
+ "status": "executable",
981
+ "scope": "Gateway double-prefix /api/api/bizservice/* face: service create/get_by_code/delete with exact absence (repeatedly PASS); method create with integer-index parameter model (bizPropertyType:0) authoritative success, OQ-B2-param closed; get_by_code returns 10005 for the omc_probe adapter service; custom-adapter method list readback 500009/empty (known boundary); h_biz_service_method cleanup keyed by serviceCode column.",
982
+ "excluded_or_unsupported_reason": "Extension loading/enable and BIZ_ACTION invoke remain blocked (separate S32 custom-extension item); RESTFUL protocol face is the separate S32 executable item.",
983
+ "version_family": "8.6",
984
+ "anchor_version": "8.6.26",
985
+ "evidence": [
986
+ {
987
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
988
+ "anchor": "leg1 B2 registration live PASS; method-create OQ-B2-param; D7; D9"
989
+ },
990
+ {
991
+ "path": ".scratch/omc-business-rules/acceptance/b2-registration-probe-20260908075425982.md",
992
+ "anchor": "registration-face probe series"
993
+ },
994
+ {
995
+ "path": ".scratch/omc-route-wayfinder/leg2-closeout.md",
996
+ "anchor": "terminal 5 + wire fact 5 (integer index, 10005, 500009)"
997
+ },
998
+ {
999
+ "path": ".scratch/omc-route-wayfinder/issues/impl-06-backend-extension-scout.md",
1000
+ "anchor": "B2 scout scope and fixture contract"
1001
+ },
1002
+ {
1003
+ "path": ".scratch/omc-route-wayfinder/research/b2-deploy-facts.md",
1004
+ "anchor": "deployment-face facts"
1005
+ }
1006
+ ],
1007
+ "lane": "B2-registration",
1008
+ "tools": [
1009
+ "service.get",
1010
+ "service.register",
1011
+ "service.update",
1012
+ "method.get",
1013
+ "method.create",
1014
+ "method.update",
1015
+ "method.delete",
1016
+ "service.delete",
1017
+ "service.category.list",
1018
+ "service.category.create",
1019
+ "service.category.update",
1020
+ "service.category.delete",
1021
+ "service.dbconnpool.list",
1022
+ "service.dbconnpool.create",
1023
+ "service.dbconnpool.update",
1024
+ "service.dbconnpool.delete",
1025
+ "service.adapter_config",
1026
+ "service.table_list",
1027
+ "service.table_sql"
1028
+ ],
1029
+ "scopes": [
1030
+ "readback",
1031
+ "create readback delete",
1032
+ "update readback",
1033
+ "method readback",
1034
+ "method create readback",
1035
+ "method update readback",
1036
+ "method delete readback",
1037
+ "create readback",
1038
+ "delete readback"
1039
+ ]
1040
+ },
1041
+ {
1042
+ "capability": "B2 business-integration import/export face (ZIP package: export via multipart upload + check + governed import; one-shot refIds; secret-free tool responses)",
1043
+ "status": "executable",
1044
+ "scope": "Gateway double-prefix /api/api/bizservice/service/{export,check,import} + /api/api/runtime/query/upload_file face: export answers a ZIP stream (manifest.json + version.md); upload is multipart field `file` answering a plain-string refId; check/import consume one refId each (one-shot by platform design); import is a governed write with authoritative get_by_code + method-list readback; tool responses carry a secret-free package summary (auth parameterlist values masked, zip referenced by path+sha256 only).",
1045
+ "evidence": [
1046
+ {
1047
+ "path": "packages/omc-cli/src/lanes/b2-registration.ts",
1048
+ "anchor": "service.export / service.check / service.import governed faces"
1049
+ },
1050
+ {
1051
+ "path": "packages/omc-cli/src/zip.ts",
1052
+ "anchor": "central-directory ZIP reader (data-descriptor safe) + stored-entry writer"
1053
+ },
1054
+ {
1055
+ "path": "ticket 106 (8.6.26 source): BizServiceIEController.java:110-148,196-261,329-382 (export ZIP / check / import); QueryRuntimeController.java:2414-2428 + FileOperateHelper2.java:24-57 (multipart upload, plain-string refId, one-shot); BizServiceIEFacadeImpl.java:135-148,168-260 (verbatim package, no pool rows, 309008/580001)",
1056
+ "anchor": "IE chain source evidence"
1057
+ }
1058
+ ],
1059
+ "lane": "B2-registration",
1060
+ "tools": [
1061
+ "service.export",
1062
+ "service.check",
1063
+ "service.import"
1064
+ ],
1065
+ "scopes": [
1066
+ "export readback",
1067
+ "readback",
1068
+ "import readback"
1069
+ ]
1070
+ },
1071
+ {
1072
+ "capability": "B2 business-integration designer test face (method.test: governed one-shot real execution with parameter-face preflight and zero-config-write proof)",
1073
+ "status": "executable",
1074
+ "scope": "Gateway double-prefix /api/api/bizservice/method/service_test face: body {code, serviceCode, testInputParametersMap Map<String,Object>}; answers the inner {success,msg,data:<adapter result>}. Real execution semantics (RESTFUL fires real HTTP; DATA_SQL/DATA_TABLE run real JDBC behind the platform sqlConfig switch); zero config writes (chain reads h_biz_service/h_biz_service_method, writes async integration logs only); tool enforces the declared parameter face fail-closed, refuses registration shells and SAP/KAFKA (no runtime evidence on this face), and re-reads the method row to prove the config survived.",
1075
+ "evidence": [
1076
+ {
1077
+ "path": "packages/omc-cli/src/lanes/b2-registration.ts",
1078
+ "anchor": "method.test governed face (adapter gate, shell gate, parameter-face gate, configUnchanged readback)"
1079
+ },
1080
+ {
1081
+ "path": "ticket 107 (8.6.26 source): BizServiceMethodController.java:398-412; BizServiceMethodVO.java:14-35; BizServiceFacadeImpl.java:426-464; BizBusServiceImpl.java:190-226,403-414; adapter runtimes (RESTFUL/DATA_SQL/DATA_TABLE/SOAP/INTERNAL); SAP/KAFKA not evidenced",
1082
+ "anchor": "service_test chain evidence"
1083
+ }
1084
+ ],
1085
+ "lane": "B2-registration",
1086
+ "tools": [
1087
+ "method.test"
1088
+ ],
1089
+ "scopes": [
1090
+ "test readback"
1091
+ ]
1092
+ },
1093
+ {
1094
+ "capability": "Environment governance (discovery/fingerprint/compat/dbsweep/license renewal)",
1095
+ "status": "executable",
1096
+ "scope": "Environment discovery; version fingerprint and compatibility check; dbsweep six-table DB cross-check as zero-residue baseline authority (ticket 12 merged into baseline/cleanup); orphan precise-delete paths for service and sheet rows (D11, productized as orphan-cleanup); test-environment license renewal method D13 (Redis db2 tempLicense + license key purge → launcher restart → temporary license rebuilt within ~110s).",
1097
+ "excluded_or_unsupported_reason": "D13 is scoped to the test environment's temporary-license mechanism; production license management and clock manipulation remain prohibited (D12).",
1098
+ "version_family": "8.6",
1099
+ "anchor_version": "8.6.26",
1100
+ "evidence": [
1101
+ {
1102
+ "path": ".scratch/omc-route-wayfinder/leg2-closeout.md",
1103
+ "anchor": "terminal 6; wire facts 7-8 (D13, API-invisible orphan types)"
1104
+ },
1105
+ {
1106
+ "path": ".scratch/omc-route-wayfinder/longrun-ledger.md",
1107
+ "anchor": "D11, D12, D13 decision log"
1108
+ },
1109
+ {
1110
+ "path": "src/dbsweep.ts",
1111
+ "anchor": "six-table sweep implementation"
1112
+ },
1113
+ {
1114
+ "path": "src/orphan-cleanup.ts",
1115
+ "anchor": "D11 productized orphan cleanup"
1116
+ },
1117
+ {
1118
+ "path": ".scratch/omc-route-wayfinder/issues/12-baseline-sweep-db-crosscheck.md",
1119
+ "anchor": "ticket 12 cross-check scope"
1120
+ }
1121
+ ],
1122
+ "lane": "environment-governance",
1123
+ "tools": [
1124
+ "discover_environment",
1125
+ "environment.fingerprint"
1126
+ ],
1127
+ "scopes": [
1128
+ "discovery fingerprint",
1129
+ "fingerprint"
1130
+ ]
1131
+ },
1132
+ {
1133
+ "capability": "Cross-plane end-to-end delivery (output declaration domain: DELIVERED→VERIFIED→CLEANED)",
1134
+ "status": "executable",
1135
+ "scope": "Coordinator-path end-to-end delivery across model/field/form/Online JS/rule/service planes for the output declaration domain, judged DELIVERED→VERIFIED→CLEANED with terminal zero-residue cleanup and post-baseline allPresent; prohibited-call scan green.",
1136
+ "excluded_or_unsupported_reason": "Raw lr4-live4-{build,verify,cleanup} report JSONs referenced by the leg4 closeout are not retained under .scratch; the committed closeout record and spec/scenario sources are the durable evidence. Specialist-agent delivery paths ride M6 evidence; B2-dependent invoke faces remain blocked.",
1137
+ "version_family": "8.6",
1138
+ "anchor_version": "8.6.26",
1139
+ "evidence": [
1140
+ {
1141
+ "path": ".scratch/omc-route-wayfinder/leg4-closeout.md",
1142
+ "anchor": "live#4 PASS; terminal judgement 4 and 7"
1143
+ },
1144
+ {
1145
+ "path": ".scratch/omc-route-wayfinder/research/output-declaration-e2e-spec.md",
1146
+ "anchor": "S13 end-to-end spec"
1147
+ },
1148
+ {
1149
+ "path": "src/output-declaration-e2e-scenario.ts",
1150
+ "anchor": "scenario implementation (5 tests)"
1151
+ }
1152
+ ],
1153
+ "lane": "e2e-delivery"
1154
+ },
1155
+ {
1156
+ "capability": "data.list filtered business-object listing",
1157
+ "status": "executable",
1158
+ "scope": "POST /api/api/runtime/query/list with simplified filters translated to queryCondition (or>and>leaf), pagination, field projection, and trimmed response metadata.",
1159
+ "version_family": "8.6",
1160
+ "anchor_version": "8.6.26",
1161
+ "evidence": [
1162
+ {
1163
+ "path": "packages/omc-cli/src/tools.ts",
1164
+ "anchor": "data.list"
1165
+ },
1166
+ {
1167
+ "path": "packages/omc-cli/test/data-list.test.ts",
1168
+ "anchor": "contract tests"
1169
+ }
1170
+ ],
1171
+ "lane": "M2-runtime-data",
1172
+ "tools": [
1173
+ "data.list"
1174
+ ],
1175
+ "scopes": [
1176
+ "filtered list field projection"
1177
+ ]
1178
+ },
1179
+ {
1180
+ "capability": "rule.list latest business-rule listing and rule.get node route definition readback",
1181
+ "status": "executable",
1182
+ "scope": "GET /api/api/runtime/business_rule/list_by_schemacode returning the full latest-version business-field set (no server-side filters); GET /api/api/app/businessrule/get returning the saved node and route graph for readback",
1183
+ "version_family": "8.6",
1184
+ "anchor_version": "8.6.26",
1185
+ "evidence": [
1186
+ {
1187
+ "path": "packages/omc-cli/src/tools.ts",
1188
+ "anchor": "rule.list"
1189
+ },
1190
+ {
1191
+ "path": "packages/omc-cli/test/rule-list.test.ts",
1192
+ "anchor": "contract tests"
1193
+ }
1194
+ ],
1195
+ "lane": "B1-businessrule",
1196
+ "tools": [
1197
+ "rule.list",
1198
+ "rule.get"
1199
+ ],
1200
+ "scopes": [
1201
+ "latest rule business-field listing",
1202
+ "rule node route readback"
1203
+ ]
1204
+ },
1205
+ {
1206
+ "capability": "Application package (app) lifecycle: list, create, update (group move), admin delete",
1207
+ "status": "executable",
1208
+ "scope": "Application package list create update delete absence",
1209
+ "excluded_or_unsupported_reason": "Design-time test environments only; production environments permanently refuse writes. App publish and environment-wide release remain unsupported boundary items.",
1210
+ "version_family": "8.6",
1211
+ "anchor_version": "8.6.26",
1212
+ "evidence": [
1213
+ {
1214
+ "path": "packages/omc-cli/src/tools.ts",
1215
+ "anchor": "app.list / app.create / app.delete"
1216
+ },
1217
+ {
1218
+ "path": "packages/omc-cli/test/app-management.test.ts",
1219
+ "anchor": "contract tests"
1220
+ }
1221
+ ],
1222
+ "lane": "app-management",
1223
+ "tools": [
1224
+ "app.list",
1225
+ "app.create",
1226
+ "app.update",
1227
+ "app.delete"
1228
+ ],
1229
+ "scopes": [
1230
+ "app package list",
1231
+ "app package create",
1232
+ "app package update",
1233
+ "app package delete absence"
1234
+ ]
1235
+ },
1236
+ {
1237
+ "capability": "R1 report page and BI chart lifecycle",
1238
+ "status": "partial",
1239
+ "scope": "Report page create/update/delete on the platform channel; BI dashboard config reads, chart data queries, datasource list/link, and chart/global/attributes writes on the /dashboard/v1 channel.",
1240
+ "excluded_or_unsupported_reason": "Custom SQL dataset authoring, report export (blob+polling), i18n packs, and exact BI mobile-option semantics were not exercised; BI corpId is deployment-specific (default \"a\", override per call).",
1241
+ "version_family": "8.6",
1242
+ "anchor_version": "8.6.26",
1243
+ "evidence": [
1244
+ {
1245
+ "path": ".scratch/omc-report/recon.md",
1246
+ "anchor": "§2 channels; §3 platform; §4 BI"
1247
+ },
1248
+ {
1249
+ "path": "packages/omc-cli/src/lanes/report.ts",
1250
+ "anchor": "registerReportLane"
1251
+ },
1252
+ {
1253
+ "path": "packages/omc-cli/src/bi-wire.ts",
1254
+ "anchor": "biCall"
1255
+ },
1256
+ {
1257
+ "path": "packages/omc-cli/test/report.test.ts",
1258
+ "anchor": "report"
1259
+ }
1260
+ ],
1261
+ "lane": "R1-report",
1262
+ "tools": [
1263
+ "report.tree",
1264
+ "report.get",
1265
+ "report.chartdata",
1266
+ "report.datasource.list",
1267
+ "report.datasource.link",
1268
+ "report.create",
1269
+ "report.update",
1270
+ "report.delete",
1271
+ "report.configure"
1272
+ ],
1273
+ "scopes": [
1274
+ "report tree read page metadata BI config chart data create update delete configure"
1275
+ ]
1276
+ }
1277
+ ]
1278
+ }