cabloy 5.1.61 → 5.1.62

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 (201) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
  2. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -1
  3. package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
  4. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
  5. package/CHANGELOG.md +42 -0
  6. package/CLAUDE.md +1 -0
  7. package/cabloy-docs/.vitepress/config.mjs +158 -12
  8. package/cabloy-docs/ai/docs-skills-rules-mapping.md +8 -0
  9. package/cabloy-docs/ai/future-skill-roadmap.md +2 -0
  10. package/cabloy-docs/ai/skills.md +1 -0
  11. package/cabloy-docs/backend/backend-contract-emission-output-inspection.md +189 -0
  12. package/cabloy-docs/backend/backend-contract-emission-source-reading-map.md +160 -0
  13. package/cabloy-docs/backend/backend-contract-emission-specimen.md +170 -0
  14. package/cabloy-docs/backend/backend-resource-module-contract-chain.md +323 -0
  15. package/cabloy-docs/backend/backend-source-reading-debug-checklist.md +173 -0
  16. package/cabloy-docs/backend/backend-source-reading-roadmap.md +129 -0
  17. package/cabloy-docs/backend/backend-source-reading-verify-playbook.md +166 -0
  18. package/cabloy-docs/backend/bean-scene-authoring.md +4 -4
  19. package/cabloy-docs/backend/broadcast-guide.md +3 -3
  20. package/cabloy-docs/backend/cli.md +20 -11
  21. package/cabloy-docs/backend/config-guide.md +4 -4
  22. package/cabloy-docs/backend/controller-aop-guide.md +10 -10
  23. package/cabloy-docs/backend/controller-guide.md +12 -2
  24. package/cabloy-docs/backend/crud-workflow.md +7 -3
  25. package/cabloy-docs/backend/dto-guide.md +12 -2
  26. package/cabloy-docs/backend/dto-infer-generation.md +201 -25
  27. package/cabloy-docs/backend/election-guide.md +2 -2
  28. package/cabloy-docs/backend/entity-guide.md +12 -3
  29. package/cabloy-docs/backend/error-guide.md +3 -3
  30. package/cabloy-docs/backend/event-guide.md +4 -4
  31. package/cabloy-docs/backend/external-aop-guide.md +2 -2
  32. package/cabloy-docs/backend/field-indexes.md +9 -3
  33. package/cabloy-docs/backend/foundation.md +8 -8
  34. package/cabloy-docs/backend/i18n-guide.md +6 -6
  35. package/cabloy-docs/backend/internal-aop-guide.md +2 -2
  36. package/cabloy-docs/backend/introduction.md +13 -0
  37. package/cabloy-docs/backend/migration-and-changes.md +3 -3
  38. package/cabloy-docs/backend/model-guide.md +16 -6
  39. package/cabloy-docs/backend/openapi-guide.md +3 -0
  40. package/cabloy-docs/backend/queue-guide.md +3 -3
  41. package/cabloy-docs/backend/redlock-guide.md +2 -2
  42. package/cabloy-docs/backend/schedule-guide.md +2 -2
  43. package/cabloy-docs/backend/scripts.md +8 -0
  44. package/cabloy-docs/backend/serialization-guide.md +2 -2
  45. package/cabloy-docs/backend/service-guide.md +18 -9
  46. package/cabloy-docs/backend/startup-guide.md +5 -5
  47. package/cabloy-docs/backend/status-guide.md +7 -7
  48. package/cabloy-docs/backend/unit-testing.md +3 -3
  49. package/cabloy-docs/backend/vona-source-reading-map.md +157 -0
  50. package/cabloy-docs/backend/websocket-protocol-guide.md +5 -5
  51. package/cabloy-docs/backend/websocket-usage-guide.md +15 -8
  52. package/cabloy-docs/frontend/a-model-under-the-hood.md +281 -0
  53. package/cabloy-docs/frontend/a-openapi-under-the-hood.md +248 -0
  54. package/cabloy-docs/frontend/a-router-guide.md +307 -0
  55. package/cabloy-docs/frontend/api-guide.md +4 -4
  56. package/cabloy-docs/frontend/api-schema-guide.md +1 -0
  57. package/cabloy-docs/frontend/app-startup-guide.md +7 -4
  58. package/cabloy-docs/frontend/bean-scene-authoring.md +1 -1
  59. package/cabloy-docs/frontend/behavior-guide.md +16 -16
  60. package/cabloy-docs/frontend/cli.md +5 -5
  61. package/cabloy-docs/frontend/command-scene-authoring.md +17 -8
  62. package/cabloy-docs/frontend/component-guide.md +5 -5
  63. package/cabloy-docs/frontend/component-props-guide.md +1 -1
  64. package/cabloy-docs/frontend/component-v-model-guide.md +2 -2
  65. package/cabloy-docs/frontend/filter-query-select-data-flow-guide.md +260 -0
  66. package/cabloy-docs/frontend/form-guide.md +19 -28
  67. package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
  68. package/cabloy-docs/frontend/foundation.md +10 -6
  69. package/cabloy-docs/frontend/frontend-source-reading-roadmap.md +249 -0
  70. package/cabloy-docs/frontend/generated-contract-consumption-debug-checklist.md +190 -0
  71. package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +205 -0
  72. package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +157 -0
  73. package/cabloy-docs/frontend/generated-contract-consumption-specimen.md +203 -0
  74. package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +189 -0
  75. package/cabloy-docs/frontend/generic-component-guide.md +1 -1
  76. package/cabloy-docs/frontend/introduction.md +29 -7
  77. package/cabloy-docs/frontend/model-architecture.md +38 -2
  78. package/cabloy-docs/frontend/model-resource-cookbook.md +11 -8
  79. package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
  80. package/cabloy-docs/frontend/model-resource-owner-pattern.md +22 -2
  81. package/cabloy-docs/frontend/model-resource-usage-guide.md +22 -6
  82. package/cabloy-docs/frontend/model-state-guide.md +12 -9
  83. package/cabloy-docs/frontend/module-scope.md +8 -8
  84. package/cabloy-docs/frontend/modules-and-suites.md +2 -1
  85. package/cabloy-docs/frontend/navigation-guards-guide.md +7 -0
  86. package/cabloy-docs/frontend/openapi-sdk-guide.md +12 -4
  87. package/cabloy-docs/frontend/page-guide.md +9 -9
  88. package/cabloy-docs/frontend/page-meta-guide.md +466 -0
  89. package/cabloy-docs/frontend/page-params-guide.md +3 -3
  90. package/cabloy-docs/frontend/page-query-guide.md +2 -2
  91. package/cabloy-docs/frontend/page-route-guide.md +6 -0
  92. package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +263 -0
  93. package/cabloy-docs/frontend/quickstart.md +14 -2
  94. package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +271 -0
  95. package/cabloy-docs/frontend/resource-list-page-deep-dive.md +279 -0
  96. package/cabloy-docs/frontend/rest-resource-source-reading-map.md +522 -0
  97. package/cabloy-docs/frontend/rest-resource-under-the-hood.md +622 -0
  98. package/cabloy-docs/frontend/root-behaviors-guide.md +282 -0
  99. package/cabloy-docs/frontend/route-alias-guide.md +6 -0
  100. package/cabloy-docs/frontend/router-stack-guide.md +229 -0
  101. package/cabloy-docs/frontend/router-tabs-introduction.md +26 -3
  102. package/cabloy-docs/frontend/router-tabs-layout-integration.md +367 -0
  103. package/cabloy-docs/frontend/router-tabs-mechanism.md +6 -0
  104. package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +7 -0
  105. package/cabloy-docs/frontend/router-tabs-vs-stack.md +167 -0
  106. package/cabloy-docs/frontend/router-view-hosts-guide.md +450 -0
  107. package/cabloy-docs/frontend/server-data.md +2 -1
  108. package/cabloy-docs/frontend/system-startup-guide.md +2 -2
  109. package/cabloy-docs/frontend/table-action-visibility-permission-flow-guide.md +263 -0
  110. package/cabloy-docs/frontend/table-cell-cookbook.md +568 -0
  111. package/cabloy-docs/frontend/table-guide.md +373 -0
  112. package/cabloy-docs/frontend/table-resource-crud-cookbook.md +496 -0
  113. package/cabloy-docs/frontend/zova-app-guide.md +251 -0
  114. package/cabloy-docs/frontend/zova-form-source-reading-map.md +7 -9
  115. package/cabloy-docs/frontend/zova-form-under-the-hood.md +5 -0
  116. package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
  117. package/cabloy-docs/frontend/zova-source-reading-map.md +101 -7
  118. package/cabloy-docs/frontend/zova-table-controller-render-supplement.md +225 -0
  119. package/cabloy-docs/frontend/zova-table-source-reading-map.md +317 -0
  120. package/cabloy-docs/frontend/zova-table-under-the-hood.md +532 -0
  121. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +245 -0
  122. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +139 -0
  123. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +248 -0
  124. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +511 -0
  125. package/cabloy-docs/fullstack/contract-loop-playbook.md +8 -2
  126. package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
  127. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +181 -48
  128. package/cabloy-docs/fullstack/introduction.md +3 -0
  129. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -2
  130. package/cabloy-docs/fullstack/suites-and-modules.md +333 -0
  131. package/cabloy-docs/fullstack/tutorial-1-first-module.md +3 -0
  132. package/cabloy-docs/fullstack/tutorial-2-first-crud.md +4 -0
  133. package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +4 -0
  134. package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +31 -19
  135. package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +5 -0
  136. package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +4 -0
  137. package/cabloy-docs/fullstack/tutorials-overview.md +1 -1
  138. package/cabloy-docs/reference/bean-scene-boilerplates.md +13 -13
  139. package/cabloy-docs/reference/package-map.md +4 -3
  140. package/package.json +1 -1
  141. package/vona/pnpm-lock.yaml +22 -258
  142. package/vona/src/suite/a-training/modules/training-student/package.json +53 -0
  143. package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +400 -0
  144. package/vona/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +18 -0
  145. package/vona/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  146. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.index.ts +12 -0
  147. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +21 -0
  148. package/vona/src/suite/a-training/modules/training-student/src/bean/ssrMenu.student.ts +29 -0
  149. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +15 -0
  150. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +15 -0
  151. package/vona/src/suite/a-training/modules/training-student/src/controller/student.ts +74 -0
  152. package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +28 -0
  153. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +44 -0
  154. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx +11 -0
  155. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +45 -0
  156. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +42 -0
  157. package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +28 -0
  158. package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +25 -0
  159. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +84 -0
  160. package/vona/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  161. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +10 -0
  162. package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +57 -0
  163. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +173 -0
  164. package/vona/src/suite/a-training/modules/training-student/tsconfig.build.json +11 -0
  165. package/vona/src/suite/a-training/modules/training-student/tsconfig.json +7 -0
  166. package/vona/src/suite/a-training/package.json +12 -0
  167. package/vona/src/suite/a-training/tsconfig.base.json +4 -0
  168. package/vona/src/suite/a-training/tsconfig.json +10 -0
  169. package/zova/packages-zova/zova/package.json +2 -2
  170. package/zova/pnpm-lock.yaml +406 -680
  171. package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
  172. package/zova/src/suite/a-training/modules/training-student/package.json +52 -0
  173. package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
  174. package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
  175. package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
  176. package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  177. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
  178. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
  179. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
  180. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
  181. package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
  182. package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
  183. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +51 -0
  184. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
  185. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
  186. package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
  187. package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
  188. package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
  189. package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  190. package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
  191. package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
  192. package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
  193. package/zova/src/suite/a-training/package.json +12 -0
  194. package/zova/src/suite/a-training/tsconfig.base.json +4 -0
  195. package/zova/src/suite/a-training/tsconfig.json +4 -0
  196. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
  197. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
  198. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
  199. package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
  200. package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
  201. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -0,0 +1,190 @@
1
+ # Generated Contract Consumption Debug Checklist
2
+
3
+ This page is a symptom-first diagnostic companion for one narrow frontend question:
4
+
5
+ > when generated contract consumption still looks wrong, which frontend consumer layer should I inspect next?
6
+
7
+ Use this page together with:
8
+
9
+ - [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen)
10
+ - [Generated Contract Consumption: List Branch](/frontend/generated-contract-consumption-list-branch)
11
+ - [Generated Contract Consumption: Entry Branch](/frontend/generated-contract-consumption-entry-branch)
12
+ - [Generated Contract Consumption Verify Playbook](/frontend/generated-contract-consumption-verify-playbook)
13
+ - [OpenAPI Runtime Under the Hood](/frontend/a-openapi-under-the-hood)
14
+ - [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive)
15
+
16
+ > [!TIP]
17
+ > **Generated-contract diagnosis path**
18
+ >
19
+ > 1. **[Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen)** — understand the family and choose the branch
20
+ > 2. **[Generated Contract Consumption Verify Playbook](/frontend/generated-contract-consumption-verify-playbook)** — prove what should be true after a change
21
+ > 3. **[Generated Contract Consumption Debug Checklist](/frontend/generated-contract-consumption-debug-checklist)** — use this page when the result is already wrong and you need the first failing layer
22
+ >
23
+ > **You are here:** step 3.
24
+ > **Previous recommended pages:** [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen) and [Generated Contract Consumption Verify Playbook](/frontend/generated-contract-consumption-verify-playbook).
25
+
26
+ ## Why this page exists
27
+
28
+ The current frontend generated-contract family already gives you:
29
+
30
+ - a conceptual hub
31
+ - list and entry branch pages
32
+ - a proof-oriented verify playbook
33
+
34
+ What was still missing was one symptom-first page.
35
+
36
+ This page fills that gap.
37
+
38
+ It is not another generation page and not another branch specimen. It is the checklist for isolating the first failing consumer-side layer.
39
+
40
+ ## Shared symptom: contract surface missing or stale
41
+
42
+ Start here when the problem looks earlier than either list or entry runtime.
43
+
44
+ Primary anchors:
45
+
46
+ - `zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts`
47
+ - optional direct schema consumer: `zova/src/suite/a-home/modules/home-passport/src/model/passport.ts`
48
+
49
+ What to inspect first:
50
+
51
+ - does the expected generated schema surface exist at all?
52
+ - do the expected API/schema methods still exist on the module-level schema bean?
53
+ - if the issue is clearly that the generated contract itself never refreshed, stop and hand off to the bridge/regeneration docs instead of debugging consumer pages
54
+
55
+ ## Shared symptom: owner boundary wrong or stale
56
+
57
+ Start here when the contract surface looks present but consumption still feels wrong across both branches.
58
+
59
+ Primary anchor:
60
+
61
+ - `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
62
+
63
+ What to inspect:
64
+
65
+ - does the thin semantic model still delegate to the stable resource owner?
66
+ - did the module accidentally grow a competing second owner for the same contract slice?
67
+ - do custom methods such as `summary()` or `deleteForce()` still point at the intended owner-backed consumer path?
68
+
69
+ If this layer is wrong, do not continue into list or entry runtime yet.
70
+
71
+ ## List branch symptoms
72
+
73
+ Only enter this branch when the issue is clearly list-page oriented.
74
+
75
+ Primary anchors:
76
+
77
+ - `zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/resource/controller.tsx`
78
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx`
79
+
80
+ Typical failures to classify:
81
+
82
+ ### A. List page renders blank or wrong blocks
83
+
84
+ Check:
85
+
86
+ - whether the route shell resolves the expected `resource`
87
+ - whether `schemaRow?.rest?.blocks` is actually present
88
+ - whether the page is stopping before deeper runtime blocks can render
89
+
90
+ ### B. `schemaRow`, `schemaFilter`, or query state mismatch
91
+
92
+ Check:
93
+
94
+ - whether the owner still exposes the expected schema surfaces
95
+ - whether `select(query)` is still the active data path
96
+ - whether `basic-page:blockPage` is still the deeper list runtime owner
97
+
98
+ ### C. List route shell looks right but visible behavior is still stale
99
+
100
+ At this point, you may need to hand off to:
101
+
102
+ - [Resource List Page Deep Dive](/frontend/resource-list-page-deep-dive)
103
+ - [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive)
104
+
105
+ ## Entry branch symptoms
106
+
107
+ Only enter this branch when the issue is clearly entry-page oriented.
108
+
109
+ Primary anchors:
110
+
111
+ - `zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/entry/controller.tsx`
112
+ - `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockPageEntry/controller.tsx`
113
+ - `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx`
114
+ - `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockToolbarRow/controller.tsx`
115
+
116
+ Typical failures to classify:
117
+
118
+ ### A. Entry page shows missing data or missing form schema
119
+
120
+ Check:
121
+
122
+ - whether `resource`, `id`, and `formScene` resolve correctly
123
+ - whether owner-level `formMeta`, `formSchema`, and `formData` still load where expected
124
+ - whether the shell is failing before deeper page-entry blocks can render
125
+
126
+ ### B. Wrong `formScene` or wrong toolbar visibility
127
+
128
+ Check:
129
+
130
+ - whether the route shell derived the intended `formScene`
131
+ - whether `blockToolbarRow` still consumes the expected host context
132
+ - whether this is really a narrower action-visibility/form-scene issue rather than a full contract-consumption issue
133
+
134
+ ### C. Submit or page-meta behavior looks out of sync
135
+
136
+ Check:
137
+
138
+ - whether `blockForm` still feeds submit/change callbacks back into the shared page-entry owner
139
+ - whether the deeper entry runtime still owns page-meta updates rather than scattered local code
140
+
141
+ If this layer is still unclear, hand off to:
142
+
143
+ - [Resource Entry Page Deep Dive](/frontend/resource-entry-page-deep-dive)
144
+ - [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide)
145
+
146
+ ## Classify the failure last
147
+
148
+ Only after the branch-local checks should you classify the problem as:
149
+
150
+ - bridge/generation issue
151
+ - deeper owner/runtime issue
152
+ - list-branch issue
153
+ - entry-branch issue
154
+
155
+ A practical rule is:
156
+
157
+ > do not start from the deepest runtime layer until the shared contract surface and the stable owner boundary already look correct.
158
+
159
+ ## What this page does not re-explain
160
+
161
+ This page deliberately does **not** re-teach:
162
+
163
+ - frontend OpenAPI generation/setup -> see [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
164
+ - the broader server-data abstraction ladder -> see [Server Data](/frontend/server-data)
165
+ - lower `a-openapi` runtime internals -> see [OpenAPI Runtime Under the Hood](/frontend/a-openapi-under-the-hood)
166
+ - `ModelResource` internals -> see [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive)
167
+ - deeper list runtime -> see [Resource List Page Deep Dive](/frontend/resource-list-page-deep-dive)
168
+ - deeper entry runtime -> see [Resource Entry Page Deep Dive](/frontend/resource-entry-page-deep-dive)
169
+
170
+ Its job is only to help you isolate the first failing frontend consumer layer.
171
+
172
+ ## Where to read next
173
+
174
+ - If you need the family overview first, return to [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen).
175
+ - If you need the list or entry branch specimen first, continue with [Generated Contract Consumption: List Branch](/frontend/generated-contract-consumption-list-branch) or [Generated Contract Consumption: Entry Branch](/frontend/generated-contract-consumption-entry-branch).
176
+ - If you want the proof-oriented layer-by-layer workflow first, continue with [Generated Contract Consumption Verify Playbook](/frontend/generated-contract-consumption-verify-playbook).
177
+ - If the generated surface itself is missing or stale, hand off to [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk) and [OpenAPI SDK Guide](/frontend/openapi-sdk-guide).
178
+ - If the issue is clearly below the current boundary, descend into [OpenAPI Runtime Under the Hood](/frontend/a-openapi-under-the-hood), [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive), [Resource List Page Deep Dive](/frontend/resource-list-page-deep-dive), or [Resource Entry Page Deep Dive](/frontend/resource-entry-page-deep-dive).
179
+
180
+ ## Final takeaway
181
+
182
+ The cleanest way to debug generated-contract consumption is not to jump immediately into the deepest runtime files.
183
+
184
+ First isolate:
185
+
186
+ - whether the generated contract surface itself is present
187
+ - whether the stable owner boundary is still correct
188
+ - whether the failure belongs to the list or entry branch
189
+
190
+ Only then descend into deeper internals if you still need them.
@@ -0,0 +1,205 @@
1
+ # Generated Contract Consumption: Entry Branch
2
+
3
+ This page is a focused specimen for one narrow frontend question:
4
+
5
+ > after generated contract material has already crossed into Zova, how is that contract consumed on the entry-page branch?
6
+
7
+ Use this page together with:
8
+
9
+ - [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen)
10
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
11
+ - [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
12
+ - [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood)
13
+ - [Resource Entry Page Deep Dive](/frontend/resource-entry-page-deep-dive)
14
+ - [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive)
15
+ - [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide)
16
+
17
+ ## Why this page exists
18
+
19
+ The current docs already explain:
20
+
21
+ - how backend-authored contract truth reaches frontend generation
22
+ - how generated contract material is consumed in a broad sense
23
+ - how the deeper entry runtime works internally
24
+
25
+ What was still missing was one narrow page that isolates the **entry-page consumption branch** before the deeper form/page-entry runtime takes over.
26
+
27
+ This page fills that gap.
28
+
29
+ ## The shortest accurate mental model
30
+
31
+ A practical entry-branch chain looks like this:
32
+
33
+ 1. generated contract material already exists in frontend API/schema surfaces
34
+ 2. the current resource model keeps `ModelResource` as the stable owner
35
+ 3. the entry route shell consumes that owner through resource, `id`, and `formScene`
36
+ 4. `basic-pageentry:blockPageEntry` becomes the deeper entry runtime owner
37
+ 5. `blockForm` and `blockToolbarRow` consume that owner-owned context
38
+ 6. deeper form and page-meta runtime docs take over from there
39
+
40
+ That means the entry branch is not only “render a form from schema.”
41
+
42
+ It is the path from generated contract access into resource-owner and entry-page shell consumption.
43
+
44
+ ## Source-confirmed reading path
45
+
46
+ This page is the second layer of a small source-reading chain around same-resource model facades:
47
+
48
+ 1. [Model Architecture](/frontend/model-architecture) for the broader role of Zova Model
49
+ 2. this page for the consumer-side handoff into the owner
50
+ 3. [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive) for the owner internals that make that handoff work
51
+
52
+ Use this order:
53
+
54
+ 1. `zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts`
55
+ 2. `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
56
+ 3. `zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/entry/controller.tsx`
57
+ 4. `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockPageEntry/controller.tsx`
58
+ 5. `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx`
59
+ 6. `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockToolbarRow/controller.tsx`
60
+
61
+ That order starts from the generated schema access surface, moves into the thin module model facade, then into the resource entry shell and the deeper Basic entry runtime owner plus its concrete consumers.
62
+
63
+ ## Generated contract surface on the entry branch
64
+
65
+ A practical current source anchor is:
66
+
67
+ - `zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts`
68
+
69
+ Representative source facts:
70
+
71
+ - the module exposes a schema bean through `@ApiSchema()`
72
+ - entry-related schema access is available through methods such as `create()`, `view()`, and `update()`
73
+ - those methods call `this.$sdk.createApiSchemas(...)`
74
+
75
+ This is the first consumer-facing contract surface on the entry branch.
76
+
77
+ The entry-page branch does not start with local form-only logic.
78
+ It starts with generated schema access that has already been turned into frontend-usable contract material.
79
+
80
+ ## Thin model facade and owner-level form helpers
81
+
82
+ A practical current model specimen is:
83
+
84
+ - `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
85
+
86
+ Representative source facts:
87
+
88
+ - the module model keeps `rest-resource.model.resource` as the stable owner
89
+ - `summary(id)` still goes through `queryItem(...)` rather than bypassing the owner
90
+ - `deleteForce(id)` still goes through `mutationItem(...)` rather than introducing a separate mutation surface
91
+ - custom endpoints still delegate to owner-level helpers rather than replacing the resource-owner story
92
+
93
+ This is the thin-facade boundary:
94
+
95
+ - the model does not become a second resource owner
96
+ - same-resource custom actions are exposed as small named model methods
97
+ - entry and form consumers can continue to depend on owner-level surfaces without splitting the resource story
98
+
99
+ A practical rule is:
100
+
101
+ > when entry-page behavior still belongs to the same resource, keep the resource owner stable and let form helpers stay owner-driven.
102
+
103
+ This matters because entry pages usually depend on owner-level surfaces such as:
104
+
105
+ - `formMeta`
106
+ - `formSchema`
107
+ - `formProvider`
108
+ - `formData`
109
+ - submit helpers
110
+
111
+ If you want the broader model-layer explanation behind this narrow facade pattern, continue with [Model Architecture](/frontend/model-architecture).
112
+ If you want the deeper owner internals behind `queryItem(...)`, `mutationItem(...)`, and form-derived helpers, continue with [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive).
113
+
114
+ ## Entry shell consumption
115
+
116
+ The clearest current entry shell is:
117
+
118
+ - `zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/entry/controller.tsx`
119
+
120
+ Representative source facts:
121
+
122
+ - the page resolves `$$modelResource` from the route resource
123
+ - it derives `formMeta` from `formScene`
124
+ - it autoloads `this.$$modelResource.getFormApiSchemas(this.formMeta)?.sdk`
125
+ - it derives `formSchema` from `this.$$modelResource.getFormSchema(this.formMeta)`
126
+
127
+ This is the entry-shell boundary:
128
+
129
+ - generated contract material has already crossed into the owner
130
+ - the shell uses the owner to derive scene-aware form schema state
131
+ - schema-defined blocks then take over the deeper runtime
132
+
133
+ ## Handoff into `basic-pageentry:blockPageEntry`
134
+
135
+ The next concrete consumer is:
136
+
137
+ - `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockPageEntry/controller.tsx`
138
+
139
+ Representative source facts:
140
+
141
+ - it resolves the selector-backed owner
142
+ - it computes `formMeta`, `formProvider`, `formSchema`, and `formData`
143
+ - it uses owner-level helpers such as `getFormData(...)` and `getFormMutationSubmit(...)`
144
+ - it pushes `pageTitle`, `pageDirty`, and `formMeta` into page meta
145
+
146
+ This means the deeper entry runtime still depends on the same generated-contract and resource-owner surfaces.
147
+
148
+ ## `blockForm` and `blockToolbarRow` as concrete consumers
149
+
150
+ Two especially clear consumer files are:
151
+
152
+ - `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx`
153
+ - `zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockToolbarRow/controller.tsx`
154
+
155
+ Representative source facts from `blockForm`:
156
+
157
+ - it passes owner-derived `formData`, `formSchema`, `schemaScene`, `formMeta`, and `formProvider` into `ZForm`
158
+ - `onChanged` feeds updated data back into page meta through `$$pageEntry.setPageMeta(...)`
159
+
160
+ Representative source facts from `blockToolbarRow`:
161
+
162
+ - it consumes the same `$$pageEntry` context
163
+ - it filters actions by current `formScene`
164
+ - it combines `formScene` and permission checks before rendering the toolbar actions
165
+
166
+ A practical reading takeaway is:
167
+
168
+ - generated contract material becomes owner-level form surfaces first
169
+ - the entry runtime then turns those surfaces into actual form and toolbar behavior
170
+
171
+ ## What this page does not re-explain
172
+
173
+ This page does **not** fully re-explain:
174
+
175
+ - how to configure or generate OpenAPI SDK output -> see [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
176
+ - the broader generated-contract hub -> see [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen)
177
+ - the lower runtime of `$sdk` -> see [OpenAPI Runtime Under the Hood](/frontend/a-openapi-under-the-hood)
178
+ - `ModelResource` internals -> see [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive)
179
+ - the deeper entry runtime and form/page-meta chain -> see [Resource Entry Page Deep Dive](/frontend/resource-entry-page-deep-dive) and [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide)
180
+ - the broader `rest-resource` runtime bridge -> see [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood)
181
+
182
+ Its job is only to show the entry-side contract-consumption handoff before deeper runtime internals take over.
183
+
184
+ ## Where to read next
185
+
186
+ - If you want the shared consumer-side overview first, return to [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen).
187
+ - If you want a proof-oriented layer-by-layer validation workflow, continue with [Generated Contract Consumption Verify Playbook](/frontend/generated-contract-consumption-verify-playbook).
188
+ - If the result is already wrong and you want symptom-first diagnosis, continue with [Generated Contract Consumption Debug Checklist](/frontend/generated-contract-consumption-debug-checklist).
189
+ - If you want the deeper entry runtime internals, continue with [Resource Entry Page Deep Dive](/frontend/resource-entry-page-deep-dive).
190
+ - If you want the broader resource/runtime shell map, continue with [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood).
191
+ - If you want the form-scene to page-meta runtime chain, continue with [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide).
192
+ - If you want resource-owner internals, continue with [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive).
193
+
194
+ ## Final takeaway
195
+
196
+ The cleanest way to read generated contract consumption on the entry branch is:
197
+
198
+ - generated schema/API surface
199
+ - stable resource owner
200
+ - entry route shell
201
+ - deeper `basic-pageentry` runtime owner
202
+ - form and toolbar consumers
203
+ - deeper runtime internals only if you still need them
204
+
205
+ That keeps the entry-branch consumption path visible before you descend into the heavier form/runtime details.
@@ -0,0 +1,157 @@
1
+ # Generated Contract Consumption: List Branch
2
+
3
+ This page is a focused specimen for one narrow frontend question:
4
+
5
+ > after generated contract material has already crossed into Zova, how is that contract consumed on the list-page branch?
6
+
7
+ Use this page together with:
8
+
9
+ - [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen)
10
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
11
+ - [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
12
+ - [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood)
13
+ - [Rest Resource Source Reading Map](/frontend/rest-resource-source-reading-map)
14
+ - [Resource List Page Deep Dive](/frontend/resource-list-page-deep-dive)
15
+ - [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive)
16
+
17
+ ## Why this page exists
18
+
19
+ The current docs already explain:
20
+
21
+ - how backend-authored contract truth reaches frontend generation
22
+ - how generated contract material is consumed in a broad sense
23
+ - how the deeper list runtime works internally
24
+
25
+ What was still missing was one narrow page that isolates the **list-page consumption branch** before the deeper list runtime takes over.
26
+
27
+ This page fills that gap.
28
+
29
+ ## The shortest accurate mental model
30
+
31
+ A practical list-branch chain looks like this:
32
+
33
+ 1. generated contract material already exists in frontend API/schema surfaces
34
+ 2. the current resource model keeps `ModelResource` as the stable owner
35
+ 3. the list route shell consumes that owner through resource context
36
+ 4. `basic-page:blockPage` becomes the deeper list runtime owner
37
+ 5. deeper table, filter, and pager runtime docs take over from there
38
+
39
+ That means the list branch is not only “call one API.”
40
+
41
+ It is the path from generated contract access into resource-owner and list-page shell consumption.
42
+
43
+ ## Source-confirmed reading path
44
+
45
+ Use this order:
46
+
47
+ 1. `zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts`
48
+ 2. `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
49
+ 3. `zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/resource/controller.tsx`
50
+ 4. `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx`
51
+
52
+ That order starts from the generated schema access surface, moves into the thin module model facade, then into the resource list shell and the deeper Basic list runtime owner.
53
+
54
+ ## Generated contract surface on the list branch
55
+
56
+ A practical current source anchor is:
57
+
58
+ - `zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts`
59
+
60
+ Representative source facts:
61
+
62
+ - the module exposes a schema bean through `@ApiSchema()`
63
+ - list-related schema access is available through methods such as `select()`
64
+ - those methods call `this.$sdk.createApiSchemas(...)`
65
+
66
+ This is the first consumer-facing contract surface on the list branch.
67
+
68
+ The list-page branch does not start with local page-only table logic.
69
+ It starts with generated schema access that has already been turned into frontend-usable contract material.
70
+
71
+ ## Thin model facade and stable owner rule
72
+
73
+ A practical current model specimen is:
74
+
75
+ - `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
76
+
77
+ Representative source facts:
78
+
79
+ - the module model resolves `rest-resource.model.resource` through selector-backed access
80
+ - custom methods such as `summary(id)` and `deleteForce(id)` still delegate to resource-owner helper surfaces
81
+
82
+ A practical rule is:
83
+
84
+ > when the API still belongs to the same resource, keep `ModelResource` as the stable owner and keep the module model thin.
85
+
86
+ That is the rule that prevents list-page consumption from scattering contract ownership into ad hoc page code.
87
+
88
+ ## List shell consumption
89
+
90
+ The clearest current list shell is:
91
+
92
+ - `zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/page/resource/controller.tsx`
93
+
94
+ Representative source facts:
95
+
96
+ - the page resolves `$$modelResource` from the route resource
97
+ - `__init__()` autoloads `this.$$modelResource.apiSchemasSelect.sdk`
98
+ - render reads `schemaRow?.rest?.blocks`
99
+
100
+ This is the list-shell boundary:
101
+
102
+ - generated contract material has already crossed into the owner
103
+ - the shell uses the owner to load top-level list schema state
104
+ - schema-defined blocks then take over the deeper runtime
105
+
106
+ ## Deeper handoff into `basic-page:blockPage`
107
+
108
+ The next concrete consumer is:
109
+
110
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx`
111
+
112
+ Representative source facts:
113
+
114
+ - it resolves the selector-backed resource owner
115
+ - it loads `this.$$modelResource.apiSchemasSelect.sdk`
116
+ - it derives list data through `this.$$modelResource.select(this.query)`
117
+ - it exposes `schemaFilter`, `schemaRow`, and `permissions`
118
+
119
+ That means the deeper list runtime still depends on the same generated-contract and resource-owner surfaces.
120
+
121
+ A practical reading takeaway is:
122
+
123
+ - generated contract material becomes owner surfaces first
124
+ - `blockPage` then becomes the shared list runtime owner for filters, paging, query state, and list data
125
+
126
+ ## What this page does not re-explain
127
+
128
+ This page does **not** fully re-explain:
129
+
130
+ - how to configure or generate OpenAPI SDK output -> see [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
131
+ - the broader generated-contract hub -> see [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen)
132
+ - the lower runtime of `$sdk` -> see [OpenAPI Runtime Under the Hood](/frontend/a-openapi-under-the-hood)
133
+ - `ModelResource` internals -> see [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive)
134
+ - the deeper list runtime and page-block chain -> see [Resource List Page Deep Dive](/frontend/resource-list-page-deep-dive)
135
+ - the broader `rest-resource` runtime bridge -> see [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood)
136
+
137
+ Its job is only to show the list-side contract-consumption handoff before deeper runtime internals take over.
138
+
139
+ ## Where to read next
140
+
141
+ - If you want the shared consumer-side overview first, return to [Generated Contract Consumption Specimen](/frontend/generated-contract-consumption-specimen).
142
+ - If you want a proof-oriented layer-by-layer validation workflow, continue with [Generated Contract Consumption Verify Playbook](/frontend/generated-contract-consumption-verify-playbook).
143
+ - If the result is already wrong and you want symptom-first diagnosis, continue with [Generated Contract Consumption Debug Checklist](/frontend/generated-contract-consumption-debug-checklist).
144
+ - If you want the deeper list runtime internals, continue with [Resource List Page Deep Dive](/frontend/resource-list-page-deep-dive).
145
+ - If you want the broader resource/runtime shell map, continue with [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood) and [Rest Resource Source Reading Map](/frontend/rest-resource-source-reading-map).
146
+ - If you want resource-owner internals, continue with [ModelResource Internals Deep Dive](/frontend/model-resource-internals-deep-dive).
147
+
148
+ ## Final takeaway
149
+
150
+ The cleanest way to read generated contract consumption on the list branch is:
151
+
152
+ - generated schema/API surface
153
+ - stable resource owner
154
+ - list route shell
155
+ - deeper `basic-page` runtime owner
156
+
157
+ That keeps the list-branch consumption path visible before you descend into the heavier runtime details.