@open-mercato/cli 0.6.7-develop.6863.1.61001cf9a8 → 0.6.7

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 (278) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/build.mjs +7 -24
  3. package/dist/agentic/claude-code/hooks/entity-migration-check.ts +88 -32
  4. package/dist/agentic/codex/enforcement-rules.md +16 -2
  5. package/dist/agentic/cursor/hooks/entity-migration-check.mjs +50 -19
  6. package/dist/agentic/cursor/rules/entity-guard.mdc +21 -9
  7. package/dist/agentic/cursor/rules/generated-guard.mdc +5 -3
  8. package/dist/agentic/cursor/rules/open-mercato.mdc +29 -3
  9. package/dist/agentic/guides/cache.md +45 -0
  10. package/dist/agentic/guides/core.md +453 -0
  11. package/dist/agentic/guides/events.md +117 -0
  12. package/dist/agentic/guides/module-facts.json +3833 -115419
  13. package/dist/agentic/guides/module-system.md +127 -12
  14. package/dist/agentic/guides/modules/ai_assistant.md +28 -227
  15. package/dist/agentic/guides/modules/api_docs.md +2 -58
  16. package/dist/agentic/guides/modules/api_keys.md +7 -92
  17. package/dist/agentic/guides/modules/attachments.md +14 -119
  18. package/dist/agentic/guides/modules/audit_logs.md +10 -131
  19. package/dist/agentic/guides/modules/auth.md +33 -276
  20. package/dist/agentic/guides/modules/business_rules.md +14 -149
  21. package/dist/agentic/guides/modules/catalog.md +43 -475
  22. package/dist/agentic/guides/modules/channel_gmail.md +3 -82
  23. package/dist/agentic/guides/modules/channel_imap.md +3 -82
  24. package/dist/agentic/guides/modules/checkout.md +27 -299
  25. package/dist/agentic/guides/modules/communication_channels.md +33 -315
  26. package/dist/agentic/guides/modules/configs.md +8 -104
  27. package/dist/agentic/guides/modules/content.md +2 -57
  28. package/dist/agentic/guides/modules/currencies.md +17 -152
  29. package/dist/agentic/guides/modules/customer_accounts.md +45 -387
  30. package/dist/agentic/guides/modules/customers.md +85 -746
  31. package/dist/agentic/guides/modules/dashboards.md +10 -155
  32. package/dist/agentic/guides/modules/data_sync.md +16 -149
  33. package/dist/agentic/guides/modules/dictionaries.md +12 -107
  34. package/dist/agentic/guides/modules/directory.md +15 -148
  35. package/dist/agentic/guides/modules/entities.md +13 -145
  36. package/dist/agentic/guides/modules/events.md +2 -59
  37. package/dist/agentic/guides/modules/feature_toggles.md +9 -119
  38. package/dist/agentic/guides/modules/gateway_stripe.md +4 -92
  39. package/dist/agentic/guides/modules/generators.md +2 -45
  40. package/dist/agentic/guides/modules/inbox_ops.md +27 -207
  41. package/dist/agentic/guides/modules/integrations.md +16 -146
  42. package/dist/agentic/guides/modules/messages.md +24 -223
  43. package/dist/agentic/guides/modules/notifications.md +8 -96
  44. package/dist/agentic/guides/modules/onboarding.md +6 -77
  45. package/dist/agentic/guides/modules/payment_gateways.md +21 -164
  46. package/dist/agentic/guides/modules/perspectives.md +7 -77
  47. package/dist/agentic/guides/modules/planner.md +18 -136
  48. package/dist/agentic/guides/modules/portal.md +2 -93
  49. package/dist/agentic/guides/modules/progress.md +14 -104
  50. package/dist/agentic/guides/modules/query_index.md +15 -154
  51. package/dist/agentic/guides/modules/record_locks.md +21 -206
  52. package/dist/agentic/guides/modules/resources.md +30 -197
  53. package/dist/agentic/guides/modules/sales.md +84 -678
  54. package/dist/agentic/guides/modules/scheduler.md +14 -133
  55. package/dist/agentic/guides/modules/search.md +6 -170
  56. package/dist/agentic/guides/modules/security.md +35 -294
  57. package/dist/agentic/guides/modules/shipping_carriers.md +18 -134
  58. package/dist/agentic/guides/modules/sso.md +26 -151
  59. package/dist/agentic/guides/modules/staff.md +57 -369
  60. package/dist/agentic/guides/modules/storage_s3.md +5 -95
  61. package/dist/agentic/guides/modules/sync_akeneo.md +3 -85
  62. package/dist/agentic/guides/modules/sync_excel.md +6 -75
  63. package/dist/agentic/guides/modules/system_status_overlays.md +2 -60
  64. package/dist/agentic/guides/modules/translations.md +10 -104
  65. package/dist/agentic/guides/modules/webhooks.md +24 -203
  66. package/dist/agentic/guides/modules/wms.md +46 -441
  67. package/dist/agentic/guides/modules/workflows.md +43 -302
  68. package/dist/agentic/guides/queue.md +53 -0
  69. package/dist/agentic/guides/search.md +115 -0
  70. package/dist/agentic/guides/shared.md +108 -0
  71. package/dist/agentic/guides/ui.md +347 -0
  72. package/dist/agentic/shared/AGENTS.md.template +311 -124
  73. package/dist/agentic/shared/ai/agentic.config.json +0 -2
  74. package/dist/agentic/shared/ai/lessons.md +3 -26
  75. package/dist/agentic/shared/ai/skills/om-auto-continue-pr-loop/SKILL.md +27 -0
  76. package/dist/agentic/shared/ai/skills/om-auto-create-pr-loop/SKILL.md +27 -0
  77. package/dist/agentic/shared/ai/skills/om-auto-review-pr/SKILL.md +0 -4
  78. package/dist/agentic/shared/ai/skills/om-backend-ui-design/SKILL.md +241 -20
  79. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/ui-components.md +260 -0
  80. package/dist/agentic/shared/ai/skills/om-data-model-design/SKILL.md +601 -16
  81. package/dist/agentic/shared/ai/skills/om-data-model-design/references/mikro-orm-cheatsheet.md +146 -0
  82. package/dist/agentic/shared/ai/skills/om-eject-and-customize/SKILL.md +310 -14
  83. package/dist/agentic/shared/ai/skills/om-help/SKILL.md +97 -15
  84. package/dist/agentic/shared/ai/skills/om-help/references/skills-catalog.md +84 -0
  85. package/dist/agentic/shared/ai/skills/om-help/references/workflow-sequences.md +193 -0
  86. package/dist/agentic/shared/ai/skills/om-implement-spec/SKILL.md +152 -33
  87. package/dist/agentic/shared/ai/skills/om-integration-builder/SKILL.md +708 -24
  88. package/dist/agentic/shared/ai/skills/om-integration-builder/STANDALONE.md +34 -0
  89. package/dist/agentic/shared/ai/skills/om-integration-builder/references/adapter-contracts.md +762 -0
  90. package/dist/agentic/shared/ai/skills/om-module-scaffold/SKILL.md +820 -20
  91. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/naming-conventions.md +50 -0
  92. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/navigation-patterns.md +97 -0
  93. package/dist/agentic/shared/ai/skills/om-system-extension/SKILL.md +843 -19
  94. package/dist/agentic/shared/ai/skills/om-system-extension/references/extension-contracts.md +271 -0
  95. package/dist/agentic/shared/ai/skills/om-trim-unused-modules/SKILL.md +63 -15
  96. package/dist/agentic/shared/ai/skills/om-troubleshooter/SKILL.md +467 -16
  97. package/dist/agentic/shared/ai/skills/om-troubleshooter/references/diagnostic-commands.md +101 -0
  98. package/dist/agentic/shared/ai/skills/tiers.json +21 -143
  99. package/dist/agentic/shared/ai/skills/tiers.schema.json +40 -52
  100. package/dist/agentic/shared/ai/specs/README.md +3 -4
  101. package/dist/agentic/shared/ai/specs/SPEC-000-template.md +10 -226
  102. package/dist/agentic/shared/ai/trackers/github.md +4 -108
  103. package/dist/agentic/shared/scripts/install-skills.sh +694 -4
  104. package/dist/bin.js +1 -13
  105. package/dist/bin.js.map +2 -2
  106. package/dist/lib/__integration__/TC-INT-008.spec.js +8 -88
  107. package/dist/lib/__integration__/TC-INT-008.spec.js.map +2 -2
  108. package/dist/lib/agentic-init.js +3 -13
  109. package/dist/lib/agentic-init.js.map +2 -2
  110. package/dist/lib/agentic-setup.js +186 -418
  111. package/dist/lib/agentic-setup.js.map +2 -2
  112. package/dist/lib/generators/extensions/injection-widgets.js +0 -20
  113. package/dist/lib/generators/extensions/injection-widgets.js.map +2 -2
  114. package/dist/lib/generators/module-facts-discovery.js +7 -41
  115. package/dist/lib/generators/module-facts-discovery.js.map +2 -2
  116. package/dist/lib/generators/module-facts.js +45 -1387
  117. package/dist/lib/generators/module-facts.js.map +3 -3
  118. package/dist/lib/generators/module-registry.js +5 -11
  119. package/dist/lib/generators/module-registry.js.map +2 -2
  120. package/dist/lib/resolver.js +0 -2
  121. package/dist/lib/resolver.js.map +2 -2
  122. package/dist/lib/testing/integration.js +0 -5
  123. package/dist/lib/testing/integration.js.map +2 -2
  124. package/dist/mercato.js +1 -23
  125. package/dist/mercato.js.map +2 -2
  126. package/package.json +11 -13
  127. package/src/bin.ts +1 -33
  128. package/src/lib/__integration__/TC-INT-008.spec.ts +9 -107
  129. package/src/lib/__tests__/agentic-init.test.ts +5 -41
  130. package/src/lib/agentic-init.ts +3 -15
  131. package/src/lib/agentic-setup.ts +224 -530
  132. package/src/lib/generators/__tests__/module-facts.bc-guard.test.ts +2 -88
  133. package/src/lib/generators/__tests__/module-facts.customers.fixture.test.ts +0 -1
  134. package/src/lib/generators/__tests__/module-facts.discovery.test.ts +10 -54
  135. package/src/lib/generators/__tests__/module-subset.test.ts +0 -18
  136. package/src/lib/generators/extensions/injection-widgets.ts +0 -51
  137. package/src/lib/generators/module-facts-discovery.ts +7 -58
  138. package/src/lib/generators/module-facts.ts +46 -1851
  139. package/src/lib/generators/module-registry.ts +6 -16
  140. package/src/lib/resolver.ts +0 -3
  141. package/src/lib/testing/__tests__/integration.test.ts +0 -4
  142. package/src/lib/testing/integration.ts +0 -5
  143. package/src/mercato.ts +1 -26
  144. package/dist/agentic/guides/ai-workflows.md +0 -76
  145. package/dist/agentic/guides/architecture.md +0 -107
  146. package/dist/agentic/guides/backend-ui.md +0 -80
  147. package/dist/agentic/guides/contracts.md +0 -92
  148. package/dist/agentic/guides/extensions.md +0 -121
  149. package/dist/agentic/guides/framework-extension-points.md +0 -36
  150. package/dist/agentic/guides/integrations.md +0 -81
  151. package/dist/agentic/guides/modules/design_system.md +0 -102
  152. package/dist/agentic/guides/spec-delivery.md +0 -22
  153. package/dist/agentic/guides/testing-debugging.md +0 -80
  154. package/dist/agentic/guides/upstream/AGENTS.md +0 -298
  155. package/dist/agentic/guides/upstream/BACKWARD_COMPATIBILITY.md +0 -316
  156. package/dist/agentic/guides/upstream/manifest.json +0 -8
  157. package/dist/agentic/shared/ai/harness/README.md +0 -50
  158. package/dist/agentic/shared/ai/harness/RELEASE.md +0 -57
  159. package/dist/agentic/shared/ai/harness/cases.json +0 -13680
  160. package/dist/agentic/shared/ai/harness/cases.schema.json +0 -133
  161. package/dist/agentic/shared/ai/harness/fixtures/index.json +0 -49
  162. package/dist/agentic/shared/ai/harness/fixtures/seeds.json +0 -162
  163. package/dist/agentic/shared/ai/harness/generated-code-review-policy.md +0 -21
  164. package/dist/agentic/shared/ai/harness/generated-code-review-response.schema.json +0 -96
  165. package/dist/agentic/shared/ai/harness/generated-code-review-result.schema.json +0 -172
  166. package/dist/agentic/shared/ai/harness/release-matrix.json +0 -158
  167. package/dist/agentic/shared/ai/harness/release-result.schema.json +0 -219
  168. package/dist/agentic/shared/ai/harness/result.schema.json +0 -76
  169. package/dist/agentic/shared/ai/harness/routing-response.schema.json +0 -12
  170. package/dist/agentic/shared/ai/harness/target-validation-result.schema.json +0 -73
  171. package/dist/agentic/shared/ai/harness/validators.json +0 -78
  172. package/dist/agentic/shared/ai/harness/writable-ast-oracles.mjs +0 -2121
  173. package/dist/agentic/shared/ai/harness/writable-behavior-oracles.mjs +0 -1096
  174. package/dist/agentic/shared/ai/lessons/_template.md +0 -16
  175. package/dist/agentic/shared/ai/review-checklist.md +0 -36
  176. package/dist/agentic/shared/ai/skills/om-auto-implement-spec/SKILL.md +0 -21
  177. package/dist/agentic/shared/ai/skills/om-auto-upgrade-0.6.6-to-0.6.7/SKILL.md +0 -98
  178. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/crud-surfaces.md +0 -16
  179. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/frontend-and-design-system.md +0 -53
  180. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/page-and-navigation.md +0 -13
  181. package/dist/agentic/shared/ai/skills/om-backend-ui-design/references/quality-states.md +0 -11
  182. package/dist/agentic/shared/ai/skills/om-build-workflow/SKILL.md +0 -30
  183. package/dist/agentic/shared/ai/skills/om-build-workflow/references/activity-contracts.md +0 -12
  184. package/dist/agentic/shared/ai/skills/om-build-workflow/references/durability-and-progress.md +0 -13
  185. package/dist/agentic/shared/ai/skills/om-build-workflow/references/workflow-design.md +0 -14
  186. package/dist/agentic/shared/ai/skills/om-create-ai-agent/SKILL.md +0 -28
  187. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/attachments-and-overrides.md +0 -12
  188. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/module-agents-and-tools.md +0 -22
  189. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/orchestrator-agents.md +0 -12
  190. package/dist/agentic/shared/ai/skills/om-create-ai-agent/references/surface-selector.md +0 -19
  191. package/dist/agentic/shared/ai/skills/om-data-model-design/references/integrity-and-concurrency.md +0 -19
  192. package/dist/agentic/shared/ai/skills/om-data-model-design/references/migration-workflow.md +0 -13
  193. package/dist/agentic/shared/ai/skills/om-data-model-design/references/schema-design.md +0 -14
  194. package/dist/agentic/shared/ai/skills/om-data-model-design/references/sensitive-data.md +0 -10
  195. package/dist/agentic/shared/ai/skills/om-eject-and-customize/references/decision-and-procedure.md +0 -17
  196. package/dist/agentic/shared/ai/skills/om-evolve-harness/SKILL.md +0 -29
  197. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/case-template.md +0 -100
  198. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/case-workflow.md +0 -16
  199. package/dist/agentic/shared/ai/skills/om-evolve-harness/references/owner-selection.md +0 -17
  200. package/dist/agentic/shared/ai/skills/om-framework-context/SKILL.md +0 -25
  201. package/dist/agentic/shared/ai/skills/om-framework-context/references/resolver-procedure.md +0 -11
  202. package/dist/agentic/shared/ai/skills/om-framework-context/references/skew-and-escalation.md +0 -13
  203. package/dist/agentic/shared/ai/skills/om-help/references/delivery-workflows.md +0 -18
  204. package/dist/agentic/shared/ai/skills/om-help/references/task-families.md +0 -20
  205. package/dist/agentic/shared/ai/skills/om-implement-spec/references/phases-and-gates.md +0 -33
  206. package/dist/agentic/shared/ai/skills/om-implement-spec/references/planning-and-progress.md +0 -40
  207. package/dist/agentic/shared/ai/skills/om-implement-spec/references/report-templates.md +0 -27
  208. package/dist/agentic/shared/ai/skills/om-implement-spec/references/spec-resolution.md +0 -24
  209. package/dist/agentic/shared/ai/skills/om-integration-builder/references/package-and-activation.md +0 -16
  210. package/dist/agentic/shared/ai/skills/om-integration-builder/references/provider-families.md +0 -14
  211. package/dist/agentic/shared/ai/skills/om-integration-builder/references/security-and-reliability.md +0 -15
  212. package/dist/agentic/shared/ai/skills/om-integration-builder/references/sync-and-files.md +0 -12
  213. package/dist/agentic/shared/ai/skills/om-judge-agent-session/SKILL.md +0 -34
  214. package/dist/agentic/shared/ai/skills/om-judge-agent-session/agents/openai.yaml +0 -4
  215. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/agentic-setup.md +0 -11
  216. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/input-normalization.md +0 -31
  217. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/judge-workflow.md +0 -39
  218. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/report-template.md +0 -43
  219. package/dist/agentic/shared/ai/skills/om-judge-agent-session/references/rules.md +0 -11
  220. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/api-and-domain.md +0 -19
  221. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/business-one-shot-blueprints.md +0 -172
  222. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/data-and-migrations.md +0 -12
  223. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/discovery-surface-catalog.md +0 -83
  224. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/module-surfaces.md +0 -21
  225. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/planning.md +0 -11
  226. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/runtime-cache-and-queues.md +0 -22
  227. package/dist/agentic/shared/ai/skills/om-module-scaffold/references/verification.md +0 -13
  228. package/dist/agentic/shared/ai/skills/om-share-this-session/SKILL.md +0 -41
  229. package/dist/agentic/shared/ai/skills/om-share-this-session/references/agentic-setup.md +0 -19
  230. package/dist/agentic/shared/ai/skills/om-share-this-session/references/bundle-preparation.md +0 -44
  231. package/dist/agentic/shared/ai/skills/om-share-this-session/references/consent-and-review.md +0 -39
  232. package/dist/agentic/shared/ai/skills/om-share-this-session/references/publication.md +0 -20
  233. package/dist/agentic/shared/ai/skills/om-share-this-session/references/report-templates.md +0 -57
  234. package/dist/agentic/shared/ai/skills/om-share-this-session/references/rules.md +0 -11
  235. package/dist/agentic/shared/ai/skills/om-share-this-session/scripts/prepare-share-bundle.mjs +0 -486
  236. package/dist/agentic/shared/ai/skills/om-system-extension/references/extension-branches.md +0 -18
  237. package/dist/agentic/shared/ai/skills/om-system-extension/references/mechanism-selector.md +0 -27
  238. package/dist/agentic/shared/ai/skills/om-system-extension/references/read-write-roundtrip.md +0 -13
  239. package/dist/agentic/shared/ai/skills/om-system-extension/references/unified-overrides.md +0 -41
  240. package/dist/agentic/shared/ai/skills/om-system-extension/references/verification.md +0 -11
  241. package/dist/agentic/shared/ai/skills/om-trim-unused-modules/references/dependency-and-redirect.md +0 -15
  242. package/dist/agentic/shared/ai/skills/om-troubleshooter/references/diagnosis-map.md +0 -16
  243. package/dist/agentic/shared/ai/skills/om-troubleshooter/references/regression-oracles.md +0 -14
  244. package/dist/agentic/shared/scripts/agent-harness-tool-server.mjs +0 -187
  245. package/dist/agentic/shared/scripts/check-lessons.mjs +0 -178
  246. package/dist/agentic/shared/scripts/evaluate-agent-harness.mjs +0 -2958
  247. package/dist/agentic/shared/scripts/execution-sandbox.mjs +0 -329
  248. package/dist/agentic/shared/scripts/framework-context.mjs +0 -888
  249. package/dist/agentic/shared/scripts/install-skills.mjs +0 -1029
  250. package/dist/agentic/shared/scripts/prepare-agent-harness-fixture.mjs +0 -222
  251. package/dist/agentic/shared/scripts/run-agent-harness-release.mjs +0 -1774
  252. package/dist/lib/generators/module-extension-facts.js +0 -1840
  253. package/dist/lib/generators/module-extension-facts.js.map +0 -7
  254. package/dist/lib/generators/module-fact-sources.js +0 -70
  255. package/dist/lib/generators/module-fact-sources.js.map +0 -7
  256. package/dist/lib/generators/module-override-targets.js +0 -688
  257. package/dist/lib/generators/module-override-targets.js.map +0 -7
  258. package/dist/lib/load-env.js +0 -24
  259. package/dist/lib/load-env.js.map +0 -7
  260. package/dist/lib/telemetry-init.js +0 -358
  261. package/dist/lib/telemetry-init.js.map +0 -7
  262. package/src/lib/__tests__/agentic-setup.ownership.test.ts +0 -386
  263. package/src/lib/__tests__/injection-widget-id-validation.test.ts +0 -184
  264. package/src/lib/__tests__/load-env.test.ts +0 -65
  265. package/src/lib/__tests__/telemetry-init.test.ts +0 -298
  266. package/src/lib/generators/__tests__/activation-adapter-coverage.test.ts +0 -92
  267. package/src/lib/generators/__tests__/module-extension-activations.test.ts +0 -762
  268. package/src/lib/generators/__tests__/module-extension-facts.test.ts +0 -404
  269. package/src/lib/generators/__tests__/module-facts.extension-hosts.test.ts +0 -108
  270. package/src/lib/generators/__tests__/module-facts.owned-contracts.test.ts +0 -561
  271. package/src/lib/generators/__tests__/module-facts.source-links.test.ts +0 -119
  272. package/src/lib/generators/__tests__/module-override-targets.roundtrip.test.ts +0 -149
  273. package/src/lib/generators/__tests__/module-override-targets.test.ts +0 -304
  274. package/src/lib/generators/module-extension-facts.ts +0 -2365
  275. package/src/lib/generators/module-fact-sources.ts +0 -108
  276. package/src/lib/generators/module-override-targets.ts +0 -863
  277. package/src/lib/load-env.ts +0 -30
  278. package/src/lib/telemetry-init.ts +0 -461
@@ -3,146 +3,30 @@
3
3
  "default": ["core"],
4
4
  "external": {
5
5
  "source": "open-mercato/skills",
6
- "ref": "c6103c034571f3610323a1b53d97c81abe110b58",
7
- "description": "Tier-selected delivery workflows installed at an exact tested collection commit. Same-name folders under .ai/skills are repo-local overrides and never replace these copies.",
8
- "tiers": {
9
- "core": {
10
- "description": "Smallest dependency-closed set for daily standalone delivery.",
11
- "skills": [
12
- "om-spec-writing",
13
- "om-code-review",
14
- "om-integration-tests",
15
- "om-prepare-test-env",
16
- "om-auto-create-pr",
17
- "om-auto-continue-pr",
18
- "om-auto-review-pr",
19
- "om-auto-implement-spec",
20
- "om-auto-qa-pr",
21
- "om-auto-fix-issue",
22
- "om-verify-in-repo",
23
- "om-root-cause",
24
- "om-fix",
25
- "om-open-pr",
26
- "om-setup-agent-pipeline"
27
- ]
28
- },
29
- "automation": {
30
- "description": "Opt-in loop engines, issue authoring, and release-upgrade maintenance.",
31
- "skills": [
32
- "om-apply-upgrade-notes",
33
- "om-auto-create-pr-loop",
34
- "om-auto-continue-pr-loop",
35
- "om-auto-write-spec",
36
- "om-prepare-issue"
37
- ]
38
- }
39
- },
6
+ "description": "Skills installed from the shared open-mercato/skills collection via `npx skills add` (see scripts/install-skills.sh). Only the subset this standalone app ships is installed. A folder under .ai/skills/ matching one of these names is a repo-local override read by the external skill, never symlinked into the harness directories.",
40
7
  "skills": [
41
- "om-spec-writing",
42
- "om-code-review",
43
- "om-integration-tests",
44
- "om-prepare-test-env",
45
8
  "om-apply-upgrade-notes",
46
- "om-auto-create-pr",
47
9
  "om-auto-continue-pr",
48
- "om-auto-create-pr-loop",
49
10
  "om-auto-continue-pr-loop",
50
- "om-auto-review-pr",
51
- "om-auto-implement-spec",
52
- "om-auto-write-spec",
53
- "om-auto-qa-pr",
11
+ "om-auto-create-pr",
12
+ "om-auto-create-pr-loop",
54
13
  "om-auto-fix-issue",
55
- "om-prepare-issue",
56
- "om-verify-in-repo",
57
- "om-root-cause",
14
+ "om-auto-review-pr",
15
+ "om-code-review",
58
16
  "om-fix",
17
+ "om-integration-tests",
59
18
  "om-open-pr",
60
- "om-setup-agent-pipeline"
61
- ],
62
- "dependencies": {
63
- "om-spec-writing": [],
64
- "om-code-review": ["om-setup-agent-pipeline"],
65
- "om-integration-tests": ["om-prepare-test-env"],
66
- "om-prepare-test-env": [],
67
- "om-apply-upgrade-notes": ["om-setup-agent-pipeline"],
68
- "om-auto-create-pr": ["om-auto-review-pr", "om-setup-agent-pipeline"],
69
- "om-auto-continue-pr": ["om-auto-review-pr", "om-setup-agent-pipeline"],
70
- "om-auto-create-pr-loop": [
71
- "om-auto-continue-pr-loop",
72
- "om-auto-review-pr",
73
- "om-integration-tests",
74
- "om-setup-agent-pipeline"
75
- ],
76
- "om-auto-continue-pr-loop": [
77
- "om-auto-review-pr",
78
- "om-integration-tests",
79
- "om-open-pr",
80
- "om-setup-agent-pipeline"
81
- ],
82
- "om-auto-review-pr": ["om-code-review", "om-setup-agent-pipeline"],
83
- "om-auto-implement-spec": [
84
- "om-auto-create-pr",
85
- "om-auto-continue-pr",
86
- "om-auto-review-pr",
87
- "om-auto-qa-pr",
88
- "om-setup-agent-pipeline"
89
- ],
90
- "om-auto-qa-pr": [
91
- "om-auto-review-pr",
92
- "om-integration-tests",
93
- "om-prepare-test-env",
94
- "om-setup-agent-pipeline"
95
- ],
96
- "om-auto-write-spec": ["om-spec-writing", "om-open-pr", "om-setup-agent-pipeline"],
97
- "om-auto-fix-issue": [
98
- "om-auto-implement-spec",
99
- "om-auto-qa-pr",
100
- "om-auto-review-pr",
101
- "om-verify-in-repo",
102
- "om-root-cause",
103
- "om-fix",
104
- "om-open-pr",
105
- "om-setup-agent-pipeline"
106
- ],
107
- "om-prepare-issue": [
108
- "om-auto-write-spec",
109
- "om-auto-fix-issue",
110
- "om-auto-implement-spec",
111
- "om-spec-writing",
112
- "om-setup-agent-pipeline"
113
- ],
114
- "om-verify-in-repo": ["om-setup-agent-pipeline"],
115
- "om-root-cause": ["om-setup-agent-pipeline"],
116
- "om-fix": ["om-setup-agent-pipeline"],
117
- "om-open-pr": ["om-setup-agent-pipeline"],
118
- "om-setup-agent-pipeline": []
119
- },
120
- "contentHashes": {
121
- "om-spec-writing": "sha256:80d5def47ff844748b1c7407cae8b8ee8588ccdfaee54022e15de885d59fa398",
122
- "om-code-review": "sha256:f4503da210e6e5eb7d79a0972d3922a2888d8aed93e98a1bb73091c0dc2a750e",
123
- "om-integration-tests": "sha256:a1385dbb9fe11fe8c7a16dbe8576e44b9e03f34254e5575955d5a6ea862ee741",
124
- "om-prepare-test-env": "sha256:ccfeb9accfffeaf35423576aacc08c9a6e3d3b07ecf8f72da694878fb3a571ab",
125
- "om-apply-upgrade-notes": "sha256:15d4166a9229ebe15365ad3ef50919443478ef5f4c1f2e7cccbf1b8a61482d0d",
126
- "om-auto-create-pr": "sha256:fe5a8ff632234c74cd1b948dfa2f69bf79683df067d3b8bc116d7a954d017138",
127
- "om-auto-continue-pr": "sha256:ced195e0e571672188b34322a9c215df225a9a1822e1db27f6b864b01624e66e",
128
- "om-auto-create-pr-loop": "sha256:0e7c015705a89e623c4f6865901121404feb1f443e0e096facb2a337ad9d33a5",
129
- "om-auto-continue-pr-loop": "sha256:2997eb7cbf131e1b88abf05ad930e793675c3cd1db1fece18438ec21b327c6ef",
130
- "om-auto-review-pr": "sha256:c05b3f45de9563faa0561a3a12129f4fda8bb1780f60d1cdcce7383e75e2d1c5",
131
- "om-auto-implement-spec": "sha256:f5408771aa3765c9c8f2709f5d17247d9b8fef19fd2461c2fedf25c90bb8cda7",
132
- "om-auto-write-spec": "sha256:b0d79e189fef7f5c03540becda01d933f5153e39276988f58f9c1dd81e9887f7",
133
- "om-auto-qa-pr": "sha256:bff71bf4020a1e92b56a17f35f9c63c5f8f942e95048d5bbdf5589443c2cbda9",
134
- "om-auto-fix-issue": "sha256:8ca990752fc1e73f2a70902d567b94da6c74b15f4e409410aa27ba09b1506521",
135
- "om-prepare-issue": "sha256:07dd578b00902e65abb408e233688675cc92d6783af1a43257ebfd2d5be34663",
136
- "om-verify-in-repo": "sha256:2fcf67187b129261aeb59b53c8058e95eb91c1f3c0314756ff5f432a34c43a62",
137
- "om-root-cause": "sha256:7c14fd6388ff72c8bb058de905264899b7ee9797bb4985b1891ec2da0ec1c815",
138
- "om-fix": "sha256:c9eb58f7834026c13f2533ae6fc4987d32a0e3cec1fd7b220b47d7154ee6e804",
139
- "om-open-pr": "sha256:18ef43308dd3e5aff2099b38779cb7447ae26b754d31e18a0f49f857bafdcba7",
140
- "om-setup-agent-pipeline": "sha256:6f906df68194af5ef4d40ccaf6f4335d44f45ddcffa6e1f36331291ac90377c8"
141
- }
19
+ "om-prepare-issue",
20
+ "om-prepare-test-env",
21
+ "om-root-cause",
22
+ "om-setup-agent-pipeline",
23
+ "om-spec-writing",
24
+ "om-verify-in-repo"
25
+ ]
142
26
  },
143
27
  "tiers": {
144
28
  "core": {
145
- "description": "Daily standalone architecture, implementation, extension, debugging, and harness-maintenance skills.",
29
+ "description": "Daily-driver standalone skills installed by default.",
146
30
  "skills": [
147
31
  "om-help",
148
32
  "om-implement-spec",
@@ -150,27 +34,21 @@
150
34
  "om-module-scaffold",
151
35
  "om-data-model-design",
152
36
  "om-system-extension",
153
- "om-integration-builder",
154
- "om-create-ai-agent",
155
- "om-build-workflow",
156
37
  "om-troubleshooter",
157
- "om-framework-context",
158
- "om-evolve-harness",
159
- "om-judge-agent-session",
160
- "om-share-this-session",
161
38
  "om-eject-and-customize"
162
39
  ]
163
40
  },
164
41
  "automation": {
165
- "description": "Optional advanced delivery workflows and module-footprint maintenance.",
42
+ "description": "Module-management helpers. Opt-in.",
166
43
  "skills": ["om-trim-unused-modules"]
167
44
  },
45
+ "infra": {
46
+ "description": "Rare, special-case skills.",
47
+ "skills": ["om-integration-builder"]
48
+ },
168
49
  "migration": {
169
- "description": "One-shot, version-pinned migrations. Install only for the named upgrade.",
170
- "skills": [
171
- "om-auto-upgrade-0.4.10-to-0.5.0",
172
- "om-auto-upgrade-0.6.6-to-0.6.7"
173
- ]
50
+ "description": "One-shot, version-pinned migrations. Install only when needed.",
51
+ "skills": ["om-auto-upgrade-0.4.10-to-0.5.0"]
174
52
  }
175
53
  }
176
54
  }
@@ -1,100 +1,88 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://open-mercato.dev/schemas/skills/tiers.schema.json",
4
- "title": "Standalone Open Mercato skill manifest",
4
+ "title": "Open Mercato skills tier manifest",
5
+ "description": "Manifest mapping skill folders under .ai/skills/ to install tiers consumed by scripts/install-skills.sh.",
5
6
  "type": "object",
6
7
  "additionalProperties": false,
7
- "required": ["default", "external", "tiers"],
8
+ "required": ["default", "tiers"],
8
9
  "properties": {
9
- "$schema": { "type": "string" },
10
+ "$schema": {
11
+ "type": "string"
12
+ },
10
13
  "default": {
11
14
  "type": "array",
12
15
  "minItems": 1,
13
- "uniqueItems": true,
14
- "items": { "$ref": "#/$defs/tierName" }
16
+ "items": {
17
+ "type": "string",
18
+ "minLength": 1
19
+ },
20
+ "description": "Tier names installed when install-skills.sh is invoked with no flags."
15
21
  },
16
22
  "agents": {
17
23
  "type": "object",
18
24
  "additionalProperties": false,
25
+ "description": "Agent harness settings for install-skills.sh. Skills always install into the canonical .agents/skills/ directory; per-agent symlinks are created only for agents that cannot read it.",
19
26
  "properties": {
20
27
  "ignore": {
21
28
  "type": "array",
22
- "uniqueItems": true,
23
- "items": { "enum": ["claude-code", "codex", "cursor"] }
29
+ "description": "Agents whose directories install-skills.sh must never write. Overridden by --ignore-agents.",
30
+ "items": {
31
+ "type": "string",
32
+ "enum": ["claude-code", "codex", "cursor"]
33
+ }
24
34
  }
25
35
  }
26
36
  },
27
37
  "external": {
28
38
  "type": "object",
29
39
  "additionalProperties": false,
30
- "required": ["source", "ref", "tiers", "skills", "dependencies", "contentHashes"],
40
+ "required": ["source", "skills"],
41
+ "description": "Skills owned by an external collection and installed via `npx skills add` instead of local symlinks. Folders under .ai/skills/ matching these names are repo-local overrides, not installable skills.",
31
42
  "properties": {
32
- "source": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" },
33
- "ref": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
34
- "description": { "type": "string" },
35
- "tiers": {
36
- "type": "object",
37
- "minProperties": 1,
38
- "propertyNames": { "$ref": "#/$defs/tierName" },
39
- "additionalProperties": {
40
- "type": "object",
41
- "additionalProperties": false,
42
- "required": ["description", "skills"],
43
- "properties": {
44
- "description": { "type": "string", "minLength": 1 },
45
- "skills": {
46
- "type": "array",
47
- "minItems": 1,
48
- "uniqueItems": true,
49
- "items": { "$ref": "#/$defs/skillName" }
50
- }
51
- }
52
- }
43
+ "source": {
44
+ "type": "string",
45
+ "minLength": 1,
46
+ "description": "The skills package source, e.g. a GitHub owner/repo."
47
+ },
48
+ "description": {
49
+ "type": "string"
53
50
  },
54
51
  "skills": {
55
52
  "type": "array",
56
53
  "minItems": 1,
57
- "uniqueItems": true,
58
- "items": { "$ref": "#/$defs/skillName" }
59
- },
60
- "dependencies": {
61
- "type": "object",
62
- "propertyNames": { "pattern": "^[a-z0-9][a-z0-9._-]*$" },
63
- "additionalProperties": {
64
- "type": "array",
65
- "uniqueItems": true,
66
- "items": { "$ref": "#/$defs/skillName" }
54
+ "items": {
55
+ "type": "string",
56
+ "pattern": "^[a-z0-9][a-z0-9._-]*$"
67
57
  }
68
- },
69
- "contentHashes": {
70
- "type": "object",
71
- "propertyNames": { "pattern": "^[a-z0-9][a-z0-9._-]*$" },
72
- "additionalProperties": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
73
58
  }
74
59
  }
75
60
  },
76
61
  "tiers": {
77
62
  "type": "object",
78
63
  "minProperties": 1,
79
- "propertyNames": { "pattern": "^[a-z][a-z0-9-]*$" },
64
+ "propertyNames": {
65
+ "pattern": "^[a-z][a-z0-9-]*$"
66
+ },
80
67
  "additionalProperties": {
81
68
  "type": "object",
82
69
  "additionalProperties": false,
83
70
  "required": ["description", "skills"],
84
71
  "properties": {
85
- "description": { "type": "string", "minLength": 1 },
72
+ "description": {
73
+ "type": "string",
74
+ "minLength": 1
75
+ },
86
76
  "skills": {
87
77
  "type": "array",
88
78
  "minItems": 1,
89
- "uniqueItems": true,
90
- "items": { "$ref": "#/$defs/skillName" }
79
+ "items": {
80
+ "type": "string",
81
+ "pattern": "^[a-z0-9][a-z0-9._-]*$"
82
+ }
91
83
  }
92
84
  }
93
85
  }
94
86
  }
95
- },
96
- "$defs": {
97
- "skillName": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$" },
98
- "tierName": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" }
99
87
  }
100
88
  }
@@ -21,7 +21,6 @@ Example: 2026-03-01-inventory-module.md
21
21
 
22
22
  ## Workflow
23
23
 
24
- 1. Route every new application, multi-module feature, or non-trivial business slice through `om-spec-writing` and `.ai/guides/spec-delivery.md`.
25
- 2. After invoking the skill, create the skeleton from `SPEC-000-template.md`; keep it `Draft` while blocking questions or incomplete contracts remain.
26
- 3. Set `Ready for implementation` only after the final compliance report and requirement traceability pass and the user approves implementation.
27
- 4. Implement through `om-implement-spec` (interactive local) or `om-auto-implement-spec` (whole-spec PR), one dependency-ordered phase at a time; update the Changelog, acceptance evidence, and phase state as work lands. Local delivery confirms its phase-derived plan before coding and ends with the stable `Spec:` reference without implying PR automation.
24
+ 1. Before coding any significant feature, check for an existing spec
25
+ 2. If none: create from SPEC-000-template.md, review with team, then code
26
+ 3. After implementation: update the spec's Changelog and Acceptance Criteria
@@ -3,249 +3,33 @@
3
3
  **Date**: {YYYY-MM-DD}
4
4
  **Status**: Draft
5
5
 
6
- > Use `om-spec-writing` for every new application, multi-module feature, or other non-trivial business slice. Keep every section below; write `N/A — {reason}` when a section does not apply. Change the status to `Ready for implementation` only after every blocking open question is resolved and the traceability table covers every requirement.
7
-
8
6
  ## TLDR
9
7
 
10
- {What is being built, who benefits, which existing Open Mercato capabilities are reused, and the smallest coherent outcome.}
8
+ {2-3 sentence summary}
11
9
 
12
10
  ## Problem Statement
13
11
 
14
- {Current workflow, concrete pain, evidence, affected users, and why existing behavior is insufficient.}
15
-
16
- ## Overview and Success Measures
17
-
18
- - **Primary outcome:** {Measurable business result and target.}
19
- - **Leading indicators:** {Signals available before the final outcome.}
20
- - **Baseline:** {Current measurable state or `unknown — measurement plan`.}
21
- - **Market / product reference:** {Comparable product or workflow studied; what is adopted, rejected, and why.}
22
-
23
- ## Goals
24
-
25
- - **REQ-001** — {Observable business outcome.}
26
- - **REQ-002** — {Observable business outcome.}
27
-
28
- ## Non-goals
29
-
30
- - {Explicitly excluded behavior, module, integration, or migration.}
12
+ {What problem this feature solves}
31
13
 
32
14
  ## Proposed Solution
33
15
 
34
- {Describe the product and technical approach, how it closes each stated problem, and why it is the smallest platform-native solution that can deliver the goals.}
35
-
36
- ### Design Decisions and Alternatives
37
-
38
- | Decision | Rationale | Alternative considered | Why rejected / deferred |
39
- |---|---|---|---|
40
- | {choice} | {why it fits the requirements and platform} | {alternative} | {tradeoff} |
41
-
42
- ## Domain Vocabulary and Business Rules
43
-
44
- | Term / invariant | Precise meaning or rule | Source of truth | Failure behavior |
45
- |---|---|---|---|
46
- | {term} | {one unambiguous meaning, formula, lifecycle, or constraint} | {module/entity/provider} | {reject/degrade/retry/audit} |
47
-
48
- Define fields, states, transitions, calculations, ownership, and invariants precisely enough that implementation does not need to invent domain behavior.
49
-
50
- ## Users, Permissions, and Scope
51
-
52
- | Actor | Allowed outcomes | Scope rule | Required feature IDs |
53
- |---|---|---|---|
54
- | {actor} | {view/create/update/etc.} | {own/team/organization/system} | `{module}.view`, `{module}.manage` |
55
-
56
- Document how trusted `tenantId` and `organizationId` are derived. Describe any legitimate system-scope operation and the installed contract that authorizes it.
57
-
58
- ## Reuse and Ownership Map
59
-
60
- | Capability | Reuse / extend / app-own | Existing module or new module | Integration seam | Why |
61
- |---|---|---|---|---|
62
- | {capability} | {reuse/UMES/app-owned} | `{module}` | {ID/snapshot/event/enricher/extension/optional DI} | {decision} |
63
-
64
- Name the installed records that remain the source of truth. Do not duplicate CRM, auth, directory, notification, workflow, or other installed capabilities in app-owned entities.
65
-
66
- ## Architecture and Data Flow
67
-
68
- ```text
69
- {actor/surface} -> {API/command} -> {owning entity}
70
- -> {event/subscriber/integration}
71
- ```
72
-
73
- - **Module boundaries:** {Why each new module owns a distinct invariant; merge modules that must remain transactionally consistent.}
74
- - **Extension points:** {Installed page/menu/widget/enricher/interceptor/event seams used instead of modifying installed code.}
75
- - **Alternatives considered:** {Simpler platform-native alternative and why it was not selected.}
76
- - **Compatibility:** {Existing API/data/UI behavior that must remain stable.}
77
-
78
- ## User Journeys
79
-
80
- ### Journey J-001 — {Name}
81
-
82
- 1. {Actor starts from a named page or API.}
83
- 2. {Primary action and system response.}
84
- 3. {Success state and downstream side effects.}
85
- 4. {Recoverable failure, permission denial, conflict, and retry behavior.}
86
-
87
- ## UI and Interaction Contracts
88
-
89
- List every new or changed page before implementation. Inspect the closest existing Open Mercato page and `.ai/guides/backend-ui.md`; record that reference below. Tabular admin data uses `DataTable`, CRUD create/edit surfaces use `CrudForm`, and backend reads use the shared API helpers. Any custom page or component exception needs an explicit rationale and approval in this section.
90
-
91
- | Surface / route | Purpose and primary actions | Data source / mutations | Closest installed reference | Canonical shell / components | Required states | Requirement IDs |
92
- |---|---|---|---|---|---|---|
93
- | `/backend/{route}` | {list/create/edit/etc.} | `{API paths / command IDs}` | `{module/path or component family}` | `Page`, `PageBody`, `DataTable`, `CrudForm`, {others} | loading, empty, error, conflict, success, permission denied | REQ-001 |
94
-
95
- ### UI architecture
96
-
97
- | Role | Navigation groups in order | Dashboard / injected widgets | Login-to-primary-task flow |
98
- |---|---|---|---|
99
- | {role} | {group → item} | {widget, host, click-through} | {page → action → result; target ≤3 clicks} |
100
-
101
- | Surface / widget | Empty state guidance and action | Responsive behavior | Keyboard / focus behavior |
102
- |---|---|---|---|
103
- | {surface} | {localized explanation + next action} | {narrow/mobile layout} | {focus order, submit/cancel, announcements} |
104
-
105
- ### `/backend/{route}` — {Page name}
106
-
107
- ```text
108
- ┌────────────────────────────────────────────────────────────┐
109
- │ {Page title} [{Primary action}]│
110
- │ {Filters / summary / navigation} │
111
- ├────────────────────────────────────────────────────────────┤
112
- │ {DataTable, CrudForm groups, calendar, or detail sections} │
113
- ├────────────────────────────────────────────────────────────┤
114
- │ {Pagination / save-delete actions / status feedback} │
115
- └────────────────────────────────────────────────────────────┘
116
- ```
117
-
118
- - **Behavior:** {sorting/filtering/pagination, validation, keyboard behavior, navigation, destructive confirmation, optimistic-lock conflict recovery.}
119
- - **Responsive and accessibility:** {focus order, labels, screen-reader status, small-screen behavior.}
120
- - **Localization:** {translation namespaces and dynamic values.}
121
- - **Design-system and theming:** {semantic tokens and shared primitives; verify light and dark mode, contrast, reduced motion, and no hard-coded palette/status colors.}
122
-
123
- For backend UI, implementation must invoke `om-backend-ui-design` and follow `.ai/guides/backend-ui.md`. Raw `<table>`, raw admin `<form>`, raw `fetch`, copied component families, arbitrary Tailwind values, hard-coded light-only colors, and manual `dark:` patches fail readiness unless the approved contract explains why the platform primitive cannot support the interaction. A custom calendar, board, or clinical workspace may be justified, but its surrounding shell, controls, status treatment, dialogs, states, and tokens remain platform-native.
16
+ {High-level approach}
124
17
 
125
18
  ## Data Models
126
19
 
127
- ### `{Entity}`
128
-
129
- | Field | Type / nullability | Scope / index | Sensitive / encrypted | Lifecycle and validation |
130
- |---|---|---|---|---|
131
- | `id` | UUID, required | primary key | no | immutable |
132
- | `tenant_id` / `organization_id` | UUID, required | composite scope indexes | no | trusted context only |
133
- | `updated_at` | timestamp, required | optimistic-lock version | no | updated on every edit |
134
-
135
- Document entity ownership, soft-delete or append-only rules, cross-module IDs/snapshots, uniqueness, transactions, encryption maps, retention, migrations, and compatibility impact.
136
-
137
- ## API, Command, and Error Contracts
138
-
139
- | Method / command | Path / ID | Auth and feature gate | Input | Success response / event | Errors and concurrency | Requirement IDs |
140
- |---|---|---|---|---|---|---|
141
- | `GET` | `/api/{path}` | auth + `{module}.view` | {query schema} | `{ items, totalCount }` | 400/401/403 | REQ-001 |
142
- | `POST` | `/api/{path}` | auth + `{module}.manage` | {body schema} | 201 + `{module}.{entity}.created` | 400/403/409 | REQ-002 |
143
-
144
- State whether each route uses `makeCrudRoute` or a custom guarded command route. Include per-method `metadata`, OpenAPI schemas, scope derivation, idempotency, optimistic locking, and stable public-contract implications.
145
-
146
- ## Events, Jobs, Notifications, and Cross-Module Flows
147
-
148
- | Trigger | Producer | Consumer | Side effect | Retry / idempotency / audit behavior |
149
- |---|---|---|---|---|
150
- | `{module}.{entity}.{action}` | `{module}` | `{subscriber}` | {result} | {contract} |
151
-
152
- Describe scheduled work, progress, cache invalidation, failure recovery, and optional-module behavior where applicable.
153
-
154
- ## Security, Privacy, and Compliance
155
-
156
- - **Authorization:** {feature gates and record-level scope; never role-name checks.}
157
- - **Tenant isolation:** {read/write filters and fail-closed behavior.}
158
- - **Sensitive data:** {encryption map, safe reads, redaction, retention, audit policy.}
159
- - **Abuse and failure modes:** {enumeration, injection, replay, concurrency, destructive action, secret exposure.}
160
-
161
- ## Integration Coverage
162
-
163
- Tests must be self-contained and map to real API and UI paths.
164
-
165
- | Test ID | Level | Setup / fixture | Actions | Assertions | Requirement IDs |
166
- |---|---|---|---|---|---|
167
- | TEST-001 | integration | {tenant/org/users/records} | {API or browser flow} | {success + persisted state + event} | REQ-001 |
168
- | TEST-002 | security | {second tenant / insufficient feature} | {forbidden read/write} | {fail closed; no data leak} | REQ-001 |
169
- | TEST-003 | UI | {records and permissions} | {loading/empty/error/conflict/keyboard flow} | {observable result} | REQ-002 |
170
-
171
- ## Implementation Phases
172
-
173
- Phases are dependency ordered. Only the current phase may enter implementation; parallel work is limited to independent slices inside that phase. Each phase must leave a working app and close with its own evidence before the next phase starts.
20
+ {Entity definitions, relationships}
174
21
 
175
- ### Phase 1 — {Foundation or first complete vertical slice}
22
+ ## API Contracts
176
23
 
177
- - **Depends on:** none
178
- - **Outcome:** {user-visible or independently verifiable result}
179
- - **Why this order / value delivered:** {dependency and measurable business value available at phase completion}
180
- - **Deliverables:** {specific entities, commands, routes, pages, subscribers, migrations}
181
- - **Independent slices / estimated commits:** {bounded work that may run in parallel inside this phase only}
182
- - **Requirements closed:** REQ-001
183
- - **Tests:** TEST-001, TEST-002
184
- - **Validation:** `yarn generate`, {focused typecheck/tests/integration paths}
185
- - **Exit gate:** {observable criteria proving this phase works end to end, including affected UI in light/dark and narrow-width states}
186
-
187
- ### Phase 2 — {Next complete vertical slice}
188
-
189
- - **Depends on:** Phase 1 exit gate
190
- - **Outcome:** {result}
191
- - **Why this order / value delivered:** {dependency and measurable business value}
192
- - **Deliverables:** {specific files/seams}
193
- - **Independent slices / estimated commits:** {bounded work inside this phase}
194
- - **Requirements closed:** REQ-002
195
- - **Tests:** TEST-003
196
- - **Validation:** {focused commands}
197
- - **Exit gate:** {observable criteria}
198
-
199
- ## Requirement Traceability
200
-
201
- | Requirement | Journey / surface | Data/API/event contracts | Phase | Tests | Acceptance criterion |
202
- |---|---|---|---|---|---|
203
- | REQ-001 | J-001, `/backend/{route}` | `{entity}`, `GET /api/{path}` | Phase 1 | TEST-001, TEST-002 | AC-001 |
204
-
205
- Every requirement must map to a phase, at least one test oracle, and a measurable acceptance criterion. No phase may be a catch-all “integration and polish” bucket for behavior required by earlier slices.
206
-
207
- ## Rollout, Migration, and Rollback
208
-
209
- {Migration generation/application boundary, seed/setup work, feature flags, compatibility bridge, observability, rollout order, and reversible rollback steps.}
210
-
211
- ## Risks and Tradeoffs
212
-
213
- | Risk / tradeoff | Impact | Mitigation / detection | Residual risk |
214
- |---|---|---|---|
215
- | {risk} | {impact} | {test/metric/guard} | {accepted remainder} |
216
-
217
- Cover data integrity and concurrency, cascading/event failures, tenant isolation and privacy, migration/rollback, external-service degradation, scale/storage, and operational detection. Do not use “standard risks” as a substitute for concrete failure scenarios.
24
+ {Endpoints, request/response schemas}
218
25
 
219
26
  ## Acceptance Criteria
220
27
 
221
- - [ ] **AC-001** — {Measurable end-to-end result, including actor and scope.}
222
- - [ ] **AC-002** — {Measurable failure/safety result.}
223
- - [ ] Every listed backend surface matches its recorded Open Mercato reference and uses the canonical shell/components, shared API helpers, semantic tokens, and complete loading, empty, error, conflict, keyboard, accessibility, responsive, light-mode, and dark-mode states.
224
- - [ ] Every affected API and UI path has self-contained integration coverage and the configured validation gate passes.
225
-
226
- ## Final Compliance Report
227
-
228
- | Check | Status | Evidence / resolution |
229
- |---|---|---|
230
- | Applicable `AGENTS.md` files and routed guides/skills reviewed | pass/fail | {paths} |
231
- | Data models, APIs, events, UI, and tests are internally consistent | pass/fail | {traceability rows} |
232
- | Every workflow completes end to end without a catch-all integration phase | pass/fail | {journeys/phases} |
233
- | Platform-native reuse and extension points were chosen before custom code | pass/fail | {reuse decisions} |
234
- | UI contracts identify references, canonical components, and theme/state coverage | pass/fail | {surfaces} |
235
- | Every phase has dependencies, bounded slices, tests, value, and an observable exit gate | pass/fail | {phases} |
236
-
237
- Verdict must be exactly `Ready for implementation` or `Blocked — {unresolved items}`. The document status may change to ready only when every row passes.
238
-
239
- ## Open Questions
240
-
241
- Blocking questions must be resolved before setting `Status: Ready for implementation`.
242
-
243
- | ID | Question | Owner | Blocking? | Resolution / decision date |
244
- |---|---|---|---|---|
245
- | Q-001 | {question} | {owner} | yes/no | {pending or decision} |
28
+ - [ ] {Criterion 1}
29
+ - [ ] {Criterion 2}
246
30
 
247
31
  ## Changelog
248
32
 
249
33
  | Date | Change |
250
- |---|---|
251
- | {date} | Initial draft |
34
+ |------|--------|
35
+ | {date} | Initial spec |