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,245 @@
1
+ # Backend Metadata to Frontend Table Actions Debug Checklist
2
+
3
+ This page is a symptom-first verify/debug companion for one narrow fullstack question:
4
+
5
+ > when a visible Student row action is wrong, stale, hidden, or missing, which layer should I check next?
6
+
7
+ Use this page together with:
8
+
9
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
10
+ - [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map)
11
+ - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
12
+ - [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
13
+ - [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map)
14
+
15
+ > [!TIP]
16
+ > **Mixed-chain diagnosis path**
17
+ >
18
+ > 1. **[Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)** — understand the mixed chain conceptually
19
+ > 2. **[Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map)** — trace the Student row-action chain in file order
20
+ > 3. **[Backend Metadata to Frontend Table Actions Debug Checklist](/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist)** — verify which layer is wrong when the visible action still fails
21
+ >
22
+ > **You are here:** step 3.
23
+ > **Previous recommended pages:** [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions) and [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map).
24
+
25
+ ## Why this page exists
26
+
27
+ The current docs already explain the mixed chain in two useful ways:
28
+
29
+ - conceptually, through the mixed-chain explainer page
30
+ - structurally, through the mixed-chain source-reading map
31
+
32
+ What was still missing was one page that starts from symptoms.
33
+
34
+ This page fills that gap.
35
+
36
+ It is not another contract-loop overview and not another table-runtime deep dive. It is a practical checklist for debugging one Student row-action chain.
37
+
38
+ ## Fastest mental model for diagnosis
39
+
40
+ A visible row action can fail at several different layers:
41
+
42
+ 1. backend row metadata may not point to the intended action resource
43
+ 2. custom backend action semantics may not have refreshed the generated frontend contract surface
44
+ 3. the frontend action resource may be missing or stale
45
+ 4. the page block/runtime handoff may not be feeding the right row schema into `ZTable`
46
+ 5. the table runtime may finally be filtering or resolving the action differently than expected
47
+
48
+ The fastest debugging strategy is:
49
+
50
+ > check the earliest possible source of truth first, and only descend into deeper runtime layers when the earlier layers already look correct.
51
+
52
+ ## Debugging checklist by layer
53
+
54
+ ### 1. Check the backend row metadata first
55
+
56
+ Start here when:
57
+
58
+ - the action is missing entirely
59
+ - the wrong action appears in the operations column
60
+ - the custom action is not present in the backend contract surface at all
61
+
62
+ Primary source anchor:
63
+
64
+ - `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx`
65
+
66
+ What to confirm:
67
+
68
+ - the row metadata still uses the intended `ZovaRender.cell(...)` identity
69
+ - nested `ZovaRender.tableActionRow(...)` entries include the expected action names
70
+ - custom actions such as `training-student:actionSummary` or `training-student:actionDeleteForce` are still present where expected
71
+
72
+ If this layer is wrong, stop here and fix the metadata truth first.
73
+
74
+ ### 2. Check the forward-generated contract only when custom action semantics changed
75
+
76
+ Only do this when the visible action depends on a changed backend endpoint such as:
77
+
78
+ - `summary/:id`
79
+ - `deleteForce/:id`
80
+
81
+ Primary source anchors:
82
+
83
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
84
+ - `zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts`
85
+ - `zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts`
86
+ - `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
87
+
88
+ What to confirm:
89
+
90
+ - the backend controller still exposes the intended custom endpoint
91
+ - the frontend module OpenAPI config still owns the expected operation slice
92
+ - the generated frontend API surface still contains the expected typed method
93
+ - the thin model facade still delegates to the correct generated API path while keeping the existing resource-owner story intact
94
+
95
+ If the endpoint changed but the generated contract did not refresh, the issue is not the visible action resource yet.
96
+ It is a forward-chain regeneration problem.
97
+
98
+ ### 3. Check that the frontend action resource exists and matches the metadata identity
99
+
100
+ Start here when:
101
+
102
+ - backend metadata looks correct
103
+ - generated contract also looks correct
104
+ - but the visible action still does not render or behaves like the wrong action implementation
105
+
106
+ Primary source anchors:
107
+
108
+ - `zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx`
109
+ - `zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx`
110
+ - `zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionOperationsRow.tsx`
111
+
112
+ What to confirm:
113
+
114
+ - the expected custom or built-in action bean exists
115
+ - the resource identity in backend metadata still matches the frontend bean identity
116
+ - the custom action bean is still thin and delegates to the right model or command path
117
+ - `actionOperationsRow` is still able to include and render the child action resources
118
+
119
+ ### 4. Check the page handoff into the list/table runtime
120
+
121
+ Start here when:
122
+
123
+ - backend metadata and action resources both look correct
124
+ - but the list page still does not expose the action as expected
125
+
126
+ Primary source anchors:
127
+
128
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx`
129
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockTable/controller.tsx`
130
+
131
+ What to confirm:
132
+
133
+ - `schemaRow` is still exposed from the stable resource owner
134
+ - `permissions` are still flowing through the shared page runtime
135
+ - `blockTable` is still bridging the expected `schemaRow`, `data`, and `tableScope` into `ZTable`
136
+
137
+ If this layer is wrong, the problem is in the page/runtime handoff, not in the action bean itself.
138
+
139
+ ### 5. Only then check final table/runtime resolution
140
+
141
+ Go here last when:
142
+
143
+ - metadata truth is correct
144
+ - generated contract is correct
145
+ - action resources exist
146
+ - page block handoff also looks correct
147
+ - but the action still renders incorrectly
148
+
149
+ Primary final-runtime anchor:
150
+
151
+ - `zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx`
152
+
153
+ At this point, switch from contract debugging into deeper table-runtime debugging.
154
+
155
+ For the broader table runtime reading path, continue with [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map).
156
+
157
+ ## How to classify the failure
158
+
159
+ ### Visible action missing entirely
160
+
161
+ Most likely checks, in order:
162
+
163
+ 1. backend row metadata truth
164
+ 2. frontend action resource identity exists
165
+ 3. page block/schema handoff
166
+
167
+ ### Visible action exists but uses stale behavior
168
+
169
+ Most likely checks, in order:
170
+
171
+ 1. if custom semantics changed, inspect the forward-generated contract path
172
+ 2. distinguish generated-output drift from local dependency drift
173
+ 3. then confirm the action bean still delegates to the expected model/API path
174
+
175
+ ### Visible action exists but wrong permissions or visibility
176
+
177
+ This is often a narrower visibility problem rather than a full mixed-chain problem.
178
+
179
+ When that is the real issue, continue with [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide).
180
+
181
+ ### Visible action exists but wrong runtime/render resolution
182
+
183
+ Treat this as the deepest layer.
184
+
185
+ Only go here after upstream contract, generation, action-resource, and page handoff checks already pass.
186
+
187
+ ## Generated-output drift vs local dependency drift
188
+
189
+ A useful distinction is:
190
+
191
+ ### Generated-output drift
192
+
193
+ This is the problem when:
194
+
195
+ - the custom backend contract changed
196
+ - but the generated frontend API/model surface was not refreshed correctly
197
+
198
+ Typical response:
199
+
200
+ 1. confirm backend contract truth first
201
+ 2. refresh the generated frontend contract surface
202
+ 3. verify the generated output itself before debugging the visible action
203
+
204
+ ### Local dependency drift
205
+
206
+ This is the problem when:
207
+
208
+ - the generated output already contains the expected action contract or types
209
+ - but local consumers still behave as if the old version is installed
210
+
211
+ Typical response:
212
+
213
+ 1. stop editing source truth
214
+ 2. prove the generated handoff is already correct
215
+ 3. rerun the normal sync flow
216
+ 4. only then repair local install state if needed
217
+
218
+ For the broader drift vocabulary, continue with [Contract Loop Playbook](/fullstack/contract-loop-playbook).
219
+
220
+ ## What this page does not re-explain
221
+
222
+ This page deliberately does **not** re-teach:
223
+
224
+ - generic contract-loop direction and drift theory -> see [Contract Loop Playbook](/fullstack/contract-loop-playbook)
225
+ - the conceptual mixed-chain story -> see [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
226
+ - the file-order mixed-chain path -> see [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map)
227
+ - table-action permission semantics in depth -> see [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
228
+ - deep table runtime internals -> see [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map)
229
+
230
+ Its job is only to tell you which layer to verify next when the visible Student row action still fails.
231
+
232
+ ## Where to read next
233
+
234
+ - If you need the conceptual mixed-chain explanation first, return to [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions).
235
+ - If you need the file-order path first, continue with [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map).
236
+ - If you want a proof-oriented layer-by-layer validation workflow after making a change, continue with [Backend Metadata to Frontend Table Actions Verify Playbook](/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook).
237
+ - If the issue is really visibility/permission logic, continue with [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide).
238
+ - If the mixed-chain layer itself now looks correct and you want the frontend consumer-side diagnosis family, continue with [Generated Contract Consumption Debug Checklist](/frontend/generated-contract-consumption-debug-checklist).
239
+ - If the issue becomes deep table-runtime resolution, descend into [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map).
240
+
241
+ ## Final takeaway
242
+
243
+ The cleanest way to debug a visible Student row action is not to start from the deepest table runtime file.
244
+
245
+ Start from backend row metadata truth, then only move into generated contract follow-up, action resource existence, page handoff, and final runtime resolution as needed.
@@ -0,0 +1,139 @@
1
+ # Backend Metadata to Frontend Table Actions Source Reading Map
2
+
3
+ This page is a practical source-reading companion for one narrow fullstack question:
4
+
5
+ > if I need to trace one Student row-action chain across backend metadata, generated contract follow-up, and frontend action resources, which files should I open first, and in what order?
6
+
7
+ Use this page together with:
8
+
9
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
10
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
11
+ - [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
12
+ - [TableCell Authoring Cookbook](/frontend/table-cell-cookbook)
13
+ - [Table + Resource CRUD Cookbook](/frontend/table-resource-crud-cookbook)
14
+ - [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
15
+
16
+ > [!TIP]
17
+ > **Mixed-chain reading path**
18
+ >
19
+ > 1. **[Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)** — understand the mixed contract chain conceptually
20
+ > 2. **[Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map)** — trace the same Student row-action chain in file order
21
+ >
22
+ > **You are here:** step 2.
23
+ > **Previous recommended page:** [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions).
24
+
25
+ ## Why this page exists
26
+
27
+ The current mixed-chain explainer page already answers the conceptual question well:
28
+
29
+ - backend metadata chooses frontend action resources
30
+ - generated API/model follow-up can join that same thread when custom actions need backend endpoints
31
+ - the visible row action is only the last step of the chain
32
+
33
+ What it does not isolate directly is the shortest source-order path through one real Student row-action thread.
34
+
35
+ This page fills that gap.
36
+
37
+ It is a file-order map, not another runtime explainer.
38
+
39
+ ## How to use this page
40
+
41
+ For the two paths below:
42
+
43
+ 1. start with the conceptual mixed-chain page first
44
+ 2. read the first source file to identify the current source of truth
45
+ 3. follow the handoff only until you can answer the question you actually have
46
+ 4. stop before you drift into deeper table/runtime internals unless they are really needed
47
+
48
+ ## 1. Built-in row-action chain
49
+
50
+ Use this path when your question is about:
51
+
52
+ - how one built-in row action becomes visible
53
+ - how `actionOperationsRow` composes visible child actions
54
+ - where backend metadata stops and frontend action resources start
55
+
56
+ ### Read the docs first
57
+
58
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
59
+ - [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
60
+ - [TableCell Authoring Cookbook](/frontend/table-cell-cookbook)
61
+
62
+ ### Then read source in this order
63
+
64
+ 1. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx`
65
+ 2. `zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionOperationsRow.tsx`
66
+ 3. `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx`
67
+ 4. `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockTable/controller.tsx`
68
+
69
+ ### What each file clarifies
70
+
71
+ - `studentSelectResItem.tsx` shows the backend-owned row DTO metadata that chooses `basic-table:actionOperationsRow` and the visible child actions inside it
72
+ - `tableCell.actionOperationsRow.tsx` shows how the frontend runtime filters those child actions by permission and renders them through nested action resources
73
+ - `blockPage/controller.tsx` shows how `schemaRow`, `permissions`, and list data are exposed from the stable resource owner into the page runtime
74
+ - `blockTable/controller.tsx` shows the bridge from page runtime into `ZTable`
75
+
76
+ ## 2. Custom action chain with generated contract follow-up
77
+
78
+ Use this path when your question is about:
79
+
80
+ - how a custom row action such as `summary` or `deleteForce` joins the mixed chain
81
+ - where the forward-generated API/model path enters
82
+ - how the visible action stays thin while backend truth and resource ownership remain coherent
83
+
84
+ ### Read the docs first
85
+
86
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
87
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
88
+ - [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
89
+
90
+ ### Then read source in this order
91
+
92
+ 1. `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
93
+ 2. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx`
94
+ 3. `zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts`
95
+ 4. `zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts`
96
+ 5. `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
97
+ 6. `zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx`
98
+ 7. `zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx`
99
+ 8. optional downstream handoff:
100
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx`
101
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockTable/controller.tsx`
102
+
103
+ ### What each file clarifies
104
+
105
+ - `controller/student.ts` shows the backend source truth for custom endpoints such as `summary/:id` and `deleteForce/:id`
106
+ - `studentSelectResItem.tsx` shows the backend row metadata that inserts the custom row actions into the operations column
107
+ - `openapi.config.ts` shows the frontend module ownership rule for generated OpenAPI operations
108
+ - `api/trainingStudent.ts` shows the generated typed API surface that the frontend can consume
109
+ - `model/student.ts` shows the thin semantic facade over the stable resource owner
110
+ - `tableCell.actionSummary.tsx` shows a visible action that stays thin and delegates summary behavior into the model/API path
111
+ - `tableCell.actionDeleteForce.tsx` shows the same pattern for force-delete behavior
112
+ - `blockPage` and `blockTable` are only needed when the question becomes “how does the list runtime carry that row schema into visible table output?”
113
+
114
+ ## What this page does not re-explain
115
+
116
+ This page deliberately does **not** re-teach:
117
+
118
+ - generic table runtime internals -> see [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map)
119
+ - CRUD list-page assembly -> see [Table + Resource CRUD Cookbook](/frontend/table-resource-crud-cookbook)
120
+ - row/bulk permission filtering semantics -> see [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
121
+ - the pure forward bridge -> see [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
122
+ - the pure reverse bridge -> see [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
123
+
124
+ Its job is only to provide the shortest file-order path through one mixed Student row-action chain.
125
+
126
+ ## Where to read next
127
+
128
+ - If you need the conceptual mixed-chain explanation first, return to [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions).
129
+ - If you now want to prove the Student row-action chain end-to-end after a change, continue with [Backend Metadata to Frontend Table Actions Verify Playbook](/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook).
130
+ - If the visible Student row action is still wrong after you understand the file-order path, continue with [Backend Metadata to Frontend Table Actions Debug Checklist](/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist).
131
+ - If your next question is purely forward-chain, continue with [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
132
+ - If your next question is purely reverse-chain, continue with [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend).
133
+ - If your next question becomes table-runtime specific, continue with [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map) and [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide).
134
+
135
+ ## Final takeaway
136
+
137
+ The cleanest way to read a mixed Student row-action chain is not to jump directly into either the backend bridge docs or the deepest table runtime files.
138
+
139
+ Start from the backend row metadata that chooses the visible action resources, then follow the custom forward-generated path only when the action semantics actually require new backend endpoints.
@@ -0,0 +1,248 @@
1
+ # Backend Metadata to Frontend Table Actions Verify Playbook
2
+
3
+ This page is a proof-oriented verification companion for one narrow fullstack question:
4
+
5
+ > after I change a Student row-action chain, what do I need to verify layer by layer before I trust the result?
6
+
7
+ Use this page together with:
8
+
9
+ - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
10
+ - [Backend Metadata to Frontend Table Actions Debug Checklist](/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist)
11
+ - [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map)
12
+ - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
13
+ - [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
14
+
15
+ > [!TIP]
16
+ > **Mixed-chain verification path**
17
+ >
18
+ > 1. **[Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)** — understand the mixed chain conceptually
19
+ > 2. **[Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map)** — trace the Student row-action chain in file order
20
+ > 3. **[Backend Metadata to Frontend Table Actions Verify Playbook](/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook)** — prove the chain is correct after your change
21
+ > 4. **[Backend Metadata to Frontend Table Actions Debug Checklist](/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist)** — use only when the visible result is still wrong
22
+ >
23
+ > **You are here:** step 3.
24
+ > **Previous recommended pages:** [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions) and [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map).
25
+
26
+ ## Why this page exists
27
+
28
+ The current mixed-chain family already gives you three useful views:
29
+
30
+ - the conceptual chain
31
+ - the file-order source-reading path
32
+ - the symptom-first debug checklist
33
+
34
+ What it did not yet isolate directly was a **proof-oriented verification workflow**.
35
+
36
+ This page fills that gap.
37
+
38
+ It is not another diagnosis page. It is a playbook for proving one Student row-action chain is correct after a change.
39
+
40
+ ## Fastest mental model for verification
41
+
42
+ A mixed Student row-action change is usually correct only when all of these are true:
43
+
44
+ 1. backend metadata truth still points to the intended action resources
45
+ 2. if custom semantics changed, the generated frontend contract surface is refreshed correctly
46
+ 3. the frontend action resources still align with the intended identities and behavior
47
+ 4. the page/runtime handoff still carries the expected row schema and permissions into `ZTable`
48
+ 5. the visible Admin behavior matches the intended contract
49
+
50
+ The fastest verification strategy is:
51
+
52
+ > prove each layer in order, and only classify drift or runtime issues after those proofs already pass.
53
+
54
+ ## Phase 1: Scope the branch first
55
+
56
+ Before checking files, decide what kind of change you actually made.
57
+
58
+ ### Mostly reverse-chain
59
+
60
+ Use this path when:
61
+
62
+ - you changed only which frontend action resource a row or field metadata points to
63
+ - no new backend endpoint or response contract is needed
64
+ - the visible change is mostly metadata-driven
65
+
66
+ Typical examples:
67
+
68
+ - switching a field to `basic-table:actionView`
69
+ - adding or reordering actions under `actionOperationsRow`
70
+ - changing a custom frontend action resource that backend metadata references
71
+
72
+ ### Mostly forward-chain
73
+
74
+ Use this path when:
75
+
76
+ - the action semantics changed because backend endpoint truth changed
77
+ - frontend generated API consumers must regenerate
78
+ - the visible row action is only the last step of a backend-contract change
79
+
80
+ Typical examples:
81
+
82
+ - adding or changing `summary`
83
+ - adding or changing `deleteForce`
84
+
85
+ ### True mixed custom-action case
86
+
87
+ Use this path when both are true:
88
+
89
+ - backend endpoint truth changed
90
+ - backend row metadata also points to custom frontend action resources that expose the result visibly
91
+
92
+ That is the full mixed-chain case this playbook is built for.
93
+
94
+ ## Phase 2: Prove backend source truth
95
+
96
+ Start with the earliest source of truth that should already be correct.
97
+
98
+ Primary anchors:
99
+
100
+ - `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx`
101
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
102
+ - `vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx`
103
+
104
+ What to prove:
105
+
106
+ - row metadata still points to the intended action resources
107
+ - the controller still exposes the intended custom endpoint when one exists
108
+ - the response/request DTO truth still matches the intended action semantics
109
+
110
+ If this phase fails, stop here.
111
+ Do not debug frontend runtime yet.
112
+
113
+ ## Phase 3: Prove the emitted/generated handoff
114
+
115
+ Only do this when the change touches custom action semantics or any backend-owned contract shape.
116
+
117
+ Primary anchors:
118
+
119
+ - `zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts`
120
+ - `zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts`
121
+ - any reverse-shared generated output already relevant to the Student row-action path
122
+
123
+ What to prove:
124
+
125
+ - the frontend module still owns the expected generated OpenAPI slice
126
+ - the generated frontend API surface contains the expected custom method or changed contract
127
+ - if the change is reverse-sharing oriented, the refreshed metadata/build handoff is already correct before debugging downstream consumers
128
+
129
+ If this phase fails, the problem is still in the handoff/generation layer, not in the visible action resource.
130
+
131
+ ## Phase 4: Prove frontend resource alignment
132
+
133
+ Once contract handoff looks correct, prove that the frontend action/resource layer still aligns with it.
134
+
135
+ Primary anchors:
136
+
137
+ - `zova/src/suite/a-training/modules/training-student/src/model/student.ts`
138
+ - `zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx`
139
+ - `zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx`
140
+ - `zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionOperationsRow.tsx`
141
+
142
+ What to prove:
143
+
144
+ - the custom or built-in action bean identity still matches the backend metadata identity
145
+ - thin model facades still delegate to the intended generated API/model path
146
+ - the action bean is still thin and semantic rather than acting like a second competing resource owner
147
+ - `actionOperationsRow` can still include and render the intended child actions
148
+
149
+ ## Phase 5: Prove page/runtime handoff
150
+
151
+ Only now move into the page runtime handoff.
152
+
153
+ Primary anchors:
154
+
155
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx`
156
+ - `zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockTable/controller.tsx`
157
+
158
+ What to prove:
159
+
160
+ - `schemaRow` still contains the intended row-action metadata
161
+ - `permissions` still flow into the page runtime as expected
162
+ - `blockTable` still bridges the expected `schemaRow`, `data`, and `tableScope` into `ZTable`
163
+
164
+ If this phase fails, the issue is no longer contract definition or action resource alignment. It is the list/runtime handoff.
165
+
166
+ ## Phase 6: Prove visible Admin behavior
167
+
168
+ Only after the earlier phases pass should you treat the page as ready for visible behavior checks.
169
+
170
+ What to prove in Admin:
171
+
172
+ - the expected row action is visible where it should be
173
+ - built-in or custom action ordering still matches the metadata truth
174
+ - custom action execution still uses the intended behavior
175
+ - after execution, the list/runtime state still matches the expected refresh/invalidation result
176
+
177
+ This is the point where the row-action chain becomes user-visible rather than just structurally correct.
178
+
179
+ ## Phase 7: Classify drift only after proof steps
180
+
181
+ If the result is still wrong after the earlier phases, then classify the problem.
182
+
183
+ ### Generated-output drift
184
+
185
+ This is the problem when:
186
+
187
+ - backend or reverse-shared source truth changed
188
+ - but the generated/shared handoff is still stale or incomplete
189
+
190
+ ### Local dependency drift
191
+
192
+ This is the problem when:
193
+
194
+ - the generated/shared output already looks correct
195
+ - but local consumers still behave as if the old version is installed
196
+
197
+ ### Visibility-only issue
198
+
199
+ This is the problem when:
200
+
201
+ - the action exists and the contract chain is correct
202
+ - but the action is hidden only by permissions or visibility logic
203
+
204
+ When that is the true problem, continue with [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide).
205
+
206
+ ### Deeper table-runtime resolution issue
207
+
208
+ This is the problem when:
209
+
210
+ - metadata truth, generated handoff, frontend action alignment, and page handoff all already look correct
211
+ - but the final visible action still resolves incorrectly
212
+
213
+ Only then descend into the deeper table runtime docs.
214
+
215
+ ## What this page does not re-explain
216
+
217
+ This page deliberately does **not** re-teach:
218
+
219
+ - generic contract-loop direction and drift theory -> see [Contract Loop Playbook](/fullstack/contract-loop-playbook)
220
+ - the conceptual mixed-chain story -> see [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
221
+ - the file-order mixed-chain path -> see [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map)
222
+ - the symptom-first diagnosis path -> see [Backend Metadata to Frontend Table Actions Debug Checklist](/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist)
223
+ - deep visibility/permission semantics -> see [Table Action Visibility and Permission Flow Guide](/frontend/table-action-visibility-permission-flow-guide)
224
+ - deep table-runtime internals -> see [Zova Table Source Reading Map](/frontend/zova-table-source-reading-map)
225
+
226
+ Its job is only to tell you what must be true at each layer before you trust the changed Student row-action chain.
227
+
228
+ ## Where to read next
229
+
230
+ - If you need the conceptual mixed-chain page, return to [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions).
231
+ - If you need the file-order path, continue with [Backend Metadata to Frontend Table Actions Source Reading Map](/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map).
232
+ - If the visible result is still wrong and you want symptom-first diagnosis, continue with [Backend Metadata to Frontend Table Actions Debug Checklist](/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist).
233
+ - If the issue is really about direction/drift theory, return to [Contract Loop Playbook](/fullstack/contract-loop-playbook).
234
+ - If the bridge and mixed-chain proof already look correct and you now want the consumer-side verification family, continue with [Generated Contract Consumption Verify Playbook](/frontend/generated-contract-consumption-verify-playbook) and [Generated Contract Consumption Debug Checklist](/frontend/generated-contract-consumption-debug-checklist).
235
+
236
+ ## Final takeaway
237
+
238
+ The cleanest way to verify a changed Student row-action chain is not to jump straight into deep runtime debugging.
239
+
240
+ First prove:
241
+
242
+ - backend source truth
243
+ - generated/shared handoff
244
+ - frontend action/resource alignment
245
+ - page/runtime handoff
246
+ - visible Admin behavior
247
+
248
+ Only then classify drift or descend into deeper runtime issues.