cabloy 5.1.49 → 5.1.51

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 (276) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +207 -0
  2. package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +29 -0
  3. package/.claude/skills/cabloy-backend-scaffold/references/backend-thread-map.md +52 -0
  4. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +39 -0
  5. package/.claude/skills/cabloy-contract-loop/SKILL.md +201 -0
  6. package/.claude/skills/cabloy-contract-loop/evals/evals.json +29 -0
  7. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +47 -0
  8. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -0
  9. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +230 -0
  10. package/.claude/skills/cabloy-frontend-scaffold/evals/evals.json +35 -0
  11. package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +41 -0
  12. package/.claude/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +54 -0
  13. package/.claude/skills/cabloy-workflow/SKILL.md +288 -0
  14. package/.claude/skills/cabloy-workflow/evals/evals.json +35 -0
  15. package/.claude/skills/cabloy-workflow/references/cli-strategy.md +39 -0
  16. package/.claude/skills/cabloy-workflow/references/edition-detection.md +29 -0
  17. package/.github/workflows/docs-pages.yml +54 -0
  18. package/.gitignore +1 -0
  19. package/CHANGELOG.md +46 -0
  20. package/CLAUDE.md +59 -0
  21. package/README.md +137 -0
  22. package/cabloy-docs/.vitepress/config.mjs +222 -0
  23. package/cabloy-docs/.vitepress/public/CNAME +1 -0
  24. package/cabloy-docs/.vitepress/theme/custom.css +64 -0
  25. package/cabloy-docs/.vitepress/theme/edition-badges.md +5 -0
  26. package/cabloy-docs/.vitepress/theme/index.js +5 -0
  27. package/cabloy-docs/ai/class-placement-rule.md +138 -0
  28. package/cabloy-docs/ai/cli-for-agents.md +56 -0
  29. package/cabloy-docs/ai/cli-to-skill-map.md +165 -0
  30. package/cabloy-docs/ai/docs-skills-rules-mapping.md +167 -0
  31. package/cabloy-docs/ai/edition-detection.md +30 -0
  32. package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
  33. package/cabloy-docs/ai/global-bean-lookup.md +157 -0
  34. package/cabloy-docs/ai/introduction.md +62 -0
  35. package/cabloy-docs/ai/playbook-backend-module.md +111 -0
  36. package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
  37. package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
  38. package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
  39. package/cabloy-docs/ai/repo-guidance.md +58 -0
  40. package/cabloy-docs/ai/rules-and-config.md +29 -0
  41. package/cabloy-docs/ai/skills.md +35 -0
  42. package/cabloy-docs/ai/verification.md +30 -0
  43. package/cabloy-docs/backend/aop-overview.md +128 -0
  44. package/cabloy-docs/backend/auth-guide.md +151 -0
  45. package/cabloy-docs/backend/backend-essentials.md +128 -0
  46. package/cabloy-docs/backend/broadcast-guide.md +138 -0
  47. package/cabloy-docs/backend/cache-guide.md +70 -0
  48. package/cabloy-docs/backend/captcha-guide.md +162 -0
  49. package/cabloy-docs/backend/cli.md +173 -0
  50. package/cabloy-docs/backend/config-guide.md +249 -0
  51. package/cabloy-docs/backend/controller-aop-guide.md +270 -0
  52. package/cabloy-docs/backend/controller-guide.md +347 -0
  53. package/cabloy-docs/backend/crud-workflow.md +118 -0
  54. package/cabloy-docs/backend/dto-guide.md +161 -0
  55. package/cabloy-docs/backend/dto-infer-generation.md +153 -0
  56. package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
  57. package/cabloy-docs/backend/election-guide.md +141 -0
  58. package/cabloy-docs/backend/entity-guide.md +150 -0
  59. package/cabloy-docs/backend/error-guide.md +108 -0
  60. package/cabloy-docs/backend/event-guide.md +183 -0
  61. package/cabloy-docs/backend/external-aop-guide.md +149 -0
  62. package/cabloy-docs/backend/field-indexes.md +79 -0
  63. package/cabloy-docs/backend/foundation.md +281 -0
  64. package/cabloy-docs/backend/i18n-guide.md +211 -0
  65. package/cabloy-docs/backend/internal-aop-guide.md +181 -0
  66. package/cabloy-docs/backend/introduction.md +95 -0
  67. package/cabloy-docs/backend/jwt-guide.md +276 -0
  68. package/cabloy-docs/backend/logger-guide.md +223 -0
  69. package/cabloy-docs/backend/mail-guide.md +189 -0
  70. package/cabloy-docs/backend/menu-guide.md +80 -0
  71. package/cabloy-docs/backend/migration-and-changes.md +192 -0
  72. package/cabloy-docs/backend/model-guide.md +274 -0
  73. package/cabloy-docs/backend/multi-database-datasource.md +171 -0
  74. package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
  75. package/cabloy-docs/backend/openapi-guide.md +118 -0
  76. package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
  77. package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
  78. package/cabloy-docs/backend/orm-guide.md +109 -0
  79. package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
  80. package/cabloy-docs/backend/orm-select-guide.md +243 -0
  81. package/cabloy-docs/backend/queue-guide.md +271 -0
  82. package/cabloy-docs/backend/quickstart.md +141 -0
  83. package/cabloy-docs/backend/redis-guide.md +70 -0
  84. package/cabloy-docs/backend/redlock-guide.md +60 -0
  85. package/cabloy-docs/backend/relations-guide.md +250 -0
  86. package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
  87. package/cabloy-docs/backend/schedule-guide.md +81 -0
  88. package/cabloy-docs/backend/scripts.md +116 -0
  89. package/cabloy-docs/backend/serialization-guide.md +192 -0
  90. package/cabloy-docs/backend/service-guide.md +166 -0
  91. package/cabloy-docs/backend/sharding-guide.md +49 -0
  92. package/cabloy-docs/backend/startup-guide.md +326 -0
  93. package/cabloy-docs/backend/transaction-guide.md +82 -0
  94. package/cabloy-docs/backend/unit-testing.md +209 -0
  95. package/cabloy-docs/backend/upload-guide.md +160 -0
  96. package/cabloy-docs/backend/user-access-guide.md +157 -0
  97. package/cabloy-docs/backend/validation-guide.md +80 -0
  98. package/cabloy-docs/backend/worker-guide.md +59 -0
  99. package/cabloy-docs/editions/cabloy-basic.md +25 -0
  100. package/cabloy-docs/editions/cabloy-start.md +24 -0
  101. package/cabloy-docs/editions/detection.md +31 -0
  102. package/cabloy-docs/editions/overview.md +44 -0
  103. package/cabloy-docs/frontend/api-guide.md +93 -0
  104. package/cabloy-docs/frontend/api-schema-guide.md +43 -0
  105. package/cabloy-docs/frontend/app-startup-guide.md +185 -0
  106. package/cabloy-docs/frontend/cli.md +78 -0
  107. package/cabloy-docs/frontend/component-guide.md +105 -0
  108. package/cabloy-docs/frontend/component-props-guide.md +97 -0
  109. package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
  110. package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
  111. package/cabloy-docs/frontend/design-principles.md +55 -0
  112. package/cabloy-docs/frontend/environment-config-guide.md +250 -0
  113. package/cabloy-docs/frontend/foundation.md +57 -0
  114. package/cabloy-docs/frontend/generic-component-guide.md +35 -0
  115. package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
  116. package/cabloy-docs/frontend/introduction.md +32 -0
  117. package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
  118. package/cabloy-docs/frontend/mock-guide.md +109 -0
  119. package/cabloy-docs/frontend/model-architecture.md +87 -0
  120. package/cabloy-docs/frontend/model-state-guide.md +70 -0
  121. package/cabloy-docs/frontend/module-scope.md +168 -0
  122. package/cabloy-docs/frontend/modules-and-suites.md +179 -0
  123. package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
  124. package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
  125. package/cabloy-docs/frontend/page-guide.md +223 -0
  126. package/cabloy-docs/frontend/page-params-guide.md +87 -0
  127. package/cabloy-docs/frontend/page-query-guide.md +96 -0
  128. package/cabloy-docs/frontend/page-route-guide.md +147 -0
  129. package/cabloy-docs/frontend/quickstart.md +201 -0
  130. package/cabloy-docs/frontend/route-alias-guide.md +61 -0
  131. package/cabloy-docs/frontend/scripts.md +86 -0
  132. package/cabloy-docs/frontend/sdk-guide.md +45 -0
  133. package/cabloy-docs/frontend/server-data.md +74 -0
  134. package/cabloy-docs/frontend/ssr-client-only.md +40 -0
  135. package/cabloy-docs/frontend/ssr-env.md +51 -0
  136. package/cabloy-docs/frontend/ssr-init-data.md +46 -0
  137. package/cabloy-docs/frontend/ssr-overview.md +48 -0
  138. package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
  139. package/cabloy-docs/frontend/system-startup-guide.md +186 -0
  140. package/cabloy-docs/frontend/theme-guide.md +154 -0
  141. package/cabloy-docs/frontend/zod-guide.md +161 -0
  142. package/cabloy-docs/fullstack/edition-collaboration-differences.md +61 -0
  143. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
  144. package/cabloy-docs/fullstack/introduction.md +69 -0
  145. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
  146. package/cabloy-docs/fullstack/quickstart.md +86 -0
  147. package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
  148. package/cabloy-docs/index.md +73 -0
  149. package/cabloy-docs/package.json +16 -0
  150. package/cabloy-docs/pnpm-lock.yaml +1607 -0
  151. package/cabloy-docs/reference/backend-directory-structure.md +88 -0
  152. package/cabloy-docs/reference/cli-reference.md +49 -0
  153. package/cabloy-docs/reference/glossary.md +38 -0
  154. package/cabloy-docs/reference/package-map.md +105 -0
  155. package/cabloy-docs/reference/repo-scripts.md +36 -0
  156. package/package.json +4 -1
  157. package/scripts/init.ts +12 -0
  158. package/scripts/upgrade.ts +31 -3
  159. package/vona/README.md +3 -3
  160. package/vona/README.zh-CN.md +4 -4
  161. package/vona/packages-vona/vona/package.json +1 -1
  162. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
  163. package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
  164. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  165. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
  166. package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
  167. package/vona/src/suite-vendor/a-captcha/package.json +1 -1
  168. package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
  169. package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
  170. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  171. package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  172. package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
  173. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
  174. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
  175. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
  176. package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
  177. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
  178. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
  179. package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
  180. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
  181. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
  182. package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  183. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  184. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
  185. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
  186. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
  187. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
  188. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
  189. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
  190. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
  191. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
  192. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
  193. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
  194. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
  195. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
  196. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
  197. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
  198. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
  199. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
  200. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
  201. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
  202. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
  203. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
  204. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
  205. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
  206. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
  207. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
  208. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
  209. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
  210. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
  211. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
  212. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
  213. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
  214. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
  215. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
  216. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
  217. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
  218. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
  219. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
  220. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
  221. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
  222. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
  223. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
  224. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
  225. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
  226. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
  227. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
  228. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
  229. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
  230. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
  231. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
  232. package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
  233. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  234. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
  235. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
  236. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  237. package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
  238. package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
  239. package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
  240. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
  241. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
  242. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
  243. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
  244. package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
  245. package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
  246. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
  247. package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.ts +2 -2
  248. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
  249. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/cacheRedis.authToken.ts +2 -2
  250. package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
  251. package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
  252. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  253. package/zova/README.md +4 -4
  254. package/zova/README.zh-CN.md +4 -4
  255. package/zova/packages-zova/zova/package.json +2 -2
  256. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolTwo/controller.tsx +0 -2
  257. package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +1 -0
  258. package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +1 -0
  259. package/zova/src/suite/a-home/modules/home-base/src/page/errorNotFound/controller.tsx +8 -2
  260. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +1 -1
  261. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.header.tsx +1 -1
  262. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.locale.tsx +2 -5
  263. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.tabs.tsx +1 -4
  264. package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
  265. package/zova/src/suite-vendor/a-zova/modules/a-router/src/bean/sys.router.ts +28 -6
  266. package/zova/src/suite-vendor/a-zova/modules/a-router/src/monkeySys.ts +15 -3
  267. package/zova/src/suite-vendor/a-zova/modules/a-router/src/types/router.ts +1 -0
  268. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
  269. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +4 -0
  270. package/zova/src/suite-vendor/a-zova/package.json +3 -3
  271. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
  272. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
  273. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
  274. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
  275. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
  276. /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: cabloy-backend-scaffold
3
+ description: Use this skill whenever the user wants the Vona backend path in this Cabloy repo: scaffold or extend modules, beans, controllers, services, models, entities, DTOs, CRUD resources, migrations, indexes, validation, OpenAPI-facing backend files, or backend tests. Trigger for questions about which npm run vona generator or CRUD command to use and what backend follow-up is required after generation, especially when the user mentions create:bean, CRUD, meta.version, field indexes, DTOs, or tests. Prefer it for backend-first requests, even if they may later require frontend contract regeneration. Do not use it for frontend-first Zova work or stale generated consumer diagnosis.
4
+ ---
5
+
6
+ # Cabloy Backend Scaffold
7
+
8
+ Use this skill when the user wants to add or extend a Vona backend feature thread.
9
+
10
+ ## Goals
11
+
12
+ 1. detect whether the active repository is Cabloy Basic or Cabloy Start
13
+ 2. stay backend-first unless the request clearly becomes a larger fullstack workflow
14
+ 3. prefer Vona CLI generation and CRUD tools over manual scaffolding
15
+ 4. always perform a backend follow-up review so migration, field indexes, DTO/OpenAPI contracts, and tests are not forgotten
16
+ 5. add a frontend-contract reminder only when the backend change likely affects OpenAPI consumers or generated SDK flows
17
+ 6. finish with verification guidance that matches the scope of the change
18
+
19
+ ## Step 1: Detect repo and task scope
20
+
21
+ Check the repository root for these marker files:
22
+
23
+ - `__CABLOY_BASIC__`
24
+ - `__CABLOY_START__`
25
+
26
+ Interpretation:
27
+
28
+ - `__CABLOY_BASIC__` present → this is Cabloy Basic
29
+ - `__CABLOY_START__` present → this is Cabloy Start
30
+ - neither present → inspect nearby scripts and ask before making edition-specific assumptions
31
+
32
+ Then classify the request:
33
+
34
+ - **backend-only** if the task is about Vona modules, beans, models, entities, DTOs, CRUD, migration, tests, or backend contracts
35
+ - **fullstack** only if the task clearly requires frontend SDK regeneration, frontend page/component work, or a broader cross-stack contract loop
36
+
37
+ Default to backend-first. Only escalate mentally to a broader fullstack workflow when the backend change obviously crosses the contract boundary.
38
+
39
+ If the task is really a broad cross-stack workflow, consider whether the root `cabloy-workflow` skill is the better primary router.
40
+
41
+ ## Step 2: Start from Vona CLI and repo entrypoints
42
+
43
+ Inspect these surfaces before proposing implementation:
44
+
45
+ - the repository or workspace `package.json` that owns the scripts
46
+ - `npm run vona`
47
+ - Vona command families such as `create:*`, `init:*`, `tools:*`, and `bin:*`
48
+ - `cabloy-docs/backend/` for the relevant backend thread
49
+
50
+ For deeper reference material, read:
51
+
52
+ - `references/backend-thread-map.md`
53
+ - `references/follow-up-checklist.md`
54
+
55
+ ## Step 3: Choose the correct scaffolding path
56
+
57
+ ### Path A: create one backend bean or module piece
58
+
59
+ Use `create:*` when the user needs one structural piece such as:
60
+
61
+ - module
62
+ - bean
63
+ - controller
64
+ - service
65
+ - model
66
+ - entity
67
+ - dto
68
+ - test
69
+
70
+ Typical examples:
71
+
72
+ - `npm run vona :create:module ...`
73
+ - `npm run vona :create:bean controller ...`
74
+ - `npm run vona :create:bean dto ...`
75
+ - `npm run vona :create:test ...`
76
+
77
+ ### Path B: create a full CRUD thread
78
+
79
+ Use `tools:*` when the user needs a whole backend thread rather than one isolated file.
80
+
81
+ Typical example:
82
+
83
+ - `npm run vona :tools:crud ...`
84
+
85
+ Choose this path when the user asks for a CRUD feature, an admin-style backend resource thread, or a connected set of controller/service/model/entity/dto/test files.
86
+
87
+ ### Path C: initialize supporting module resources
88
+
89
+ Use `init:*` when the task is really about module support files rather than business logic itself.
90
+
91
+ Typical areas include:
92
+
93
+ - config
94
+ - locale
95
+ - constant
96
+ - asset
97
+ - types
98
+
99
+ ## Step 4: Inspect the generated backend thread
100
+
101
+ After generation, inspect what the CLI created and keep it as the baseline.
102
+
103
+ Typical backend thread pieces include:
104
+
105
+ - controller
106
+ - service
107
+ - model
108
+ - entity
109
+ - dto
110
+ - migration/meta files
111
+ - locale files
112
+ - tests
113
+
114
+ Do not throw away the generated structure and rewrite it from scratch unless the generator clearly does not match the task.
115
+
116
+ ## Step 5: Apply backend follow-up logic deliberately
117
+
118
+ Backend scaffolding is rarely complete after file generation alone. Treat this follow-up review as mandatory.
119
+
120
+ Check which of these concerns apply:
121
+
122
+ ### Contract and validation
123
+
124
+ Check whether the feature needs:
125
+
126
+ - request validation
127
+ - DTO design
128
+ - OpenAPI metadata
129
+ - inferred DTO generation
130
+
131
+ ### Persistence and schema lifecycle
132
+
133
+ Check whether the feature needs:
134
+
135
+ - migration/version updates
136
+ - `meta.version`
137
+ - field indexes
138
+ - relation definitions
139
+ - datasource or cache considerations
140
+
141
+ ### Verification
142
+
143
+ Check whether the feature needs:
144
+
145
+ - unit tests
146
+ - `db:reset` or migration verification
147
+ - controller action testing
148
+ - broader `test` / `tsc` / `build` checks
149
+
150
+ ### Optional frontend-contract reminder
151
+
152
+ Stay backend-first, but if the backend change likely affects frontend contract consumers, add a reminder such as:
153
+
154
+ - OpenAPI output may have changed
155
+ - frontend SDK or schema-driven layers may need regeneration
156
+ - the active edition and frontend flavor may matter for the regeneration path
157
+
158
+ Do not turn the skill into a full frontend workflow. Only surface the reminder when the contract boundary is clearly involved.
159
+
160
+ ## Step 6: Use docs to avoid missing layers
161
+
162
+ Use the docs to decide what the generated backend thread still needs.
163
+
164
+ Especially relevant pages include:
165
+
166
+ - `cabloy-docs/backend/controller-guide.md`
167
+ - `cabloy-docs/backend/service-guide.md`
168
+ - `cabloy-docs/backend/model-guide.md`
169
+ - `cabloy-docs/backend/entity-guide.md`
170
+ - `cabloy-docs/backend/dto-guide.md`
171
+ - `cabloy-docs/backend/crud-workflow.md`
172
+ - `cabloy-docs/backend/migration-and-changes.md`
173
+ - `cabloy-docs/backend/field-indexes.md`
174
+ - `cabloy-docs/backend/unit-testing.md`
175
+ - `cabloy-docs/backend/validation-guide.md`
176
+ - `cabloy-docs/backend/openapi-guide.md`
177
+ - `cabloy-docs/backend/dto-infer-generation.md`
178
+
179
+ ## Step 7: Verification guidance
180
+
181
+ Always end with a verification path that matches the scope of the backend change.
182
+
183
+ Typical shared checks include:
184
+
185
+ - `npm run test`
186
+ - `npm run tsc`
187
+ - `npm run build`
188
+
189
+ Narrower checks may include:
190
+
191
+ - module test updates
192
+ - route/controller action verification
193
+ - migration reset flow
194
+ - CRUD workflow test coverage
195
+
196
+ ## Response pattern
197
+
198
+ When helpful, structure the response around these points:
199
+
200
+ 1. detected edition
201
+ 2. backend-first or clearly fullstack-sensitive classification
202
+ 3. recommended Vona CLI path
203
+ 4. required backend follow-up layers to check
204
+ 5. optional frontend-contract reminder if applicable
205
+ 6. verification steps
206
+
207
+ Keep the response practical. The value of this skill is turning Cabloy backend requests into the right generation + refinement + verification workflow, not writing more prose than necessary.
@@ -0,0 +1,29 @@
1
+ {
2
+ "skill_name": "cabloy-backend-scaffold",
3
+ "evals": [
4
+ {
5
+ "id": 11,
6
+ "prompt": "I want to add an invoice backend feature in Cabloy. Please do not give me a generic architecture essay — tell me exactly whether I should start with create:bean commands or the CRUD generator, and what backend layers are mandatory to review after generation.",
7
+ "expected_output": "Must explicitly choose the CRUD generator or the precise Vona generator path first, must state that backend follow-up review is mandatory, and must mention at least migration/version plus DTO/OpenAPI or tests.",
8
+ "files": []
9
+ },
10
+ {
11
+ "id": 12,
12
+ "prompt": "I already changed a Vona DTO and controller response for an admin endpoint. I am not asking for frontend implementation help yet. Give me backend-first closure guidance and only mention frontend if it is truly just a contract reminder.",
13
+ "expected_output": "Must remain backend-first, must not turn into a full frontend workflow, must include backend contract checks, and any frontend mention must be clearly framed as a limited reminder only.",
14
+ "files": []
15
+ },
16
+ {
17
+ "id": 13,
18
+ "prompt": "I need to add order settlement in Cabloy Start. I care about the Vona backend thread first. Please tell me the exact generation path and the non-optional backend follow-up checklist after scaffolding.",
19
+ "expected_output": "Must detect Start-sensitivity, still lead with the Vona backend generation path, and explicitly frame migration/index/DTO/OpenAPI/tests as non-optional backend review items.",
20
+ "files": []
21
+ },
22
+ {
23
+ "id": 14,
24
+ "prompt": "I changed a model relation and some entity fields in Cabloy Basic. Before you tell me anything else, I want the Cabloy backend done-checklist, not a broad explanation of ORM theory.",
25
+ "expected_output": "Must give a concrete backend completion checklist, must include relation-aware follow-up and metadata or migration review, and must stay practical rather than drifting into generic ORM explanation.",
26
+ "files": []
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,52 @@
1
+ # Backend Thread Map
2
+
3
+ Use this reference when a backend request needs to be turned into the right Vona thread.
4
+
5
+ ## Common request -> likely thread
6
+
7
+ ### “Add a controller action”
8
+
9
+ Usually means:
10
+
11
+ - controller update
12
+ - service update
13
+ - DTO and validation check
14
+ - OpenAPI contract check
15
+ - test update
16
+
17
+ ### “Add a new backend resource”
18
+
19
+ Usually means:
20
+
21
+ - controller
22
+ - service
23
+ - model
24
+ - entity
25
+ - dto
26
+ - migration/version
27
+ - test
28
+
29
+ Consider whether `npm run vona :tools:crud ...` is a better fit than piecemeal creation.
30
+
31
+ ### “Add a model or entity change”
32
+
33
+ Usually means:
34
+
35
+ - model/entity update
36
+ - migration/version update
37
+ - possibly field indexes
38
+ - possibly DTO/OpenAPI changes
39
+ - possibly cache or relation review
40
+
41
+ ### “Just add a DTO”
42
+
43
+ Usually means:
44
+
45
+ - DTO creation or inference decision
46
+ - validation rule alignment
47
+ - OpenAPI contract alignment
48
+ - controller/service usage updates
49
+
50
+ ## Generation-first rule
51
+
52
+ If a Vona generator exists for the thread, use it first and refine second.
@@ -0,0 +1,39 @@
1
+ # Follow-up Checklist
2
+
3
+ After generating or extending a backend thread, check which follow-up layers apply.
4
+
5
+ ## Structural follow-up
6
+
7
+ - controller path and action shape
8
+ - service ownership of business logic
9
+ - model/entity pairing
10
+ - DTO design
11
+
12
+ ## Contract follow-up
13
+
14
+ - validation rules
15
+ - OpenAPI metadata
16
+ - inferred DTO opportunities
17
+ - frontend contract impact
18
+
19
+ ## Persistence follow-up
20
+
21
+ - migration/version changes
22
+ - `meta.version`
23
+ - field indexes
24
+ - relations
25
+ - datasource choice
26
+ - cache behavior
27
+ - transaction behavior
28
+
29
+ ## Verification follow-up
30
+
31
+ - unit tests
32
+ - `db:reset` or migration verification
33
+ - `npm run test`
34
+ - `npm run tsc`
35
+ - `npm run build`
36
+
37
+ ## Escalation rule
38
+
39
+ If the request clearly affects frontend SDK, schema, or page logic too, hand off mentally to a fullstack workflow instead of pretending it is backend-only.
@@ -0,0 +1,201 @@
1
+ ---
2
+ name: cabloy-contract-loop
3
+ description: Use this skill whenever a Cabloy task crosses the Vona-to-Zova contract boundary: backend DTO, controller, validation, entity, inferred DTO, or OpenAPI changes that should drive SDK, schema, api, model, or rest-output regeneration, or stale generated frontend consumers that may be out of sync with backend truth. Trigger for requests about stale home-api output, OpenAPI regeneration, whether to regenerate instead of hand-patching types, or how to verify the Cabloy Basic or Cabloy Start contract loop end to end. Prefer it when the main problem is backend/frontend sync or diagnosis, not initial backend scaffolding or frontend page/component scaffolding.
4
+ ---
5
+
6
+ # Cabloy Contract Loop
7
+
8
+ Use this skill when a backend contract change needs to be reflected in frontend consumers, or when frontend consumers appear stale and you need to diagnose whether the backend contract loop is the real source of drift.
9
+
10
+ ## Goals
11
+
12
+ 1. detect whether the active repository is Cabloy Basic or Cabloy Start
13
+ 2. classify whether the task truly crosses the backend/frontend contract boundary
14
+ 3. support both forward contract changes and reverse stale-consumer detection
15
+ 4. keep the workflow contract-first instead of hand-patching generated frontend types or services
16
+ 5. prefer CLI-first regeneration paths on both Vona and Zova sides
17
+ 6. finish with end-to-end verification guidance that checks both contract production and consumption
18
+
19
+ ## Step 1: Detect repo and contract scope
20
+
21
+ Check the repository root for these marker files:
22
+
23
+ - `__CABLOY_BASIC__`
24
+ - `__CABLOY_START__`
25
+
26
+ Interpretation:
27
+
28
+ - `__CABLOY_BASIC__` present → this is Cabloy Basic
29
+ - `__CABLOY_START__` present → this is Cabloy Start
30
+ - neither present → inspect nearby scripts and ask before making edition-specific assumptions
31
+
32
+ Then classify whether the task is really a contract-loop task.
33
+
34
+ Use this skill in two common entry modes.
35
+
36
+ ### Mode A: forward contract change
37
+
38
+ The user already changed or plans to change backend contract surfaces such as:
39
+
40
+ - controller request or response shape
41
+ - DTO shape
42
+ - entity field shape that feeds API-facing contracts
43
+ - validation rules
44
+ - OpenAPI metadata
45
+ - inferred DTO or ORM DTO output that affects API consumers
46
+
47
+ ### Mode B: reverse stale-consumer detection
48
+
49
+ The user reports symptoms on the frontend side such as:
50
+
51
+ - stale SDK types
52
+ - stale schema-driven UI behavior
53
+ - API/model consumers no longer matching backend reality
54
+ - hand-patched frontend types that seem to drift from backend truth
55
+
56
+ In this mode, first diagnose whether the frontend is stale because the backend contract changed and the regeneration loop was skipped.
57
+
58
+ If the task is only backend scaffolding or only frontend scaffolding, the more specialized scaffold skills may be the better primary choice.
59
+
60
+ ## Step 2: Start from the contract source of truth
61
+
62
+ Inspect these surfaces before proposing workflow:
63
+
64
+ - the repository or workspace `package.json` that owns the scripts
65
+ - backend contract-defining code in Vona
66
+ - `npm run zova`
67
+ - frontend generation or consumption path in Zova
68
+ - relevant docs in `cabloy-docs/fullstack/`, `cabloy-docs/backend/`, and `cabloy-docs/frontend/`
69
+
70
+ For deeper reference material, read:
71
+
72
+ - `references/contract-loop-map.md`
73
+ - `references/verification-checklist.md`
74
+
75
+ ## Step 3: Identify the contract source of truth deliberately
76
+
77
+ In Cabloy, the backend is often the source of truth for the contract. Treat that as the default unless the codebase clearly shows a generated or schema-owned frontend artifact that should be regenerated from backend output.
78
+
79
+ ### If this is a forward change
80
+
81
+ Start with the backend side and update the contract deliberately.
82
+
83
+ Typical backend layers to inspect or change include:
84
+
85
+ - controller action signatures and annotations
86
+ - DTO classes
87
+ - entity field metadata
88
+ - validation rules and `v` helpers
89
+ - inferred DTO generation paths
90
+ - OpenAPI configuration or metadata annotations
91
+
92
+ The key rule is:
93
+
94
+ - do **not** patch frontend consumers first if the backend contract is the real source of truth
95
+
96
+ ### If this is reverse stale-consumer detection
97
+
98
+ Do not assume the frontend is the right place to fix the problem.
99
+
100
+ Instead:
101
+
102
+ 1. inspect what frontend artifact looks stale
103
+ 2. identify whether that artifact is generated, schema-driven, or hand-authored
104
+ 3. inspect the backend contract source that should feed it
105
+ 4. only then decide whether the fix is regeneration, backend correction, or a genuine frontend bug
106
+
107
+ ## Step 4: Verify backend contract output before touching frontend consumers
108
+
109
+ Before regenerating frontend artifacts, confirm the backend-side contract is actually correct.
110
+
111
+ That may include:
112
+
113
+ - reviewing controller return contracts
114
+ - confirming DTO and validation alignment
115
+ - checking Swagger/OpenAPI output
116
+ - confirming that the changed endpoint or schema now reflects the intended contract
117
+
118
+ If the backend contract output is wrong, frontend regeneration will only spread the mistake.
119
+
120
+ ## Step 5: Choose the right frontend regeneration path
121
+
122
+ Once the backend contract is correct, decide how the frontend should consume it.
123
+
124
+ ### Path A: OpenAPI / SDK regeneration
125
+
126
+ Use this when the frontend consumes generated API contracts.
127
+
128
+ Typical Zova commands include:
129
+
130
+ - `npm run zova :openapi:config ...`
131
+ - `npm run zova :openapi:generate ...`
132
+
133
+ ### Path B: REST/type generation by flavor
134
+
135
+ Use the edition-specific Zova REST/type build path when the workflow depends on the built flavor outputs.
136
+
137
+ Typical examples in Cabloy Basic include:
138
+
139
+ - `cd zova && npm run build:rest:cabloyBasicAdmin`
140
+ - `cd zova && npm run build:rest:cabloyBasicWeb`
141
+
142
+ For Cabloy Start, verify the exact Start-specific flavor names and paths in the Start repo.
143
+
144
+ ### Path C: Downstream frontend alignment
145
+
146
+ After generation, inspect whether the frontend still needs follow-up in:
147
+
148
+ - API services
149
+ - model-managed remote state
150
+ - schema-driven UI
151
+ - page or component assumptions
152
+
153
+ ## Step 6: Keep edition-aware differences explicit
154
+
155
+ The collaboration model is shared across Basic and Start, but the operational details may differ.
156
+
157
+ Especially verify:
158
+
159
+ - active repo marker
160
+ - affected frontend flavor
161
+ - whether the change affects Admin, Web, or both
162
+ - whether the generated output path is edition-specific
163
+
164
+ Do not silently reuse Basic-specific examples in Start workflows.
165
+
166
+ ## Step 7: End-to-end verification
167
+
168
+ A fullstack contract loop is not done until both sides are checked.
169
+
170
+ ### Backend-side verification
171
+
172
+ Typical checks may include:
173
+
174
+ - controller-level tests
175
+ - OpenAPI inspection
176
+ - `npm run test`
177
+ - `npm run tsc`
178
+ - `npm run build`
179
+
180
+ ### Frontend-side verification
181
+
182
+ Typical checks may include:
183
+
184
+ - SDK or metadata regeneration success
185
+ - `npm run tsc:zova`
186
+ - `npm run build:zova`
187
+ - flavor-specific or route-specific checks
188
+ - schema-driven consumer alignment
189
+
190
+ ## Step 8: Response pattern
191
+
192
+ When helpful, structure the response around these points:
193
+
194
+ 1. detected edition
195
+ 2. why this is a contract-loop task
196
+ 3. backend source-of-truth layer to change first
197
+ 4. frontend regeneration path to run second
198
+ 5. edition-specific operational notes
199
+ 6. end-to-end verification steps
200
+
201
+ Keep the response practical. The value of this skill is to prevent contract drift between Vona and Zova by guiding the user through the right backend-first, regeneration-second, verification-third workflow.
@@ -0,0 +1,29 @@
1
+ {
2
+ "skill_name": "cabloy-contract-loop",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "I changed a Vona DTO and controller response for an admin API in Cabloy Basic. What is the correct fullstack contract loop to get the frontend back in sync?",
7
+ "expected_output": "Treats the task as a contract-loop workflow, changes the backend contract first, verifies OpenAPI output, then recommends the correct frontend regeneration path and verification.",
8
+ "files": []
9
+ },
10
+ {
11
+ "id": 2,
12
+ "prompt": "Our frontend SDK types look stale after a backend entity and validation change. I do not want hand-patched frontend types. Tell me the Cabloy way to fix the contract loop.",
13
+ "expected_output": "Rejects hand-patching as the primary fix, identifies backend contract source-of-truth, recommends regeneration, and includes both backend and frontend verification.",
14
+ "files": []
15
+ },
16
+ {
17
+ "id": 3,
18
+ "prompt": "We are working in Cabloy Start and changed an API shape that affects the admin frontend. What should Claude do so the backend and frontend contracts stay aligned?",
19
+ "expected_output": "Detects Start sensitivity, keeps the backend-first contract path clear, then gives Start-aware frontend regeneration and verification guidance.",
20
+ "files": []
21
+ },
22
+ {
23
+ "id": 4,
24
+ "prompt": "The frontend model and generated SDK in Cabloy Basic look stale after a backend response change, but I am not sure whether the real bug is in backend OpenAPI output or in skipped frontend regeneration. Diagnose the contract loop the Cabloy way.",
25
+ "expected_output": "Handles reverse stale-consumer detection, checks backend source-of-truth first, avoids hand-patching frontend types as the primary fix, and proposes regeneration or backend correction based on the contract path.",
26
+ "files": []
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,47 @@
1
+ # Contract Loop Map
2
+
3
+ Use this reference when a task crosses the backend/frontend contract boundary.
4
+
5
+ ## Typical triggers
6
+
7
+ ### Backend contract changed
8
+
9
+ Common examples:
10
+
11
+ - DTO shape changed
12
+ - controller request/response changed
13
+ - validation changed
14
+ - `@Api.field` or OpenAPI metadata changed
15
+ - inferred DTO output changed
16
+
17
+ Likely next step:
18
+
19
+ - verify backend OpenAPI output
20
+ - regenerate the frontend consumer path
21
+
22
+ ### Frontend consumer drift
23
+
24
+ Common examples:
25
+
26
+ - generated SDK no longer matches backend
27
+ - schema-driven UI expects old shape
28
+ - model or API service types are stale
29
+
30
+ Likely next step:
31
+
32
+ - confirm whether backend contract really changed
33
+ - regenerate instead of hand-patching
34
+
35
+ ## Shared rule
36
+
37
+ The sequence is usually:
38
+
39
+ 1. change backend contract
40
+ 2. verify backend contract output
41
+ 3. regenerate frontend artifacts
42
+ 4. inspect frontend consumers
43
+ 5. verify end to end
44
+
45
+ ## Anti-pattern
46
+
47
+ Do not patch frontend generated artifacts first when the backend contract is the real source of truth.
@@ -0,0 +1,32 @@
1
+ # Verification Checklist
2
+
3
+ After a contract-loop change, check both sides.
4
+
5
+ ## Backend verification
6
+
7
+ - controller action contract is correct
8
+ - DTO and validation align
9
+ - OpenAPI output reflects the intended shape
10
+ - backend tests pass
11
+ - `npm run test`
12
+ - `npm run tsc`
13
+ - `npm run build`
14
+
15
+ ## Frontend verification
16
+
17
+ - regeneration commands completed successfully
18
+ - generated SDK/schema outputs are updated
19
+ - API/model/page/component consumers still typecheck
20
+ - `npm run tsc:zova`
21
+ - `npm run build:zova`
22
+ - relevant flavor-specific or route-specific checks
23
+
24
+ ## Edition verification
25
+
26
+ - Basic or Start marker confirmed
27
+ - affected flavor confirmed
28
+ - generation path matches the active edition
29
+
30
+ ## Done rule
31
+
32
+ A contract-loop task is not done when only the backend compiles or only the frontend builds. It is done when the contract source and the generated consumer path agree.