cabloy 5.1.161 → 5.1.162

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 (52) hide show
  1. package/.cabloy-version +1 -1
  2. package/CHANGELOG.md +13 -0
  3. package/CLAUDE.md +1 -1
  4. package/CONTRIBUTING.md +1 -1
  5. package/README.md +34 -58
  6. package/package.json +1 -1
  7. package/repo-docs/.vitepress/config.mjs +58 -32
  8. package/repo-docs/ai/ai-spec-driven-development.md +99 -0
  9. package/repo-docs/ai/docs-skills-rules-mapping.md +25 -8
  10. package/repo-docs/ai/edition-consistency-checklist.md +2 -3
  11. package/repo-docs/ai/introduction.md +7 -4
  12. package/repo-docs/ai/playbook-spec-execution.md +19 -5
  13. package/repo-docs/ai/playbook-spec-generation.md +69 -101
  14. package/repo-docs/ai/repo-guidance.md +1 -1
  15. package/repo-docs/ai/skills.md +31 -10
  16. package/repo-docs/backend/dto-guide.md +1 -0
  17. package/repo-docs/backend/openapi-guide.md +1 -1
  18. package/repo-docs/editions/overview.md +51 -120
  19. package/repo-docs/frontend/environment-config-guide.md +1 -1
  20. package/repo-docs/frontend/form-layout-guide.md +4 -2
  21. package/repo-docs/frontend/introduction.md +2 -1
  22. package/repo-docs/frontend/quickstart.md +2 -8
  23. package/repo-docs/frontend/scripts.md +7 -3
  24. package/repo-docs/frontend/ssr-architecture-overview.md +1 -1
  25. package/repo-docs/frontend/ssr-build-deploy-guide.md +4 -2
  26. package/repo-docs/fullstack/comparison-with-other-frameworks.md +6 -2
  27. package/repo-docs/fullstack/contract-loop-playbook.md +4 -0
  28. package/repo-docs/fullstack/introduction.md +13 -4
  29. package/repo-docs/fullstack/parallel-worktree-environment.md +2 -0
  30. package/repo-docs/fullstack/quickstart.md +65 -74
  31. package/repo-docs/fullstack/semantic-presentation-contract.md +121 -0
  32. package/repo-docs/fullstack/ssr-site-and-flavor-setup.md +2 -2
  33. package/repo-docs/index.md +16 -11
  34. package/repo-docs/reference/glossary.md +30 -0
  35. package/repo-docs/reference/package-map.md +1 -1
  36. package/repo-docs/reference/repo-scripts.md +6 -4
  37. package/vona/pnpm-lock.yaml +10 -96
  38. package/zova/pnpm-lock.yaml +8 -0
  39. package/zova/src/suite/a-home/modules/home-base/src/.metadata/component/siteEntryTables.ts +12 -0
  40. package/zova/src/suite/a-home/modules/home-base/src/.metadata/index.ts +13 -0
  41. package/zova/src/suite/a-home/modules/home-base/src/component/siteEntryTables/controller.tsx +71 -0
  42. package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +8 -0
  43. package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +8 -0
  44. package/zova/src/suite/a-home/modules/home-indexadmin/package.json +3 -0
  45. package/zova/src/suite/a-home/modules/home-indexadmin/src/page/dashboard/controller.tsx +6 -13
  46. package/zova/src/suite/a-home/modules/home-indexweb/package.json +3 -1
  47. package/zova/src/suite/a-home/modules/home-indexweb/src/page/home/controller.tsx +6 -14
  48. package/repo-docs/ai/edition-detection.md +0 -30
  49. package/repo-docs/editions/cabloy-basic.md +0 -26
  50. package/repo-docs/editions/cabloy-start.md +0 -53
  51. package/repo-docs/editions/choosing-between-basic-and-start.md +0 -83
  52. package/repo-docs/editions/detection.md +0 -31
@@ -33,11 +33,7 @@ That matters because edition choice affects:
33
33
  - project assets and examples
34
34
  - which examples in the docs match the current repo directly
35
35
 
36
- Read together with:
37
-
38
- - [Edition Detection](/editions/detection)
39
- - [Cabloy Basic](/editions/cabloy-basic)
40
- - [Cabloy Start](/editions/cabloy-start)
36
+ Read together with [Cabloy Editions](/editions/overview#working-in-an-existing-checkout).
41
37
 
42
38
  ## Step 2: start from root scripts
43
39
 
@@ -203,9 +199,7 @@ Read next:
203
199
 
204
200
  ### I need edition-sensitive guidance
205
201
 
206
- - [Edition Detection](/editions/detection)
207
- - [Cabloy Basic](/editions/cabloy-basic)
208
- - [Cabloy Start](/editions/cabloy-start)
202
+ - [Cabloy Editions](/editions/overview#working-in-an-existing-checkout)
209
203
  - [Frontend Scripts](/frontend/scripts)
210
204
 
211
205
  ### I want the broader frontend architecture story
@@ -16,7 +16,7 @@ A practical rule is:
16
16
  2. then choose the correct script, flavor, and appMode path
17
17
  3. only then document or automate edition-specific frontend examples
18
18
 
19
- For the edition-detection workflow, also see [Edition Detection](/editions/detection).
19
+ For the edition-detection workflow, see [Cabloy Editions: For AI Development](/editions/overview#for-ai-development).
20
20
 
21
21
  ## Cabloy Basic root wrappers
22
22
 
@@ -45,9 +45,13 @@ npm run build:zova:commerce:admin
45
45
 
46
46
  `npm run build:zova:all` sequentially runs the focused Basic and Commerce batch builds. `npm run init` uses it to prepare every shipped Cabloy Basic SSR/REST flavor before Vona is initialized. For normal frontend work, continue to use `build:zova` or `build:zova:commerce` when only that suite's artifacts changed.
47
47
 
48
- ## Basic SSR browser acceptance
48
+ ## Zova standalone SSR development
49
49
 
50
- The default Basic Web and Admin sites have browser smoke commands that exercise Vona SSR dispatch at port `7102`, not a standalone Zova development-server port.
50
+ The `dev:zova:*` commands start the Zova development server, which uses `9000` in the Cabloy Basic default environment. Use this Zova standalone SSR entry for page, route, and hydration iteration. It may be used as Vona's development proxy target, but direct access to `9000` does not prove the Vona request boundary or integrated acceptance.
51
+
52
+ ## Vona integrated SSR browser acceptance
53
+
54
+ The default Basic Web and Admin sites have browser smoke commands that exercise Vona integrated SSR through Vona SSR dispatch at port `7102`, not through the Zova standalone SSR development-server port.
51
55
 
52
56
  Prepare current SSR and REST artifacts explicitly when frontend output has changed:
53
57
 
@@ -200,7 +200,7 @@ Use this order when you need the shortest path from mental model to implementati
200
200
  3. [SSR Init Data](/frontend/ssr-init-data)
201
201
  4. [SSR ClientOnly](/frontend/ssr-client-only)
202
202
  5. [SSR SEO Meta](/frontend/ssr-seo-meta)
203
- 6. [SSR Env](/frontend/ssr-env)
203
+ 6. [SSR Environment Variables](/frontend/ssr-env)
204
204
  7. [Fullstack Vona + Zova Integration](/fullstack/vona-zova-integration)
205
205
 
206
206
  ## Implementation checks for architecture-sensitive SSR changes
@@ -77,7 +77,7 @@ npm run build
77
77
 
78
78
  Practical interpretation:
79
79
 
80
- - `dev:zova:*` is for normal frontend SSR development entry
80
+ - `dev:zova:*` starts the Zova standalone SSR development entry (the default `9000` listener)
81
81
  - `build:zova` builds frontend SSR output in batch mode
82
82
  - `build:zova:admin` and `build:zova:web` are explicit root-wrapper paths for flavor-specific SSR output plus related REST generation
83
83
  - `build` is the fullstack alignment path when frontend and backend output should move together
@@ -117,13 +117,15 @@ or:
117
117
  npm run dev:zova:web
118
118
  ```
119
119
 
120
- Use this when the task is:
120
+ Use this Zova standalone SSR entry when the task is:
121
121
 
122
122
  - page development
123
123
  - route debugging
124
124
  - SSR UI iteration
125
125
  - hydration behavior review
126
126
 
127
+ When the task requires the Vona HTTP boundary, built artifact handoff, or acceptance evidence, verify through Vona integrated SSR on the effective Vona server port (the Cabloy Basic default is `7102`), rather than directly through the Zova development server.
128
+
127
129
  If you need deeper script control or need to verify the exact Zova flavor path, inspect the flavor-specific scripts described in [Frontend Scripts](/frontend/scripts).
128
130
 
129
131
  ## Build workflow
@@ -1,6 +1,6 @@
1
1
  # Comparison with Other Frameworks
2
2
 
3
- This page shows how **Cabloy** differs from several common framework choices, focusing on its one fullstack system for AI vibe coding: bidirectional type sync, CLI-first workflows, and source-grounded docs and skills. It also distinguishes strengths of the fullstack system from those of the backend layer provided by **Vona**.
3
+ This page shows how **Cabloy** differs from several common framework choices, focusing on its one fullstack system for AI vibe coding: bidirectional type sync, CLI-first workflows, source-grounded docs and skills, and AI Spec-Driven Development. It also distinguishes strengths of the fullstack system from those of the backend layer provided by **Vona**.
4
4
 
5
5
  ## What is being compared
6
6
 
@@ -15,6 +15,7 @@ For the broader Cabloy model, start with these pages:
15
15
  - [Vona + Zova Integration](/fullstack/vona-zova-integration)
16
16
  - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
17
17
  - [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
18
+ - [AI Spec-Driven Development](/ai/ai-spec-driven-development)
18
19
 
19
20
  ## Comparison lens
20
21
 
@@ -25,6 +26,7 @@ The sections below use the same comparison lens each time:
25
26
  - **Frontend and admin model** — how the UI side is expected to evolve
26
27
  - **Cross-stack workflow** — how bidirectional type sync, contracts, and generation workflows stay aligned
27
28
  - **Guidance and automation** — how CLI-first workflows, docs, and skills make repository conventions reusable
29
+ - **Traceable delivery** — how a repository can connect requirements, contracts, bounded work, acceptance procedures, and evidence
28
30
  - **Best fit** — the kind of team or project the framework fits most naturally
29
31
 
30
32
  ## Cabloy vs Next.js
@@ -35,7 +37,7 @@ The sections below use the same comparison lens each time:
35
37
  | Backend model | Dedicated backend framework with its own runtime, contracts, infrastructure, and CLI workflows | Backend capabilities are typically centered around the web app runtime |
36
38
  | Frontend and admin model | Shared conventions across SSR, SPA, Web, and Admin applications | Strong fit for React-based web application delivery |
37
39
  | Cross-stack workflow | Bidirectional type sync through OpenAPI, SDK generation, and metadata feedback loops | Usually chosen per project or ecosystem tooling |
38
- | Guidance and automation | CLI-first workflows plus source-grounded docs and skills | Usually chosen per project or ecosystem tooling |
40
+ | Guidance and automation | CLI-first workflows, source-grounded docs and skills, and Traceable Spec Delivery | Usually chosen per project or ecosystem tooling |
39
41
  | Best fit | Teams that want a coordinated fullstack system with a stronger dedicated backend layer | Teams that want a React-centered fullstack web application path |
40
42
 
41
43
  Cabloy and Next.js both target fullstack application development, but they organize the stack differently.
@@ -48,6 +50,7 @@ Representative Cabloy strengths in this comparison include:
48
50
  - bidirectional type sync through backend OpenAPI output, frontend SDK generation, and frontend metadata feedback loops
49
51
  - CLI-first workflows for scaffolding, generation, refactors, and verification
50
52
  - source-grounded docs and skills that make repository conventions reusable for people and AI agents
53
+ - AI Spec-Driven Development: a repository-native Traceable Spec Delivery model that connects requirements, contracts, bounded work, acceptance procedures, and observed evidence
51
54
  - shared delivery conventions for SSR, SPA, Web, and Admin applications
52
55
 
53
56
  If your main goal is a React-centered fullstack web app, Next.js may feel more direct. If your main goal is a **coordinated fullstack framework system** with a stronger backend layer and explicit cross-stack workflows, Cabloy is the better fit.
@@ -117,6 +120,7 @@ These comparisons are most useful when your decision depends on questions like:
117
120
  - do you want one coordinated framework system instead of stitching backend and frontend frameworks together?
118
121
  - do you need bidirectional type sync through an explicit contract loop?
119
122
  - do you want CLI-first workflows, source-grounded docs, and skills that make repository conventions reusable?
123
+ - do you want a disciplined, evidence-aware specification-delivery model in the repository?
120
124
  - do you need a stronger dedicated backend layer inside a fullstack architecture?
121
125
  - do you need shared conventions across SSR, SPA, Web, and Admin delivery modes?
122
126
  - do you want Django-Admin-like rapid admin development inside the Node.js ecosystem, but with a more modern frontend and interaction model?
@@ -2,6 +2,8 @@
2
2
 
3
3
  This page is the canonical playbook for Cabloy’s bidirectional fullstack contract loop.
4
4
 
5
+ [AI Spec-Driven Development](/ai/ai-spec-driven-development) defines what an approved increment should build and how it is proven. Contract Loop is its complementary synchronization mechanism: it aligns Vona↔Zova contract sources, generated handoffs, and consumers, but does not create suite authority or establish ATP evidence.
6
+
5
7
  Use it when you need to decide:
6
8
 
7
9
  - where source truth lives for a change
@@ -361,6 +363,8 @@ Use the tutorial series as examples of the two chains:
361
363
  ## Related docs
362
364
 
363
365
  - [Fullstack Introduction](/fullstack/introduction)
366
+ - [AI Spec-Driven Development](/ai/ai-spec-driven-development)
367
+ - [Semantic Presentation Contract](/fullstack/semantic-presentation-contract)
364
368
  - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
365
369
  - [Existing Resource Field Update](/backend/resource-field-update)
366
370
  - [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
@@ -1,8 +1,8 @@
1
1
  # Fullstack Introduction
2
2
 
3
- Cabloy is a Node.js fullstack framework for AI vibe coding.
3
+ Cabloy is a Node.js fullstack framework for AI vibe coding, with AI Spec-Driven Development for traceable, evidence-backed delivery.
4
4
 
5
- **One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows, docs, and skills.**
5
+ **One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows, docs, skills, and traceable delivery from product intent to verifiable evidence.**
6
6
 
7
7
  Instead of stitching separate backend and frontend stacks together, Cabloy keeps their contracts, tooling, and guidance connected in one repository. Vona, Zova, and suite-based modules are the aligned architecture behind that workflow.
8
8
 
@@ -12,6 +12,7 @@ Instead of stitching separate backend and frontend stacks together, Cabloy keeps
12
12
  - **Bidirectional type sync** — use the contract loop to keep backend contracts and frontend metadata aligned in both directions
13
13
  - **CLI-first workflows** — use explicit commands for scaffolding, generation, refactors, and verification
14
14
  - **Docs and skills** — give people and AI agents reusable, source-grounded guidance for the current repository
15
+ - **AI Spec-Driven Development** — use Traceable Spec Delivery to connect product intent, contracts, bounded work, acceptance procedures, and verifiable evidence
15
16
  - **Vona + Zova** — use aligned backend and frontend layers for code sharing and cross-stack consistency
16
17
  - **Modular delivery** — organize capabilities as suites and modules, then deliver SSR, SPA, Web, and Admin applications with shared conventions
17
18
 
@@ -45,6 +46,7 @@ Use this path when the task is about how backend and frontend stay aligned insid
45
46
  - [Framework Performance](/fullstack/framework-performance)
46
47
  - [Vona + Zova Integration](/fullstack/vona-zova-integration)
47
48
  - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
49
+ - [Semantic Presentation Contract](/fullstack/semantic-presentation-contract)
48
50
  - [Admin Resource and Web Self-Service](/fullstack/admin-resource-and-web-self-service)
49
51
  - [Backend Metadata to Frontend Table Actions](/fullstack/backend-metadata-to-frontend-table-actions)
50
52
  - [Fullstack Image Workflow](/fullstack/image-workflow)
@@ -56,8 +58,7 @@ Use this path when the task is about how backend and frontend stay aligned insid
56
58
  Use this path when the task depends on edition boundaries, UI assumptions, or cross-repo delivery differences:
57
59
 
58
60
  - [Edition Collaboration Differences](/fullstack/edition-collaboration-differences)
59
- - [Editions Overview](/editions/overview)
60
- - [Choosing Basic vs Start](/editions/choosing-between-basic-and-start)
61
+ - [Cabloy Editions](/editions/overview#choosing-an-edition)
61
62
 
62
63
  ## Shared architecture
63
64
 
@@ -71,6 +72,14 @@ Cabloy Basic and Cabloy Start are related, complete edition baselines built on t
71
72
 
72
73
  This combination keeps backend and frontend development close enough for code sharing, workflow reuse, and AI vibe coding workflows.
73
74
 
75
+ ## Traceable delivery and contract synchronization
76
+
77
+ [AI Spec-Driven Development](/ai/ai-spec-driven-development) governs how confirmed product intent becomes contracts, bounded WBS work, acceptance procedures, and evidence-backed status. Its precise engineering method is Traceable Spec Delivery.
78
+
79
+ The [Contract Loop](/fullstack/contract-loop-playbook) is complementary rather than interchangeable: it synchronizes Vona↔Zova contract sources, generated handoffs, and consumers when an approved increment crosses the fullstack contract boundary. A completed synchronization does not establish product authority or close ATP evidence.
80
+
81
+ When an approved scene needs schema-driven presentation, use the [Semantic Presentation Contract](/fullstack/semantic-presentation-contract) to translate audience, task, scene, and DTO boundaries into renderer decisions without changing security or ownership authority.
82
+
74
83
  ## Cabloy fullstack framework principles
75
84
 
76
85
  Cabloy’s fullstack model can be understood through two core principles.
@@ -30,6 +30,8 @@ The recommendation uses only Git worktree metadata and the fixed defaults below.
30
30
  | `DEV_SERVER_PORT` | `9000` | `9000 + linked-worktree ordinal` |
31
31
  | `DEV_SERVER_HMR_PORT` | `24679` | `24679 + linked-worktree ordinal` |
32
32
 
33
+ These listeners have different responsibilities: `SERVER_LISTEN_PORT` is the Vona server and Vona integrated SSR entry, `DEV_SERVER_PORT` is the Zova standalone SSR development server, and `DEV_SERVER_HMR_PORT` is its HMR listener. `API_BASE_URL` must point to the Vona port, not the Zova development port.
34
+
33
35
  `APP_NAME` is the current linked worktree directory name. `API_BASE_URL` is regenerated as `http://localhost:<SERVER_LISTEN_PORT>`.
34
36
 
35
37
  Every valid explicit setup proposes the same complete tuple and both local files:
@@ -26,6 +26,16 @@ npm create cabloy
26
26
 
27
27
  The generated project already includes `CLAUDE.md` and the `.claude/` workspace assets. This path creates a Cabloy Basic project baseline. Open this project in Claude Code and start coding immediately with project-specific guidance.
28
28
 
29
+ `npm create cabloy` automatically runs `npm run init` after creating the project. If you later need to reinstall the project's frontend and backend dependencies, you can run `npm run init` directly.
30
+
31
+ ### Cabloy Start
32
+
33
+ Cabloy Start is the public MIT-licensed edition maintained in its own repository. Instead of `npm create cabloy`, clone its public repository directly and run `npm run init`. Then use the frontend commands provided by that edition. Do not assume the Cabloy Basic flavor names apply to Cabloy Start.
34
+
35
+ For the Start onboarding distinction, read [Cabloy Editions: Cabloy Start](/editions/overview#cabloy-start).
36
+
37
+ If you are not sure which edition you are using or which one to choose, read [Cabloy Editions](/editions/overview).
38
+
29
39
  ### pnpm 11 supply-chain protection note
30
40
 
31
41
  `pnpm` 11 enables the `minimumReleaseAge` supply-chain protection by default. Newly published packages may be blocked for a short time window before `pnpm` allows installation.
@@ -51,40 +61,55 @@ set pnpm_config_minimum_release_age=0 && npm create cabloy
51
61
  pnpm_config_minimum_release_age=0 npm create cabloy
52
62
  ```
53
63
 
54
- If you already created the project directory and only need to rerun initialization, use the same environment variable with `npm run init`.
64
+ ## 3. Start Vona integrated SSR
55
65
 
56
- ## 3. Start the backend
66
+ Run the root CLI command to start the Vona server:
57
67
 
58
68
  ```bash
59
69
  npm run dev
60
70
  ```
61
71
 
62
- - Web: http://localhost:7102/
63
- - Admin: http://localhost:7102/admin/
72
+ In the Cabloy Basic default environment, Vona listens on `7102` and serves the following SSR sites:
73
+
74
+ | SSR Site | URL |
75
+ | -------------- | ------------------------------------- |
76
+ | Web | http://localhost:7102/ |
77
+ | Admin | http://localhost:7102/admin/ |
78
+ | Commerce-Web | http://localhost:7102/commerce/ |
79
+ | Commerce-Admin | http://localhost:7102/commerce-admin/ |
64
80
 
65
- ## 4. Start the frontend for your edition
81
+ ## 4. Start Zova standalone SSR
66
82
 
67
- ### Cabloy Basic
83
+ Run one of the root CLI commands below to start the Zova development server. Zova standalone SSR is typically used for frontend development, hot reload, and isolated debugging:
68
84
 
69
85
  ```bash
70
- npm run dev:zova:admin # http://localhost:9000/admin/
71
- npm run dev:zova:web # http://localhost:9000/
86
+ npm run dev:zova:web # http://localhost:9000/
87
+ npm run dev:zova:admin # http://localhost:9000/admin/
88
+ npm run dev:zova:commerce:web # http://localhost:9000/commerce/
89
+ npm run dev:zova:commerce:admin # http://localhost:9000/commerce-admin/
72
90
  ```
73
91
 
74
- ### Cabloy Start
92
+ In the Cabloy Basic default environment, the Zova development server listens on `9000`:
75
93
 
76
- Cabloy Start is the public MIT-licensed edition maintained in its own repository. Instead of `npm create cabloy`, clone its public repository directly and run `npm run init`. Then use the frontend commands provided by that edition. Do not assume the Cabloy Basic flavor names apply to Cabloy Start.
94
+ | SSR Site | URL |
95
+ | -------------- | ------------------------------------- |
96
+ | Web | http://localhost:9000/ |
97
+ | Admin | http://localhost:9000/admin/ |
98
+ | Commerce-Web | http://localhost:9000/commerce/ |
99
+ | Commerce-Admin | http://localhost:9000/commerce-admin/ |
77
100
 
78
- For the full Start onboarding and initialization flow, read [Cabloy Start](/editions/cabloy-start).
101
+ ## 5. Vona integrated SSR and Zova standalone SSR
79
102
 
80
- If you are not sure which edition you are using or which one to choose, read:
103
+ The two commands start different SSR entry points. Choose the one that matches the task:
81
104
 
82
- - [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start)
83
- - [Edition Detection](/editions/detection)
84
- - [Cabloy Basic](/editions/cabloy-basic)
85
- - [Cabloy Start](/editions/cabloy-start)
105
+ | SSR entry | Default port | Best for | What it validates |
106
+ | ----------------------- | ------------ | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
107
+ | **Vona integrated SSR** | `7102` | Fullstack development, site access, and browser acceptance | Vona API handling, SSR site matching, built artifact handoff, and the integrated HTTP response path |
108
+ | **Zova standalone SSR** | `9000` | Frontend development, hot reload, isolated debugging, and page/route/hydration iteration | Zova SSR rendering and frontend behavior without proving the Vona integration boundary |
86
109
 
87
- ## 5. Run with Docker Compose
110
+ The Zova standalone SSR server can also be used as Vona's development proxy target. However, directly opening `9000` does not replace validation through Vona integrated SSR at `7102`. For acceptance or deployment-oriented checks, build the required SSR/REST artifacts, synchronize them with Vona, and access the site through Vona.
111
+
112
+ ## 6. Run with Docker Compose
88
113
 
89
114
  Both Cabloy Basic and Cabloy Start support the same Docker Compose command flow. Run these commands from the repository for the edition you are using:
90
115
 
@@ -95,81 +120,47 @@ sudo COMPOSE_BAKE=true docker-compose build
95
120
  sudo docker-compose up
96
121
  ```
97
122
 
98
- - Web: http://localhost/
99
- - Admin: http://localhost/admin/
100
-
101
- These commands build the edition-specific frontend flavors from the repository you are using.
102
-
103
- ## 6. Upgrade an existing project
123
+ | SSR Site | Url |
124
+ | -------------- | -------------------------------- |
125
+ | Web | http://localhost/ |
126
+ | Admin | http://localhost/admin/ |
127
+ | Commerce-Web | http://localhost/commerce/ |
128
+ | Commerce-Admin | http://localhost/commerce-admin/ |
104
129
 
105
- Inspect the planned framework changes before applying them:
130
+ ## 7. Upgrade an existing project
106
131
 
107
132
  ```bash
108
- npm run upgrade:dry-run
109
133
  npm run upgrade
110
134
  ```
111
135
 
112
- In Cabloy Basic, upgrade synchronizes the framework-owned SSR browser E2E baseline, the two root E2E scripts, and the `@playwright/test` development dependency. The framework owns these paths:
136
+ ## 8. Next step: follow the quick start tutorials
113
137
 
114
- ```text
115
- repo-e2e/config/
116
- repo-e2e/scripts/
117
- repo-e2e/specs/cabloy-basic.spec.ts
118
- repo-e2e/specs/home-user-account.spec.ts
119
- repo-e2e/specs/a-commerce.spec.ts
120
- ```
138
+ If you want a beginner-friendly path that connects modules, CRUD, bidirectional contract sharing, and schema-driven workflows into one story, continue with:
139
+
140
+ - [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
121
141
 
122
- Keep additional project-owned browser specs under other filenames in `repo-e2e/specs`. The current baseline is a fresh-project contract; unsupported legacy layouts are not repaired by the upgrader.
142
+ ## 9. AI Spec-Driven Development
123
143
 
124
- ### Cabloy Start repository baseline
144
+ After the project is running, use **AI Spec-Driven Development** when AI-assisted work must move from confirmed product intent to traceable, evidence-backed delivery.
125
145
 
126
- Cabloy Start is cloned from its separate public repository rather than created through `npm create cabloy`. Its E2E baseline is maintained in that repository:
146
+ Cabloy implements this approach through **Traceable Spec Delivery**:
127
147
 
128
148
  ```text
129
- repo-e2e/config/
130
- repo-e2e/scripts/
131
- repo-e2e/specs/
149
+ PRD → SRS → WBS → ATP → Evidence
132
150
  ```
133
151
 
134
- The public Cabloy upgrade flow does not synchronize or repair those Start-owned E2E files, its root E2E scripts, or `@playwright/test`. Keep project-owned browser scenarios in the flat `repo-e2e/specs/` directory under distinct filenames, for example `repo-e2e/specs/my-project.spec.ts`.
152
+ For suite-level work, describe the business capability you want to plan in Claude Code:
135
153
 
136
- Prepare and run the managed Start baseline locally with:
137
-
138
- ```bash
139
- npm run build:zova
140
- npm run deps:vona
141
- npm run test:e2e
154
+ ```text
155
+ /cabloy-spec-generation <business description>
142
156
  ```
143
157
 
144
- The managed command checks the effective local server port and owns the local reset and Vona worker lifecycle. For a separately managed target, set `E2E_BASE_URL` and use `npm run test:e2e:fast`; this mode does not reset, build, start, or stop the target. Select surfaces with `--tag @web` or `--tag @admin`, and exact scenarios with native `--grep` arguments. Install Chromium once when needed with `npx playwright install chromium`. See [Repo Scripts](/reference/repo-scripts#ssr-browser-checks) for the complete command variants.
145
-
146
- ## 7. Next steps for framework-aware development
147
-
148
- If you are contributing to framework-aware workflows or using Cabloy CLI generation directly, prefer CLI-backed generation over manual scaffolding.
158
+ Once a bounded WBS increment is approved, execute it with:
149
159
 
150
- Read [Fullstack CLI](/fullstack/cli) for the shared cross-stack workflow model, then start with:
151
-
152
- ```bash
153
- npm run vona :create
154
- npm run zova :create
160
+ ```text
161
+ /cabloy-spec-execution <WBS-ID>
155
162
  ```
156
163
 
157
- Then narrow into the specific command family you need.
158
-
159
- ## 8. Next step: follow the quick start tutorials
160
-
161
- If you want a beginner-friendly path that connects modules, CRUD, bidirectional contract sharing, and schema-driven workflows into one story, continue with:
162
-
163
- - [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
164
-
165
- ## 9. Shared verification commands for deeper workflow checks
166
-
167
- If you are validating framework-aware changes or a broader workflow, use the shared project scripts before declaring a workflow correct:
168
-
169
- ```bash
170
- npm run tsc
171
- npm run test
172
- npm run build
173
- ```
164
+ These Skills guide planning, specialist implementation, verification, evidence, and progress handoff; they do not replace the suite records that own product, technical, delivery, acceptance, and evidence authority.
174
165
 
175
- Choose more targeted checks when only one area is affected, but treat these scripts as the shared reference surface.
166
+ Start with [AI Spec-Driven Development](/ai/ai-spec-driven-development), then continue with [Generate a Cabloy Suite Specification](/ai/playbook-spec-generation) and [Execute an Approved Cabloy Specification Increment](/ai/playbook-spec-execution).
@@ -0,0 +1,121 @@
1
+ # Semantic Presentation Contract
2
+
3
+ <Badge type="tip" text="Common" />
4
+
5
+ A **semantic presentation contract** defines what an audience needs to accomplish in a scene before a project chooses visual structure or a renderer. It connects confirmed product intent and operation-specific contracts to runtime presentation without making presentation metadata authoritative.
6
+
7
+ The semantic model applies across Cabloy editions. UI libraries, renderer identities, supported layout grammar, flavor commands, and generated-output paths remain edition-specific facts that must be verified in the active repository.
8
+
9
+ ## What this contract solves
10
+
11
+ Use a semantic presentation contract to avoid:
12
+
13
+ - treating layout syntax or a renderer choice as product or API authority
14
+ - forcing Create, Update, View, list, and filter work through one universal DTO or visual tree
15
+ - duplicating DTO and schema truth in frontend-local field definitions
16
+ - treating visual hiding, route admission, or action visibility as authorization or privacy
17
+ - collapsing distinct audiences, API projections, state owners, or pages into groups or tabs
18
+
19
+ ## Start with scene meaning, not a renderer
20
+
21
+ Design the scene in this order:
22
+
23
+ ```text
24
+ audience → task → scene → meaningful business information areas
25
+ → operation-specific DTO boundary → presentation translation → renderer choice
26
+ ```
27
+
28
+ - **Audience** is whose work and authority context the scene serves.
29
+ - **Task** is whether that audience is finding, comparing, supplying permitted input, reviewing, or acting.
30
+ - **Scene** is the operation-specific list/filter, Create, Update, View, or purpose-built page context.
31
+ - **Information areas** organize facts by business meaning, such as identity, lifecycle, amount, availability, time, relationships, or immutable snapshots.
32
+ - **Presentation translation** applies order, in-scene visibility, grouping, local placement, and renderer choice to an already authorized contract.
33
+
34
+ Lists support finding and comparison. Create and Update scenes expose only permitted input. View scenes expose complete, audience-appropriate facts. List/filter and entry presentation are independently designed rather than being smaller or larger versions of one another.
35
+
36
+ ## Keep authority at the right layer
37
+
38
+ | Layer | Owns | May define | Must not redefine |
39
+ | -------------------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
40
+ | Product requirements | Business outcome | Audience, task, and meaningful information areas | DTO syntax or component structure |
41
+ | System requirements and operation DTOs | Scene contract | API membership; editable, readonly, derived, hidden, and snapshot boundaries; ownership constraints | Product scope |
42
+ | DTO render metadata | Presentation translation | Order, groups, sections, tabs, supported placement, visible presentation, and renderer identity | API authority, persistence, validation, authorization, state/page ownership, or SSR privacy |
43
+ | Renderer/runtime implementation | Runtime presentation | UI-library-specific markup, input conversion, and interaction | Business and security boundaries |
44
+
45
+ Suites that use PRD and SRS records should preserve that upstream authority chain. Metadata translates a confirmed contract; it does not create one.
46
+
47
+ ## Design each scene as an explicit contract
48
+
49
+ Before authoring presentation metadata, make the scene answer these questions:
50
+
51
+ | Record | Questions to answer |
52
+ | --------------------------- | ----------------------------------------------------------------------------------------------------- |
53
+ | Audience and task | Who is doing what, and under which authority? |
54
+ | Scene | Is this list/filter, Create, Update, View, or a purpose-built experience? |
55
+ | Information areas | Which business facts are needed, and in what input or reading order? |
56
+ | Operation DTO boundary | Which facts are editable, readonly, derived, hidden, live, or immutable snapshots? |
57
+ | Presentation strategy | Is default rendering sufficient, is a shared renderer appropriate, or is a custom renderer justified? |
58
+ | Non-presentation boundaries | Which API, authorization, model/page ownership, scope, and SSR constraints remain unchanged? |
59
+ | Evidence | Which emitted-contract and focused runtime or browser proof demonstrates the translation? |
60
+
61
+ Different tasks can justify different DTO membership and layouts. Absence from an operation DTO is stronger and clearer than visual hiding. A separate audience, API contract, model owner, or page remains separate even when some business facts overlap.
62
+
63
+ ## Translate an eligible scene contract into presentation
64
+
65
+ Vona DTO render metadata is the normal translation surface for Cabloy's schema-driven paths. It can express order, semantic groups, sections or tabs where supported, placement, presentation visibility within the resolved scene, and renderer identity or options.
66
+
67
+ It cannot add request or response membership, relax validation, change persistence, authorize browser input, or create server authority. Consume the operation-specific DTO rather than copying fields into a frontend-local schema. If a presentation needs a label or summary relation, make an explicit response-projection decision; presentation convenience does not justify broadening a mutation DTO or API.
68
+
69
+ Cabloy Basic's concrete `formLayout` grammar, block names, and DaisyUI/Tailwind implementation are details of that edition, not cross-edition guarantees. Cabloy Start readers should inspect the active Start repository before relying on a Basic renderer, UI resource, supported layout behavior, or command.
70
+
71
+ ## Preserve boundaries that presentation cannot own
72
+
73
+ Presentation does not authorize.
74
+
75
+ - **API membership:** only operation DTOs and endpoint contracts decide what enters or leaves an operation.
76
+ - **Persistence and validation:** metadata cannot add fields, alter stored meaning, or bypass server validation.
77
+ - **Authorization and scope:** action visibility, menus, route admission, and visual hiding are not server authorization, tenant isolation, or owner filtering.
78
+ - **Audience/API separation:** Admin operational projections and Web self-service projections remain distinct when authority, scope, or experience differs.
79
+ - **Model and page ownership:** a visual group cannot merge separate state owners or page architectures.
80
+ - **SSR privacy:** render metadata and hydration flags do not decide whether private data may appear in server HTML.
81
+
82
+ For the related architecture boundaries, read [Admin Resource and Web Self-Service](/fullstack/admin-resource-and-web-self-service), [Navigation Guards Guide](/frontend/navigation-guards-guide), and [SSR Review Checklist](/frontend/ssr-review-checklist).
83
+
84
+ ## Choose the renderer after the meaning is clear
85
+
86
+ Use this order:
87
+
88
+ 1. Use the default renderer when it preserves the documented business meaning.
89
+ 2. Reuse a shared renderer for recurring semantic needs, such as date/time, localized state labels, monetary values, resource identity, or structured details.
90
+ 3. Introduce a custom renderer only when shared resources cannot accurately express the required meaning or interaction.
91
+
92
+ A Vona DTO or render-metadata change normally follows the [forward chain](/fullstack/contract-loop-playbook#forward-chain). A new frontend-owned renderer or resource is a [reverse-chain](/fullstack/contract-loop-playbook#reverse-chain) prerequisite before backend metadata references its identity. A mixed change respects both boundaries: establish the frontend resource handoff first when a new renderer will be referenced, then author and verify the backend translation and regenerate consumers.
93
+
94
+ For operational procedures, use the [Contract Loop Playbook](/fullstack/contract-loop-playbook), [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk), and [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend). [Tutorial 4: Custom Form/Table Renderers for Level](/fullstack/tutorial-4-custom-level-renderers) is a Cabloy Basic implementation specimen.
95
+
96
+ ## Use Form Layout for structural translation
97
+
98
+ A semantic group represents a meaningful business information area. A section solves local Grid or flow placement. Tabs are for genuinely independent business domains or workflows. Field renderer and field-wrapper behavior remain separate from multi-field structure.
99
+
100
+ [Form Layout Guide](/frontend/form-layout-guide) explains Cabloy Basic's structural grammar and runtime behavior. It does not replace DTO membership, validation, action behavior, or authorization. Read [Form Guide](/frontend/form-guide) for field rendering, validation, and manual or mixed forms.
101
+
102
+ ## Review checklist
103
+
104
+ - [ ] Audience, task, scene, and information areas were established before renderer or layout mechanics.
105
+ - [ ] Operation DTO membership establishes editable, readonly, derived, hidden, and snapshot boundaries.
106
+ - [ ] List/filter and entry/detail scenes were considered independently.
107
+ - [ ] Renderer choice preserves business meaning without broadening a DTO or API.
108
+ - [ ] Visual visibility is not being used for authorization, scope, or SSR privacy.
109
+ - [ ] Distinct audience contracts retain their API, state, and page boundaries when required.
110
+ - [ ] New frontend resources complete their reverse contract-loop handoff before backend metadata references them.
111
+ - [ ] Backend-owned contract changes include emitted-contract proof and forward regeneration.
112
+ - [ ] Edition-specific UI, renderer, flavor, and generated-output claims were verified against the active edition.
113
+
114
+ ## Related reading
115
+
116
+ - [AI Spec-Driven Development](/ai/ai-spec-driven-development)
117
+ - [Contract Loop Playbook](/fullstack/contract-loop-playbook)
118
+ - [DTO Guide](/backend/dto-guide)
119
+ - [OpenAPI Guide](/backend/openapi-guide)
120
+ - [Form Layout Guide](/frontend/form-layout-guide)
121
+ - [Edition Consistency Checklist](/ai/edition-consistency-checklist)
@@ -28,7 +28,7 @@ Read the repository marker first:
28
28
  - `__CABLOY_START__` → inspect the active Start repository before naming a flavor, wrapper, generated package, or site module.
29
29
  - both markers → stop: the checkout is ambiguous.
30
30
 
31
- The framework model is shared, but the exact flavor names, site baselines, UI layer, assets, scripts, and generated output paths can differ by edition. See [Edition Detection](/editions/detection) and [Edition Collaboration Differences](/fullstack/edition-collaboration-differences).
31
+ The framework model is shared, but the exact flavor names, site baselines, UI layer, assets, scripts, and generated output paths can differ by edition. See [Cabloy Editions: Working in an Existing Checkout](/editions/overview#working-in-an-existing-checkout) and [Edition Collaboration Differences](/fullstack/edition-collaboration-differences).
32
32
 
33
33
  ### Confirm that a new site is needed
34
34
 
@@ -174,7 +174,7 @@ If the generated artifacts are correct and `npm run deps:vona` completed but Von
174
174
 
175
175
  ## Verify through the Vona boundary
176
176
 
177
- A standalone Zova development server can help with page iteration, but it does not prove copied artifacts, Vona site matching, generated type handoff, or production-like hydration.
177
+ A Zova standalone SSR development server (the default `9000` entry) can help with page iteration, but it does not prove copied artifacts, Vona site matching, generated type handoff, or production-like hydration. An independent SSR Site/flavor remains a separately deployable application boundary; it is not another name for Zova standalone SSR.
178
178
 
179
179
  Run the narrowest meaningful checks first:
180
180