@open-mercato/cli 0.6.7-develop.6795.1.8a3f27921c → 0.6.7-develop.6824.1.21fff90682

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 (102) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/build.mjs +1 -1
  3. package/dist/agentic/guides/module-facts.json +90266 -20749
  4. package/dist/agentic/guides/modules/ai_assistant.md +170 -60
  5. package/dist/agentic/guides/modules/api_docs.md +26 -1
  6. package/dist/agentic/guides/modules/api_keys.md +57 -17
  7. package/dist/agentic/guides/modules/attachments.md +72 -19
  8. package/dist/agentic/guides/modules/audit_logs.md +95 -29
  9. package/dist/agentic/guides/modules/auth.md +218 -83
  10. package/dist/agentic/guides/modules/business_rules.md +108 -34
  11. package/dist/agentic/guides/modules/catalog.md +386 -157
  12. package/dist/agentic/guides/modules/channel_gmail.md +55 -6
  13. package/dist/agentic/guides/modules/channel_imap.md +55 -6
  14. package/dist/agentic/guides/modules/checkout.md +254 -129
  15. package/dist/agentic/guides/modules/communication_channels.md +280 -109
  16. package/dist/agentic/guides/modules/configs.md +68 -11
  17. package/dist/agentic/guides/modules/content.md +26 -1
  18. package/dist/agentic/guides/modules/currencies.md +109 -44
  19. package/dist/agentic/guides/modules/customer_accounts.md +350 -156
  20. package/dist/agentic/guides/modules/customers.md +642 -294
  21. package/dist/agentic/guides/modules/dashboards.md +122 -28
  22. package/dist/agentic/guides/modules/data_sync.md +117 -37
  23. package/dist/agentic/guides/modules/design_system.md +36 -2
  24. package/dist/agentic/guides/modules/dictionaries.md +78 -20
  25. package/dist/agentic/guides/modules/directory.md +110 -45
  26. package/dist/agentic/guides/modules/entities.md +95 -38
  27. package/dist/agentic/guides/modules/events.md +31 -1
  28. package/dist/agentic/guides/modules/feature_toggles.md +79 -12
  29. package/dist/agentic/guides/modules/gateway_stripe.md +61 -6
  30. package/dist/agentic/guides/modules/generators.md +17 -1
  31. package/dist/agentic/guides/modules/inbox_ops.md +171 -60
  32. package/dist/agentic/guides/modules/integrations.md +116 -30
  33. package/dist/agentic/guides/modules/messages.md +187 -66
  34. package/dist/agentic/guides/modules/notifications.md +64 -9
  35. package/dist/agentic/guides/modules/onboarding.md +47 -8
  36. package/dist/agentic/guides/modules/payment_gateways.md +133 -48
  37. package/dist/agentic/guides/modules/perspectives.md +50 -12
  38. package/dist/agentic/guides/modules/planner.md +102 -32
  39. package/dist/agentic/guides/modules/portal.md +58 -15
  40. package/dist/agentic/guides/modules/progress.md +78 -30
  41. package/dist/agentic/guides/modules/query_index.md +115 -53
  42. package/dist/agentic/guides/modules/record_locks.md +178 -59
  43. package/dist/agentic/guides/modules/resources.md +155 -78
  44. package/dist/agentic/guides/modules/sales.md +620 -257
  45. package/dist/agentic/guides/modules/scheduler.md +95 -19
  46. package/dist/agentic/guides/modules/search.md +124 -20
  47. package/dist/agentic/guides/modules/security.md +251 -105
  48. package/dist/agentic/guides/modules/shipping_carriers.md +106 -37
  49. package/dist/agentic/guides/modules/sso.md +121 -49
  50. package/dist/agentic/guides/modules/staff.md +314 -126
  51. package/dist/agentic/guides/modules/storage_s3.md +55 -6
  52. package/dist/agentic/guides/modules/sync_akeneo.md +54 -4
  53. package/dist/agentic/guides/modules/sync_excel.md +49 -11
  54. package/dist/agentic/guides/modules/system_status_overlays.md +33 -5
  55. package/dist/agentic/guides/modules/translations.md +76 -21
  56. package/dist/agentic/guides/modules/webhooks.md +166 -82
  57. package/dist/agentic/guides/modules/wms.md +383 -223
  58. package/dist/agentic/guides/modules/workflows.md +248 -112
  59. package/dist/agentic/guides/upstream/AGENTS.md +1 -1
  60. package/dist/agentic/guides/upstream/BACKWARD_COMPATIBILITY.md +2 -0
  61. package/dist/agentic/guides/upstream/manifest.json +3 -3
  62. package/dist/agentic/shared/AGENTS.md.template +6 -5
  63. package/dist/agentic/shared/ai/harness/README.md +2 -2
  64. package/dist/agentic/shared/ai/harness/RELEASE.md +4 -4
  65. package/dist/agentic/shared/ai/harness/cases.json +94 -1
  66. package/dist/agentic/shared/ai/harness/cases.schema.json +3 -3
  67. package/dist/agentic/shared/ai/harness/validators.json +1 -1
  68. package/dist/agentic/shared/ai/lessons/_template.md +16 -0
  69. package/dist/agentic/shared/ai/lessons.md +26 -3
  70. package/dist/agentic/shared/ai/skills/om-evolve-harness/SKILL.md +7 -6
  71. package/dist/agentic/shared/ai/skills/om-system-extension/SKILL.md +1 -1
  72. package/dist/agentic/shared/ai/skills/om-system-extension/references/unified-overrides.md +4 -2
  73. package/dist/agentic/shared/scripts/check-lessons.mjs +178 -0
  74. package/dist/agentic/shared/scripts/evaluate-agent-harness.mjs +37 -12
  75. package/dist/lib/agentic-setup.js +2 -2
  76. package/dist/lib/agentic-setup.js.map +2 -2
  77. package/dist/lib/generators/module-extension-facts.js +652 -24
  78. package/dist/lib/generators/module-extension-facts.js.map +3 -3
  79. package/dist/lib/generators/module-fact-sources.js +70 -0
  80. package/dist/lib/generators/module-fact-sources.js.map +7 -0
  81. package/dist/lib/generators/module-facts.js +1001 -26
  82. package/dist/lib/generators/module-facts.js.map +3 -3
  83. package/dist/lib/generators/module-override-targets.js +688 -0
  84. package/dist/lib/generators/module-override-targets.js.map +7 -0
  85. package/dist/lib/testing/integration.js +5 -0
  86. package/dist/lib/testing/integration.js.map +2 -2
  87. package/package.json +5 -5
  88. package/src/lib/__tests__/agentic-setup.ownership.test.ts +6 -0
  89. package/src/lib/agentic-setup.ts +6 -2
  90. package/src/lib/generators/__tests__/activation-adapter-coverage.test.ts +92 -0
  91. package/src/lib/generators/__tests__/module-extension-activations.test.ts +762 -0
  92. package/src/lib/generators/__tests__/module-extension-facts.test.ts +4 -2
  93. package/src/lib/generators/__tests__/module-facts.bc-guard.test.ts +37 -3
  94. package/src/lib/generators/__tests__/module-facts.owned-contracts.test.ts +561 -0
  95. package/src/lib/generators/__tests__/module-override-targets.roundtrip.test.ts +149 -0
  96. package/src/lib/generators/__tests__/module-override-targets.test.ts +304 -0
  97. package/src/lib/generators/module-extension-facts.ts +923 -27
  98. package/src/lib/generators/module-fact-sources.ts +108 -0
  99. package/src/lib/generators/module-facts.ts +1360 -25
  100. package/src/lib/generators/module-override-targets.ts +863 -0
  101. package/src/lib/testing/__tests__/integration.test.ts +4 -0
  102. package/src/lib/testing/integration.ts +5 -0
@@ -1,53 +1,72 @@
1
1
  # workflows — module facts (generated, do not edit)
2
- <!-- generated from @open-mercato/core 0.6.7-develop.6795.1.8a3f27921c; core 0.6.7-develop.6795.1.8a3f27921c — R1 staleness stamp -->
2
+ <!-- generated from @open-mercato/core 0.6.7-develop.6824.1.21fff90682; core 0.6.7-develop.6824.1.21fff90682 — R1 staleness stamp -->
3
3
  Source root: [node_modules/@open-mercato/core/src/modules/workflows](../../../node_modules/@open-mercato/core/src/modules/workflows)
4
4
 
5
5
  ## Entities
6
6
 
7
- | Entity ID | Class | Table | Editable | CustomFields |
8
- |---|---|---|---|---|
9
- | workflows:workflow_definition | WorkflowDefinition | workflow_definitions | yes | no |
10
- | workflows:workflow_instance | WorkflowInstance | workflow_instances | yes | no |
11
- | workflows:workflow_branch_instance | WorkflowBranchInstance | workflow_branch_instances | yes | no |
12
- | workflows:step_instance | StepInstance | step_instances | yes | no |
13
- | workflows:user_task | UserTask | user_tasks | yes | no |
14
- | workflows:workflow_event | WorkflowEvent | workflow_events | no | no |
15
- | workflows:workflow_event_trigger | WorkflowEventTrigger | workflow_event_triggers | yes | no |
7
+ | Entity ID | Class | Table | Editable | CustomFields | Source |
8
+ |---|---|---|---|---|---|
9
+ | workflows:workflow_definition | WorkflowDefinition | workflow_definitions | yes | no | [node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts) |
10
+ | workflows:workflow_instance | WorkflowInstance | workflow_instances | yes | no | [node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts) |
11
+ | workflows:workflow_branch_instance | WorkflowBranchInstance | workflow_branch_instances | yes | no | [node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts) |
12
+ | workflows:step_instance | StepInstance | step_instances | yes | no | [node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts) |
13
+ | workflows:user_task | UserTask | user_tasks | yes | no | [node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts) |
14
+ | workflows:workflow_event | WorkflowEvent | workflow_events | no | no | [node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts) |
15
+ | workflows:workflow_event_trigger | WorkflowEventTrigger | workflow_event_triggers | yes | no | [node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/data/entities.ts) |
16
16
 
17
17
  ## Events (26)
18
18
 
19
- | ID | Category | Entity | Browser transport |
20
- |---|---|---|---|
21
- | workflows.definition.created | crud | definition | — |
22
- | workflows.definition.updated | crud | definition | — |
23
- | workflows.definition.deleted | crud | definition | — |
24
- | workflows.definition.customized | lifecycle | definition | — |
25
- | workflows.definition.reset_to_code | lifecycle | definition | — |
26
- | workflows.instance.created | crud | instance | — |
27
- | workflows.instance.updated | crud | instance | — |
28
- | workflows.instance.deleted | crud | instance | — |
29
- | workflows.instance.started | lifecycle | — | — |
30
- | workflows.instance.completed | lifecycle | — | — |
31
- | workflows.instance.failed | lifecycle | — | — |
32
- | workflows.instance.cancelled | lifecycle | — | — |
33
- | workflows.instance.paused | lifecycle | — | — |
34
- | workflows.instance.resumed | lifecycle | — | — |
35
- | workflows.activity.started | lifecycle | — | — |
36
- | workflows.activity.completed | lifecycle | — | — |
37
- | workflows.activity.failed | lifecycle | — | — |
38
- | workflows.task.assigned | lifecycle | task | — |
39
- | workflows.trigger.created | crud | trigger | — |
40
- | workflows.trigger.updated | crud | trigger | — |
41
- | workflows.trigger.deleted | crud | trigger | — |
42
- | workflows.branch.opened | lifecycle | branch | — |
43
- | workflows.branch.completed | lifecycle | branch | — |
44
- | workflows.branch.cancelled | lifecycle | branch | — |
45
- | workflows.branch.failed | lifecycle | branch | — |
46
- | workflows.join.completed | lifecycle | branch | — |
19
+ | ID | Category | Entity | Browser transport | Source |
20
+ |---|---|---|---|---|
21
+ | workflows.definition.created | crud | definition | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
22
+ | workflows.definition.updated | crud | definition | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
23
+ | workflows.definition.deleted | crud | definition | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
24
+ | workflows.definition.customized | lifecycle | definition | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
25
+ | workflows.definition.reset_to_code | lifecycle | definition | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
26
+ | workflows.instance.created | crud | instance | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
27
+ | workflows.instance.updated | crud | instance | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
28
+ | workflows.instance.deleted | crud | instance | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
29
+ | workflows.instance.started | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
30
+ | workflows.instance.completed | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
31
+ | workflows.instance.failed | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
32
+ | workflows.instance.cancelled | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
33
+ | workflows.instance.paused | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
34
+ | workflows.instance.resumed | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
35
+ | workflows.activity.started | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
36
+ | workflows.activity.completed | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
37
+ | workflows.activity.failed | lifecycle | — | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
38
+ | workflows.task.assigned | lifecycle | task | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
39
+ | workflows.trigger.created | crud | trigger | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
40
+ | workflows.trigger.updated | crud | trigger | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
41
+ | workflows.trigger.deleted | crud | trigger | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
42
+ | workflows.branch.opened | lifecycle | branch | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
43
+ | workflows.branch.completed | lifecycle | branch | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
44
+ | workflows.branch.cancelled | lifecycle | branch | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
45
+ | workflows.branch.failed | lifecycle | branch | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
46
+ | workflows.join.completed | lifecycle | branch | — | [node_modules/@open-mercato/core/src/modules/workflows/events.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/events.ts) |
47
47
 
48
48
  ## ACL features (18)
49
49
 
50
- workflows.view · workflows.manage · workflows.view_logs · workflows.view_tasks · workflows.definitions.view · workflows.definitions.create · workflows.definitions.edit · workflows.definitions.delete · workflows.instances.view · workflows.instances.create · workflows.instances.cancel · workflows.instances.retry · workflows.instances.signal · workflows.tasks.view · workflows.tasks.claim · workflows.tasks.complete · workflows.signals.send · workflows.events.view
50
+ | Feature | Source |
51
+ |---|---|
52
+ | workflows.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
53
+ | workflows.manage | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
54
+ | workflows.view_logs | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
55
+ | workflows.view_tasks | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
56
+ | workflows.definitions.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
57
+ | workflows.definitions.create | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
58
+ | workflows.definitions.edit | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
59
+ | workflows.definitions.delete | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
60
+ | workflows.instances.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
61
+ | workflows.instances.create | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
62
+ | workflows.instances.cancel | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
63
+ | workflows.instances.retry | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
64
+ | workflows.instances.signal | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
65
+ | workflows.tasks.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
66
+ | workflows.tasks.claim | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
67
+ | workflows.tasks.complete | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
68
+ | workflows.signals.send | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
69
+ | workflows.events.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
51
70
 
52
71
  ## API routes
53
72
 
@@ -76,7 +95,15 @@ _none_
76
95
 
77
96
  ## DI service tokens
78
97
 
79
- workflowExecutor · stepHandler · transitionHandler · activityExecutor · eventLogger · signalHandler · timerHandler
98
+ | Token | Source |
99
+ |---|---|
100
+ | workflowExecutor | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:39](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L39) |
101
+ | stepHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:40](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L40) |
102
+ | transitionHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:41](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L41) |
103
+ | activityExecutor | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:42](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L42) |
104
+ | eventLogger | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:43](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L43) |
105
+ | signalHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:44](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L44) |
106
+ | timerHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:45](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L45) |
80
107
 
81
108
  ## Search entities
82
109
 
@@ -89,80 +116,101 @@ _none_
89
116
 
90
117
  ## UMES hosts
91
118
 
92
- | ID / pattern | Family | Supports | Context | Stability |
93
- |---|---|---|---|---|
94
- | data-table:workflows.definitions.list | data-table | component-replacement | — | FROZEN |
95
- | data-table:workflows.definitions.list:bulk-actions | data-table | bulk-action | — | FROZEN |
96
- | data-table:workflows.definitions.list:columns | data-table | column-widget | — | FROZEN |
97
- | data-table:workflows.definitions.list:filters | data-table | filter-widget | — | FROZEN |
98
- | data-table:workflows.definitions.list:footer | data-table | render-widget | — | FROZEN |
99
- | data-table:workflows.definitions.list:header | data-table | render-widget | — | FROZEN |
100
- | data-table:workflows.definitions.list:row-actions | data-table | row-action | — | FROZEN |
101
- | data-table:workflows.definitions.list:search-trailing | data-table | render-widget | — | FROZEN |
102
- | data-table:workflows.definitions.list:toolbar | data-table | toolbar-widget | — | FROZEN |
103
- | data-table:workflows.instances.list | data-table | component-replacement | — | FROZEN |
104
- | data-table:workflows.instances.list:bulk-actions | data-table | bulk-action | — | FROZEN |
105
- | data-table:workflows.instances.list:columns | data-table | column-widget | — | FROZEN |
106
- | data-table:workflows.instances.list:filters | data-table | filter-widget | — | FROZEN |
107
- | data-table:workflows.instances.list:footer | data-table | render-widget | — | FROZEN |
108
- | data-table:workflows.instances.list:header | data-table | render-widget | — | FROZEN |
109
- | data-table:workflows.instances.list:row-actions | data-table | row-action | — | FROZEN |
110
- | data-table:workflows.instances.list:search-trailing | data-table | render-widget | — | FROZEN |
111
- | data-table:workflows.instances.list:toolbar | data-table | toolbar-widget | — | FROZEN |
112
- | data-table:workflows.tasks.list | data-table | component-replacement | — | FROZEN |
113
- | data-table:workflows.tasks.list:bulk-actions | data-table | bulk-action | — | FROZEN |
114
- | data-table:workflows.tasks.list:columns | data-table | column-widget | — | FROZEN |
115
- | data-table:workflows.tasks.list:filters | data-table | filter-widget | — | FROZEN |
116
- | data-table:workflows.tasks.list:footer | data-table | render-widget | — | FROZEN |
117
- | data-table:workflows.tasks.list:header | data-table | render-widget | — | FROZEN |
118
- | data-table:workflows.tasks.list:row-actions | data-table | row-action | — | FROZEN |
119
- | data-table:workflows.tasks.list:search-trailing | data-table | render-widget | — | FROZEN |
120
- | data-table:workflows.tasks.list:toolbar | data-table | toolbar-widget | — | FROZEN |
121
- | workflows:step_instance | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE |
122
- | workflows:user_task | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE |
123
- | workflows:workflow_branch_instance | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE |
124
- | workflows:workflow_definition | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE |
125
- | workflows:workflow_event | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE |
126
- | workflows:workflow_event_trigger | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE |
127
- | workflows:workflow_instance | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE |
128
- | workflows.definition | entity | response-enricher, query-enricher, mutation-guard | tenant-and-organization | STABLE |
129
- | workflows.activity.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
130
- | workflows.activity.failed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
131
- | workflows.activity.started | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
132
- | workflows.branch.cancelled | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
133
- | workflows.branch.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
134
- | workflows.branch.failed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
135
- | workflows.branch.opened | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
136
- | workflows.definition.created | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
137
- | workflows.definition.customized | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
138
- | workflows.definition.deleted | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
139
- | workflows.definition.reset_to_code | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
140
- | workflows.definition.updated | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
141
- | workflows.instance.cancelled | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
142
- | workflows.instance.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
143
- | workflows.instance.created | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
144
- | workflows.instance.deleted | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
145
- | workflows.instance.failed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
146
- | workflows.instance.paused | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
147
- | workflows.instance.resumed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
148
- | workflows.instance.started | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
149
- | workflows.instance.updated | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
150
- | workflows.join.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
151
- | workflows.task.assigned | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
152
- | workflows.trigger.created | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
153
- | workflows.trigger.deleted | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
154
- | workflows.trigger.updated | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE |
119
+ | ID / pattern | Family | Supports | Context | Stability | Source |
120
+ |---|---|---|---|---|---|
121
+ | data-table:workflows.definitions.list | data-table | component-replacement | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
122
+ | data-table:workflows.definitions.list:bulk-actions | data-table | bulk-action | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
123
+ | data-table:workflows.definitions.list:columns | data-table | column-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
124
+ | data-table:workflows.definitions.list:filters | data-table | filter-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
125
+ | data-table:workflows.definitions.list:footer | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
126
+ | data-table:workflows.definitions.list:header | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
127
+ | data-table:workflows.definitions.list:row-actions | data-table | row-action | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
128
+ | data-table:workflows.definitions.list:search-trailing | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
129
+ | data-table:workflows.definitions.list:toolbar | data-table | toolbar-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
130
+ | data-table:workflows.instances.list | data-table | component-replacement | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
131
+ | data-table:workflows.instances.list:bulk-actions | data-table | bulk-action | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
132
+ | data-table:workflows.instances.list:columns | data-table | column-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
133
+ | data-table:workflows.instances.list:filters | data-table | filter-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
134
+ | data-table:workflows.instances.list:footer | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
135
+ | data-table:workflows.instances.list:header | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
136
+ | data-table:workflows.instances.list:row-actions | data-table | row-action | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
137
+ | data-table:workflows.instances.list:search-trailing | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
138
+ | data-table:workflows.instances.list:toolbar | data-table | toolbar-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
139
+ | data-table:workflows.tasks.list | data-table | component-replacement | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
140
+ | data-table:workflows.tasks.list:bulk-actions | data-table | bulk-action | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
141
+ | data-table:workflows.tasks.list:columns | data-table | column-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
142
+ | data-table:workflows.tasks.list:filters | data-table | filter-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
143
+ | data-table:workflows.tasks.list:footer | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
144
+ | data-table:workflows.tasks.list:header | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
145
+ | data-table:workflows.tasks.list:row-actions | data-table | row-action | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
146
+ | data-table:workflows.tasks.list:search-trailing | data-table | render-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
147
+ | data-table:workflows.tasks.list:toolbar | data-table | toolbar-widget | — | FROZEN | [node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/extension-points.ts) |
148
+ | workflows:step_instance | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE | entities:workflows:step_instance |
149
+ | workflows:user_task | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE | entities:workflows:user_task |
150
+ | workflows:workflow_branch_instance | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE | entities:workflows:workflow_branch_instance |
151
+ | workflows:workflow_definition | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE | entities:workflows:workflow_definition |
152
+ | workflows:workflow_event | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE | entities:workflows:workflow_event |
153
+ | workflows:workflow_event_trigger | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE | entities:workflows:workflow_event_trigger |
154
+ | workflows:workflow_instance | entity | response-enricher, query-enricher, mutation-guard, entity-extension | tenant-and-organization | STABLE | entities:workflows:workflow_instance |
155
+ | workflows.definition | entity | response-enricher, query-enricher, mutation-guard | tenant-and-organization | STABLE | [node_modules/@open-mercato/core/src/modules/workflows/api/definitions/[id]/customize/route.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/api/definitions/[id]/customize/route.ts) |
156
+ | workflows.activity.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.activity.completed |
157
+ | workflows.activity.failed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.activity.failed |
158
+ | workflows.activity.started | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.activity.started |
159
+ | workflows.branch.cancelled | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.branch.cancelled |
160
+ | workflows.branch.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.branch.completed |
161
+ | workflows.branch.failed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.branch.failed |
162
+ | workflows.branch.opened | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.branch.opened |
163
+ | workflows.definition.created | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.definition.created |
164
+ | workflows.definition.customized | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.definition.customized |
165
+ | workflows.definition.deleted | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.definition.deleted |
166
+ | workflows.definition.reset_to_code | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.definition.reset_to_code |
167
+ | workflows.definition.updated | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.definition.updated |
168
+ | workflows.instance.cancelled | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.cancelled |
169
+ | workflows.instance.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.completed |
170
+ | workflows.instance.created | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.created |
171
+ | workflows.instance.deleted | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.deleted |
172
+ | workflows.instance.failed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.failed |
173
+ | workflows.instance.paused | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.paused |
174
+ | workflows.instance.resumed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.resumed |
175
+ | workflows.instance.started | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.started |
176
+ | workflows.instance.updated | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.instance.updated |
177
+ | workflows.join.completed | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.join.completed |
178
+ | workflows.task.assigned | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.task.assigned |
179
+ | workflows.trigger.created | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.trigger.created |
180
+ | workflows.trigger.deleted | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.trigger.deleted |
181
+ | workflows.trigger.updated | event | async-subscriber, sync-subscriber | tenant-organization-and-audience | STABLE | events:workflows.trigger.updated |
155
182
 
156
183
  ## UMES contributions
157
184
 
158
- | ID | Kind | Target | Phase / operations | Contract | Resolution |
159
- |---|---|---|---|---|---|
160
- | notification:workflows.task.assigned | specialized-registry | workflows.task.assigned | — | registry=notification; registryId=workflows.task.assigned; specialistRoute=notifications | fact-ref |
161
- | workflow:workflows.checkout-demo | specialized-registry | workflows.checkout-demo | — | registry=workflow; registryId=workflows.checkout-demo; specialistRoute=workflows | fact-ref |
162
- | workflow:workflows.simple-approval | specialized-registry | workflows.simple-approval | — | registry=workflow; registryId=workflows.simple-approval; specialistRoute=workflows | fact-ref |
163
- | workflows:event-trigger | subscriber | * | async-delivery | event=*; persistent=true; subscriberId=workflows:event-trigger; sync=false | pattern |
164
- | workflows:task-assigned-notification | subscriber | workflows.task.assigned | async-delivery | event=workflows.task.assigned; persistent=true; subscriberId=workflows:task-assigned-notification; sync=false | fact-ref |
165
- | workflows.injection.order-approval@sales.document.detail.order:details | widget | sales.document.detail.order:details | — | executionGuard=host; payload=render; registryKey=workflows.injection.order-approval | pattern |
185
+ | ID | Kind | Target | Phase / operations | Contract | Resolution | Source |
186
+ |---|---|---|---|---|---|---|
187
+ | notification:workflows.task.assigned | specialized-registry | workflows.task.assigned | — | registry=notification; registryId=workflows.task.assigned; specialistRoute=notifications | fact-ref | [node_modules/@open-mercato/core/src/modules/workflows/notifications.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/notifications.ts) |
188
+ | workflow:workflows.checkout-demo | specialized-registry | workflows.checkout-demo | — | registry=workflow; registryId=workflows.checkout-demo; specialistRoute=workflows | fact-ref | [node_modules/@open-mercato/core/src/modules/workflows/workflows.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/workflows.ts) |
189
+ | workflow:workflows.simple-approval | specialized-registry | workflows.simple-approval | — | registry=workflow; registryId=workflows.simple-approval; specialistRoute=workflows | fact-ref | [node_modules/@open-mercato/core/src/modules/workflows/workflows.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/workflows.ts) |
190
+ | workflows:event-trigger | subscriber | * | async-delivery | event=*; persistent=true; subscriberId=workflows:event-trigger; sync=false | pattern | [node_modules/@open-mercato/core/src/modules/workflows/subscribers/event-trigger.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/subscribers/event-trigger.ts) |
191
+ | workflows:task-assigned-notification | subscriber | workflows.task.assigned | async-delivery | event=workflows.task.assigned; persistent=true; subscriberId=workflows:task-assigned-notification; sync=false | fact-ref | [node_modules/@open-mercato/core/src/modules/workflows/subscribers/task-assigned-notification.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/subscribers/task-assigned-notification.ts) |
192
+ | workflows.injection.order-approval@sales.document.detail.order:details | widget | sales.document.detail.order:details | — | executionGuard=host; payload=render; registryKey=workflows.injection.order-approval | pattern | [node_modules/@open-mercato/core/src/modules/workflows/widgets/injection-table.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/widgets/injection-table.ts) |
193
+
194
+ ## Active extension bindings
195
+
196
+ | Activation | Kind | Host | Contribution kinds | Phases | Bridge | Source |
197
+ |---|---|---|---|---|---|---|
198
+ | entity:workflows.definition:mutation-guard | mutation-guard | entity:workflows.definition @workflows | mutation-guard | — | — | [node_modules/@open-mercato/core/src/modules/workflows/api/definitions/[id]/customize/route.ts:64](../../../node_modules/@open-mercato/core/src/modules/workflows/api/definitions/[id]/customize/route.ts#L64) |
199
+
200
+ ## Incoming installed contributions
201
+
202
+ _none_
203
+
204
+ ## Contribution resolutions
205
+
206
+ | Contribution | Target | Resolution | Activations | Source |
207
+ |---|---|---|---|---|
208
+ | notification:workflows.task.assigned | module:workflows.task.assigned @workflows | capability-only | — | [node_modules/@open-mercato/core/src/modules/workflows/notifications.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/notifications.ts) |
209
+ | workflow:workflows.checkout-demo | module:workflows.checkout-demo | capability-only | — | [node_modules/@open-mercato/core/src/modules/workflows/workflows.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/workflows.ts) |
210
+ | workflow:workflows.simple-approval | module:workflows.simple-approval | capability-only | — | [node_modules/@open-mercato/core/src/modules/workflows/workflows.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/workflows.ts) |
211
+ | workflows:event-trigger | wildcard:* | wildcard | — | [node_modules/@open-mercato/core/src/modules/workflows/subscribers/event-trigger.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/subscribers/event-trigger.ts) |
212
+ | workflows:task-assigned-notification | event:workflows.task.assigned @workflows | capability-only | — | [node_modules/@open-mercato/core/src/modules/workflows/subscribers/task-assigned-notification.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/subscribers/task-assigned-notification.ts) |
213
+ | workflows.injection.order-approval@sales.document.detail.order:details | widget-spot:sales.document.detail.order:details | wildcard | — | [node_modules/@open-mercato/core/src/modules/workflows/widgets/injection-table.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/widgets/injection-table.ts) |
166
214
 
167
215
  ## UMES diagnostics
168
216
 
@@ -172,7 +220,9 @@ _none_
172
220
 
173
221
  ## Notifications
174
222
 
175
- workflows.task.assigned
223
+ | Notification ID | Source |
224
+ |---|---|
225
+ | workflows.task.assigned | [node_modules/@open-mercato/core/src/modules/workflows/notifications.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/notifications.ts) |
176
226
 
177
227
  ## CLI commands
178
228
 
@@ -194,3 +244,89 @@ _none_
194
244
  ## AI agents
195
245
 
196
246
  _none_
247
+
248
+ ## Exact override targets
249
+
250
+ | Domain | Path / key | Supported modes | Referenced fact | Source |
251
+ |---|---|---|---|---|
252
+ | acl | `overrides.acl.features["workflows.definitions.create"]` | disable-replace | aclFeatures:workflows.definitions.create | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
253
+ | acl | `overrides.acl.features["workflows.definitions.delete"]` | disable-replace | aclFeatures:workflows.definitions.delete | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
254
+ | acl | `overrides.acl.features["workflows.definitions.edit"]` | disable-replace | aclFeatures:workflows.definitions.edit | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
255
+ | acl | `overrides.acl.features["workflows.definitions.view"]` | disable-replace | aclFeatures:workflows.definitions.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
256
+ | acl | `overrides.acl.features["workflows.events.view"]` | disable-replace | aclFeatures:workflows.events.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
257
+ | acl | `overrides.acl.features["workflows.instances.cancel"]` | disable-replace | aclFeatures:workflows.instances.cancel | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
258
+ | acl | `overrides.acl.features["workflows.instances.create"]` | disable-replace | aclFeatures:workflows.instances.create | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
259
+ | acl | `overrides.acl.features["workflows.instances.retry"]` | disable-replace | aclFeatures:workflows.instances.retry | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
260
+ | acl | `overrides.acl.features["workflows.instances.signal"]` | disable-replace | aclFeatures:workflows.instances.signal | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
261
+ | acl | `overrides.acl.features["workflows.instances.view"]` | disable-replace | aclFeatures:workflows.instances.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
262
+ | acl | `overrides.acl.features["workflows.manage"]` | disable-replace | aclFeatures:workflows.manage | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
263
+ | acl | `overrides.acl.features["workflows.signals.send"]` | disable-replace | aclFeatures:workflows.signals.send | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
264
+ | acl | `overrides.acl.features["workflows.tasks.claim"]` | disable-replace | aclFeatures:workflows.tasks.claim | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
265
+ | acl | `overrides.acl.features["workflows.tasks.complete"]` | disable-replace | aclFeatures:workflows.tasks.complete | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
266
+ | acl | `overrides.acl.features["workflows.tasks.view"]` | disable-replace | aclFeatures:workflows.tasks.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
267
+ | acl | `overrides.acl.features["workflows.view"]` | disable-replace | aclFeatures:workflows.view | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
268
+ | acl | `overrides.acl.features["workflows.view_logs"]` | disable-replace | aclFeatures:workflows.view_logs | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
269
+ | acl | `overrides.acl.features["workflows.view_tasks"]` | disable-replace | aclFeatures:workflows.view_tasks | [node_modules/@open-mercato/core/src/modules/workflows/acl.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/acl.ts) |
270
+ | cli | `overrides.cli["process-activities"]` | disable-replace | cliCommands:process-activities | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
271
+ | cli | `overrides.cli["seed-all"]` | disable-replace | cliCommands:seed-all | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
272
+ | cli | `overrides.cli["seed-demo"]` | disable-replace | cliCommands:seed-demo | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
273
+ | cli | `overrides.cli["seed-demo-with-rules"]` | disable-replace | cliCommands:seed-demo-with-rules | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
274
+ | cli | `overrides.cli["seed-order-approval"]` | disable-replace | cliCommands:seed-order-approval | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
275
+ | cli | `overrides.cli["seed-sales-pipeline"]` | disable-replace | cliCommands:seed-sales-pipeline | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
276
+ | cli | `overrides.cli["seed-simple-approval"]` | disable-replace | cliCommands:seed-simple-approval | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
277
+ | cli | `overrides.cli["start-worker"]` | disable-replace | cliCommands:start-worker | [node_modules/@open-mercato/core/src/modules/workflows/cli.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/cli.ts) |
278
+ | di | `overrides.di["activityExecutor"]` | disable-replace | ownedContracts.di-registration:activityExecutor | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:42](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L42) |
279
+ | di | `overrides.di["eventLogger"]` | disable-replace | ownedContracts.di-registration:eventLogger | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:43](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L43) |
280
+ | di | `overrides.di["signalHandler"]` | disable-replace | ownedContracts.di-registration:signalHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:44](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L44) |
281
+ | di | `overrides.di["stepHandler"]` | disable-replace | ownedContracts.di-registration:stepHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:40](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L40) |
282
+ | di | `overrides.di["timerHandler"]` | disable-replace | ownedContracts.di-registration:timerHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:45](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L45) |
283
+ | di | `overrides.di["transitionHandler"]` | disable-replace | ownedContracts.di-registration:transitionHandler | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:41](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L41) |
284
+ | di | `overrides.di["workflowExecutor"]` | disable-replace | ownedContracts.di-registration:workflowExecutor | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:39](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L39) |
285
+ | events | `overrides.events.subscribers["workflows:event-trigger"]` | disable-replace | extensionSurfaces.contributions:workflows:event-trigger | [node_modules/@open-mercato/core/src/modules/workflows/subscribers/event-trigger.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/subscribers/event-trigger.ts) |
286
+ | events | `overrides.events.subscribers["workflows:task-assigned-notification"]` | disable-replace | extensionSurfaces.contributions:workflows:task-assigned-notification | [node_modules/@open-mercato/core/src/modules/workflows/subscribers/task-assigned-notification.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/subscribers/task-assigned-notification.ts) |
287
+ | notifications | `overrides.notifications.types["workflows.task.assigned"]` | disable-replace | notifications:workflows.task.assigned | [node_modules/@open-mercato/core/src/modules/workflows/notifications.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/notifications.ts) |
288
+ | routes | `overrides.routes.pages["backend:/backend/definitions"]` | disable-replace | backendPages:/backend/definitions | [node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/page.tsx) |
289
+ | routes | `overrides.routes.pages["backend:/backend/definitions/[id]"]` | disable-replace | backendPages:/backend/definitions/[id] | [node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/[id]/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/[id]/page.tsx) |
290
+ | routes | `overrides.routes.pages["backend:/backend/definitions/create"]` | disable-replace | backendPages:/backend/definitions/create | [node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/create/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/create/page.tsx) |
291
+ | routes | `overrides.routes.pages["backend:/backend/definitions/visual-editor"]` | disable-replace | backendPages:/backend/definitions/visual-editor | [node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/visual-editor/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/definitions/visual-editor/page.tsx) |
292
+ | routes | `overrides.routes.pages["backend:/backend/events"]` | disable-replace | backendPages:/backend/events | [node_modules/@open-mercato/core/src/modules/workflows/backend/events/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/events/page.tsx) |
293
+ | routes | `overrides.routes.pages["backend:/backend/events/[id]"]` | disable-replace | backendPages:/backend/events/[id] | [node_modules/@open-mercato/core/src/modules/workflows/backend/events/[id]/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/events/[id]/page.tsx) |
294
+ | routes | `overrides.routes.pages["backend:/backend/instances"]` | disable-replace | backendPages:/backend/instances | [node_modules/@open-mercato/core/src/modules/workflows/backend/instances/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/instances/page.tsx) |
295
+ | routes | `overrides.routes.pages["backend:/backend/instances/[id]"]` | disable-replace | backendPages:/backend/instances/[id] | [node_modules/@open-mercato/core/src/modules/workflows/backend/instances/[id]/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/instances/[id]/page.tsx) |
296
+ | routes | `overrides.routes.pages["backend:/backend/tasks"]` | disable-replace | backendPages:/backend/tasks | [node_modules/@open-mercato/core/src/modules/workflows/backend/tasks/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/tasks/page.tsx) |
297
+ | routes | `overrides.routes.pages["backend:/backend/tasks/[id]"]` | disable-replace | backendPages:/backend/tasks/[id] | [node_modules/@open-mercato/core/src/modules/workflows/backend/tasks/[id]/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/backend/tasks/[id]/page.tsx) |
298
+ | routes | `overrides.routes.pages["frontend:/checkout-demo"]` | disable-replace | frontendPages:/checkout-demo | [node_modules/@open-mercato/core/src/modules/workflows/frontend/checkout-demo/page.tsx](../../../node_modules/@open-mercato/core/src/modules/workflows/frontend/checkout-demo/page.tsx) |
299
+ | setup | `overrides.setup.defaultRoleFeatures` | replace | ownedContracts.setup:workflows:setup | [node_modules/@open-mercato/core/src/modules/workflows/setup.ts:5](../../../node_modules/@open-mercato/core/src/modules/workflows/setup.ts#L5) |
300
+ | setup | `overrides.setup.seedDefaults` | replace | ownedContracts.setup:workflows:setup | [node_modules/@open-mercato/core/src/modules/workflows/setup.ts:5](../../../node_modules/@open-mercato/core/src/modules/workflows/setup.ts#L5) |
301
+ | widgets | `overrides.widgets.injection["workflows.injection.order-approval"]` | disable-replace | extensionSurfaces.contributions:workflows.injection.order-approval@sales.document.detail.order:details | [node_modules/@open-mercato/core/src/modules/workflows/widgets/injection-table.ts](../../../node_modules/@open-mercato/core/src/modules/workflows/widgets/injection-table.ts) |
302
+ | workers | `overrides.workers["workflows:workflow-activities"]` | disable-replace | ownedContracts.worker:workflows:workflow-activities | [node_modules/@open-mercato/core/src/modules/workflows/workers/workflow-activities.worker.ts:39](../../../node_modules/@open-mercato/core/src/modules/workflows/workers/workflow-activities.worker.ts#L39) |
303
+
304
+ ## Owned contract — module metadata
305
+
306
+ | ID | Metadata | Source |
307
+ |---|---|---|
308
+ | workflows | ejectable=true; name=workflows; version=1.0.0 | [node_modules/@open-mercato/core/src/modules/workflows/index.ts:10](../../../node_modules/@open-mercato/core/src/modules/workflows/index.ts#L10) |
309
+
310
+ ## Workers
311
+
312
+ | ID | Metadata | Source |
313
+ |---|---|---|
314
+ | workflows:workflow-activities | queue=workflow-activities | [node_modules/@open-mercato/core/src/modules/workflows/workers/workflow-activities.worker.ts:39](../../../node_modules/@open-mercato/core/src/modules/workflows/workers/workflow-activities.worker.ts#L39) |
315
+
316
+ ## Setup
317
+
318
+ | ID | Metadata | Source |
319
+ |---|---|---|
320
+ | workflows:setup | hooks=seedDefaults; roles=admin | [node_modules/@open-mercato/core/src/modules/workflows/setup.ts:5](../../../node_modules/@open-mercato/core/src/modules/workflows/setup.ts#L5) |
321
+
322
+ ## DI registrations (rich)
323
+
324
+ | Token | Kind | Lifetime | Injection | Provider | Source |
325
+ |---|---|---|---|---|---|
326
+ | activityExecutor | function | scoped | — | — | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:42](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L42) |
327
+ | eventLogger | function | scoped | — | — | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:43](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L43) |
328
+ | signalHandler | function | scoped | — | — | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:44](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L44) |
329
+ | stepHandler | function | scoped | — | — | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:40](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L40) |
330
+ | timerHandler | function | scoped | — | — | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:45](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L45) |
331
+ | transitionHandler | function | scoped | — | — | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:41](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L41) |
332
+ | workflowExecutor | function | scoped | — | — | [node_modules/@open-mercato/core/src/modules/workflows/di.ts:39](../../../node_modules/@open-mercato/core/src/modules/workflows/di.ts#L39) |
@@ -137,7 +137,7 @@ Most `om-*` automation skills come from the shared [open-mercato/skills](https:/
137
137
 
138
138
  1. **Spec-first**: Enter plan mode for non-trivial tasks (3+ steps or architectural decisions). Check `.ai/specs/` and `.ai/specs/enterprise/` before coding; name new spec files `{YYYY-MM-DD}-{kebab-case-title}.md`. Skip for small fixes. Skills: `om-spec-writing` (research/phasing), `om-pre-implement-spec` (readiness audit), `om-implement-spec` (execution).
139
139
  2. **Subagent strategy**: Use subagents liberally to keep main context clean. Offload research and parallel analysis. One task per subagent.
140
- 3. **Self-improvement**: After corrections, update `.ai/lessons.md` or relevant AGENTS.md. Write rules that prevent the same mistake.
140
+ 3. **Self-improvement**: After corrections, scan `.ai/lessons.md`; update one tagged lesson record + index row or the relevant AGENTS.md. Never bulk-read lessons.
141
141
  4. **Verification**: Run tests, check build, suggest user verification. Ask: "Would a staff engineer approve this?"
142
142
  5. **Elegance**: For non-trivial changes, pause and ask "is there a more elegant way?" Skip for simple fixes.
143
143
  6. **Autonomous bug fixing**: When given a bug report, just fix it. Point at logs/errors, then resolve. Zero hand-holding.
@@ -87,6 +87,8 @@ These exported types are consumed by module developers. Required fields MUST NOT
87
87
  - `OAuthClientConfig` (communication_channels hub): added 2026-05-27 with `clientId` required; optional `clientSecret`, `tenantId`, `scopes`. New optional fields may be added; required `clientId` MUST NOT be removed.
88
88
  - `BackendChromePayload`: `groups`, `settingsSections`, `settingsPathPrefixes`, `profileSections`, `profilePathPrefixes`, `grantedFeatures`, `roles` — MUST NOT remove. `currentOrganization?` (`BackendChromeCurrentOrganization | null`) was added 2026-07-30 as an additive optional field (see [spec](.ai/specs/2026-07-30-backend-chrome-current-organization.md)); it is `null` under an all-organizations selection, when no organization is in scope, and when the lookup fails, so consumers MUST treat `null` as "unknown" rather than "no organization". `brand?` is **unchanged** and remains the branding channel — it populates only when the organization has a `logoUrl`, and `currentOrganization` does not supersede it.
89
89
 
90
+ **STABLE field shape, changed value semantics in 0.6.8:** each entry in `BackendChromePayload.settingsSections` keeps its `id`, `label`, `labelKey`, `order`, and `items` fields, but `id` is now the section's **untranslated group id** (the page's `pageGroupKey`, e.g. `settings.sections.moduleConfigs`) instead of a slug of the rendered group label. The old value was locale-dependent, so it could not be targeted reliably (see [#4843](https://github.com/open-mercato/open-mercato/issues/4843)). Consumers matching a settings section — notably injected `menuItems[].groupId` — MUST use the group id, which is the form the widget-injection documentation already prescribes. `buildSettingsSections`' `sectionOrder` parameter keeps a deprecated fallback lookup on the old label slug for at least one minor release.
91
+
90
92
  ### 3. Function Signatures (STABLE)
91
93
 
92
94
  These functions are called directly by module code. Their signatures MUST NOT change in a breaking way. New optional parameters may be added.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": 1,
3
- "generator": "@open-mercato/cli@0.6.7-develop.6795.1.8a3f27921c",
3
+ "generator": "@open-mercato/cli@0.6.7-develop.6824.1.21fff90682",
4
4
  "files": {
5
- "AGENTS.md": "7dd1e874d8abf251d891b0341d8e05fb5bb7724f2fbfb2b3aaa36d23b8188e28",
6
- "BACKWARD_COMPATIBILITY.md": "ab0d595f5c9d4f947ac0dd7d0ffd9f2cec26c6300dde9531a3d646321037b565"
5
+ "AGENTS.md": "04c3bba445491b2232858ab23d5bd807c0e6e8e03576e2e2fdfa2834113a2350",
6
+ "BACKWARD_COMPATIBILITY.md": "6e8e2640a92fd0b026c74e28af3c7afc4ce1fa7423b52ce25b1010d4f9de1d4e"
7
7
  }
8
8
  }
@@ -1,23 +1,24 @@
1
1
  # {{PROJECT_NAME}} — Standalone App Agent Rules
2
2
 
3
- Extend this app. Route first; never probe unmatched context.
3
+ Route first; never probe unmatched context.
4
4
 
5
5
  ## Always
6
6
 
7
7
  - Route all axes; missing context: `yarn mercato agentic:init --update-harness`.
8
- - App code: `src/modules/<id>/`; framework context only for a named version gap.
8
+ - Lessons: scan `.ai/lessons.md` tags; open/update one matching record + row.
9
+ - App code: `src/modules/<id>/`; framework context only for named gaps.
9
10
  - Derive trusted `tenantId` + `organizationId` and fail closed. Only an installed contract may use system scope (`organizationId: null`).
10
11
  - Use commands/`makeCrudRoute`/`CrudForm`/`DataTable`, DI/events/UMES; effects stay post-commit.
11
12
  - Put entities in `src/modules/<id>/data/entities.ts`; API routes need per-method `metadata` + `openApi`.
12
13
  - Editable records expose `updated_at`/`updatedAt`; custom update/delete clients send the version and surface 409s.
13
14
  - Run `yarn db:generate`, review scoped SQL/snapshot, and ask before applying it.
14
15
  - Run `yarn generate` after discovery files, `src/modules.ts`, routes, pages, events, widgets, agents, tools, or workflows change.
15
- - Adding/changing/removing, preserving, or keeping stable a public route/schema/ID/export/seam/signature/event-payload/CLI MUST read `.ai/guides/upstream/BACKWARD_COMPATIBILITY.md`; tenant/org scope alone is not a contract surface.
16
- - Localize strings; use shared UI/tokens and complete loading, empty, error, conflict, keyboard, and a11y states.
16
+ - Contract-surface changes (route/schema/ID/export/seam/signature/event payload/CLI) MUST read `.ai/guides/upstream/BACKWARD_COMPATIBILITY.md`; tenant/org scope alone is not a contract.
17
+ - Localize strings; use shared UI/tokens and cover loading/empty/error/conflict/keyboard/a11y.
17
18
 
18
19
  ## Ask First
19
20
 
20
- - Ask before scope/architecture/public-contract/dependency/ejection/canonical-primitive changes; migrations/resets/DB targets; live credentials/providers; or weaker security, concurrency, retries, idempotency, audit, undo.
21
+ - Ask before scope/architecture/public contracts/dependencies/ejection/canonical primitives; migrations/resets/DB targets; live credentials/providers; or weakening security/concurrency/retries/idempotency/audit/undo.
21
22
 
22
23
  ## Never
23
24
 
@@ -1,6 +1,6 @@
1
1
  # Agent harness evaluations
2
2
 
3
- `cases.json` is the 202-case standalone-app contract. Run `yarn harness:validate --all` for the deterministic gate. Live routing uses a fresh read-only process per case:
3
+ `cases.json` is the 203-case standalone-app contract. Run `yarn harness:validate --all` for the deterministic gate. Live routing uses a fresh read-only process per case:
4
4
 
5
5
  UMES routing is fact-first. The additive and unified-override audit evaluations, plus their targeted cases, resolve exact/pattern hosts, outgoing contributions, correlation provenance, round-trip groups, framework-owned targets, and override domain/key/mode from the generated module sheets and `.ai/guides/framework-extension-points.md` before bounded installed source. The repository UMES umbrella spec may appear as optional source-checkout provenance; it is never required in a standalone scaffold.
6
6
 
@@ -18,7 +18,7 @@ yarn harness:release --runner codex --prepare-targets /absolute/empty-release-ta
18
18
  yarn harness:release --runner codex --portability-runner claude --prepare-targets /absolute/empty-release-targets --acknowledge-writes
19
19
  ```
20
20
 
21
- The primary runner owns all 202 routing cases, all 46 writable cases, and all generative-judge runs. No per-case fallback or mixed primary ownership is allowed. Omitting `--portability-runner` is valid and the sanitized report records `portabilityRunner: null`; explicitly requesting an unavailable or failing secondary runner fails that extended run.
21
+ The primary runner owns all 203 routing cases, all 46 writable cases, and all generative-judge runs. No per-case fallback or mixed primary ownership is allowed. Omitting `--portability-runner` is valid and the sanitized report records `portabilityRunner: null`; explicitly requesting an unavailable or failing secondary runner fails that extended run.
22
22
 
23
23
  Writable evaluation is intentionally opt-in. The expanded catalog has a 46-case writable release target, but only cases registered in `release-matrix.json` and backed by controller-owned fixtures and oracles are executable. Copy or create a fresh standalone app for one registered case, then seed only that case and mark the target disposable:
24
24