cabloy 5.1.194 → 5.1.196
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.
- package/.cabloy-version +1 -1
- package/.github/workflows/agent-governance.yml +1 -0
- package/CHANGELOG.md +22 -0
- package/README.md +13 -24
- package/package.json +2 -1
- package/repo-agent-governance/managed-assets.json +138 -33
- package/repo-agent-governance/scripts/pack-check.mjs +17 -0
- package/repo-agent-governance/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -0
- package/repo-agent-governance/skills/cabloy-domain-planning/SKILL.md +5 -3
- package/repo-agent-governance/skills/cabloy-spec-execution/SKILL.md +13 -8
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/evals.json +108 -12
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/files/scenarios.json +84 -0
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/protocol.md +9 -0
- package/repo-agent-governance/skills/cabloy-spec-execution/references/execution-protocol.md +21 -5
- package/repo-agent-governance/skills/cabloy-spec-execution/references/status-and-evidence.md +5 -3
- package/repo-agent-governance/skills/cabloy-spec-generation/SKILL.md +78 -168
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/evals.json +165 -17
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/files/scenarios.json +114 -0
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/protocol.md +44 -0
- package/repo-agent-governance/skills/cabloy-spec-generation/references/canonical-spec-input.md +145 -0
- package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-aware-discovery.md +55 -57
- package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-specs-document-set.md +6 -4
- package/repo-agent-governance/skills/cabloy-spec-generation/references/traceability-and-status-rules.md +12 -8
- package/repo-agent-governance/tests/governance.test.mjs +10 -1
- package/repo-agent-governance/tests/spec-audit.test.mjs +255 -0
- package/repo-agent-governance/tools/spec-audit/audit.mjs +427 -0
- package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs +97 -408
- package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.test.mjs +462 -1
- package/repo-agent-governance/tools/spec-charts/spec-parser.mjs +561 -0
- package/repo-docs/.vitepress/config.mjs +54 -29
- package/repo-docs/ai/playbook-spec-execution.md +10 -4
- package/repo-docs/ai/playbook-spec-generation.md +40 -3
- package/repo-docs/ai/skills.md +3 -3
- package/repo-docs/backend/controller-aop-guide.md +10 -0
- package/repo-docs/backend/field-indexes.md +25 -0
- package/repo-docs/blogs/cabloy-fullstack-resource-addressing/index.md +1 -1
- package/repo-docs/fullstack/contract-loop-playbook.md +1 -1
- package/repo-docs/fullstack/development-history.md +24 -0
- package/repo-docs/fullstack/introduction.md +25 -156
- package/repo-docs/fullstack/quickstart.md +1 -1
- package/repo-docs/fullstack/ssr-entry-modes.md +52 -0
- package/repo-docs/fullstack/ssr-site-and-flavor-setup.md +3 -1
- package/repo-docs/fullstack/tutorial-5-backend-contract-sharing.md +13 -7
- package/repo-docs/fullstack/tutorial-6-one-contract-four-uses.md +11 -15
- package/repo-docs/fullstack/tutorials-overview.md +2 -2
- package/repo-docs/index.md +23 -45
- package/repo-docs/public/cabloy.png +0 -0
- package/repo-docs/public/cabloy.svg +3 -0
- package/repo-docs/public/favicon.svg +3 -0
- package/repo-docs/reference/repo-scripts.md +6 -1
- package/repo-e2e/specs/home-user-account.spec.ts +311 -207
- package/scripts/bootstrapAgentGovernance.mjs +1 -0
- package/scripts/upgrade.ts +1 -0
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/cli/templates/tools/crudBasic/snippets/2-meta.index.ts +4 -10
- package/vona/packages-cli/cli-set-api/cli/templates/tools/crudStart/snippets/2-meta.index.ts +4 -10
- package/vona/packages-cli/cli-set-api/package.json +8 -2
- package/vona/packages-cli/cli-set-api/src/index.ts +1 -0
- package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.masterDetail.ts +9 -12
- package/vona/packages-cli/cli-set-api/src/lib/mergeMetaIndex.ts +121 -0
- package/vona/packages-cli/cli-set-api/test/indexSnippets.test.ts +41 -0
- package/vona/packages-cli/cli-set-api/test/mergeMetaIndex.test.ts +78 -0
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/pnpm-lock.yaml +6 -6
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/service/sku.ts +25 -4
- package/vona/src/suite/a-commerce/modules/commerce-catalog/test/skuUniqueness.test.ts +161 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.index.ts +21 -20
- package/vona/src/suite/a-commerce/modules/commerce-payment/test/paymentIndexes.test.ts +165 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/src/bean/meta.index.ts +16 -13
- package/vona/src/suite/a-commerce/modules/commerce-promotion/test/promotionIndexes.test.ts +82 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.index.ts +23 -21
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/tradeIndexes.test.ts +86 -0
- package/vona/src/suite/a-home/modules/home-user/src/.metadata/index.ts +379 -376
- package/vona/src/suite/a-home/modules/home-user/src/controller/passportTest.ts +60 -0
- package/vona/src/suite/a-home/modules/home-user/test/passportTest.test.ts +164 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
- package/vona/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.index.ts +35 -26
- package/vona/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/pay-paypal/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/pay-stripe/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/package.json +5 -5
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/transactionFiber_.ts +6 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/transaction_.ts +4 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormutils/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormutils/src/lib/columns.ts +3 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- /package/repo-docs/{.vitepress/public → public}/CNAME +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Vona Integrated SSR and Zova Standalone SSR
|
|
2
|
+
|
|
3
|
+
Cabloy has two ways to enter the same frontend SSR application during development. The difference is **which server receives the browser request and owns the response**, not whether the page uses SSR. Choose an entry based on the boundary you need to develop or verify.
|
|
4
|
+
|
|
5
|
+
## The two entry modes
|
|
6
|
+
|
|
7
|
+
**Vona integrated SSR** starts at the Vona server. Vona handles the incoming HTTP request, matches an SSR site, and uses the built frontend assets and Zova SSR runtime to render the response. The browser enters through Vona, so this is the path to check site dispatch and the fullstack HTTP boundary.
|
|
8
|
+
|
|
9
|
+
**Zova standalone SSR** starts at the Zova development server. It renders the selected frontend flavor directly for fast page, route, and hydration iteration with hot reload. Backend APIs still belong to Vona; opening the Zova server directly does not exercise Vona's SSR site dispatch or built-artifact handoff.
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
Vona integrated SSR: browser → Vona → SSR site → built Zova SSR output → browser
|
|
13
|
+
Zova standalone SSR: browser → Zova development server → frontend SSR → browser
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
In the Cabloy Basic default environment, `SERVER_LISTEN_PORT=7102` is the Vona entry and `DEV_SERVER_PORT=9000` is the Zova development entry. These are separate listeners, not two ports for the same server. Zova's `API_BASE_URL` points to Vona, not to its own development port. Local environment overrides can change the ports; use the effective values in your checkout.
|
|
17
|
+
|
|
18
|
+
## Start and use them in Cabloy Basic
|
|
19
|
+
|
|
20
|
+
Start the Vona server from the repository root and visit a Vona-served site:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm run dev
|
|
24
|
+
# Web: http://localhost:7102/
|
|
25
|
+
# Admin: http://localhost:7102/admin/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
For frontend iteration, start **one** Zova flavor in another terminal and open its development entry directly:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run dev:zova:web # http://localhost:9000/
|
|
32
|
+
# or
|
|
33
|
+
npm run dev:zova:admin # http://localhost:9000/admin/
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For the other Cabloy Basic site URLs and the quick command comparison, see [Fullstack Quickstart](/fullstack/quickstart#3-start-vona-integrated-ssr). For Cabloy Start, keep the same entry-mode distinction but use the scripts, flavors, sites, and effective ports in the active Start checkout; do not copy Basic-specific flavor names or site paths blindly.
|
|
37
|
+
|
|
38
|
+
## Which entry should you use?
|
|
39
|
+
|
|
40
|
+
| Task | Use | What the result tells you |
|
|
41
|
+
| --------------------------------------------------------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
42
|
+
| Iterate on a page, route, SSR render, or hydration | Zova standalone SSR (`9000` by default) | The selected frontend flavor works through the Zova development entry. |
|
|
43
|
+
| Check Vona site matching, backend-owned routing, or the HTTP response | Vona integrated SSR (`7102` by default) | The request enters through Vona and exercises the integrated HTTP response path. |
|
|
44
|
+
| Verify release output or integrated browser acceptance | Built SSR/REST artifacts, synchronized Vona dependencies, then the Vona entry | The intended built fullstack path is exercised, rather than just the Zova development server. |
|
|
45
|
+
|
|
46
|
+
Direct access to `9000` cannot replace validation at `7102`. Before acceptance or deployment checks, build the required SSR/REST artifacts and synchronize them with Vona. For build and deployment steps, follow [SSR Build and Deploy Guide](/frontend/ssr-build-deploy-guide); for the Basic browser acceptance workflow, see [Frontend Scripts](/frontend/scripts#vona-integrated-ssr-browser-acceptance).
|
|
47
|
+
|
|
48
|
+
## Do not confuse an entry mode with an SSR site
|
|
49
|
+
|
|
50
|
+
“Standalone” here describes **direct access to the Zova development server**. It does not mean an independently deployable SSR application. An **SSR Site/flavor** identifies an application surface that Vona can mount and serve, such as Web or Admin. Adding a new deployable site requires its own aligned flavor, SSR/REST output, and Vona registration; it is not accomplished by starting another standalone development listener. See [Independent SSR Site and Flavor Setup](/fullstack/ssr-site-and-flavor-setup).
|
|
51
|
+
|
|
52
|
+
For the cross-layer request flow, read [SSR Architecture Overview](/frontend/ssr-architecture-overview). For concise definitions, see the [Glossary](/reference/glossary#vona-integrated-ssr).
|
|
@@ -42,7 +42,9 @@ A new site is an ownership decision, not a convenient alias for an existing Admi
|
|
|
42
42
|
|
|
43
43
|
## Define the identity tuple
|
|
44
44
|
|
|
45
|
-
Choose these values before editing source. Keep
|
|
45
|
+
Choose these values before editing source. Classify the tuple as **observed existing**, **proposed new**, or **explicitly approved new**. A new tuple need not already exist: validate framework constraints and collisions against active source, obtain explicit approval of the concrete design and an `Accepted` governing ADR, then create it through a separately approved bounded execution task. Strategy selection or approval to generate planning records alone is insufficient. Keep unchecked values and controlling `TODO(confirm)` gates explicit.
|
|
46
|
+
|
|
47
|
+
Label a new root wrapper as a **planned addition**, not a currently runnable command. Its execution task must create the durable manifest entry and inspect the resulting SSR/REST pair before running it. Keep tuple spelling and ownership consistent:
|
|
46
48
|
|
|
47
49
|
| Identity | Role |
|
|
48
50
|
| ---------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
@@ -47,6 +47,17 @@ Inspect the relevant command surfaces first:
|
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
49
|
npm run zova :openapi
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
After updating the backend controller and DTOs, start Vona in a separate terminal and keep it running so the generator can read the current Swagger output:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm run dev
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Then configure the module's OpenAPI ownership if needed and regenerate its frontend consumers:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
50
61
|
npm run zova :openapi:config demo-student
|
|
51
62
|
npm run zova :openapi:generate demo-student
|
|
52
63
|
```
|
|
@@ -118,12 +129,7 @@ That is the practical forward chain: backend controller and DTO truth flows into
|
|
|
118
129
|
|
|
119
130
|
## Verification
|
|
120
131
|
|
|
121
|
-
1.
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
npm run dev
|
|
125
|
-
```
|
|
126
|
-
|
|
132
|
+
1. confirm that Vona, started before OpenAPI generation, is still running
|
|
127
133
|
2. open `http://localhost:7102/admin/`
|
|
128
134
|
3. enter the **Student** list page
|
|
129
135
|
4. trigger the **Summary** row action and verify that it uses the regenerated frontend API and returns the expected Student summary data
|
|
@@ -148,4 +154,4 @@ npm run dev
|
|
|
148
154
|
|
|
149
155
|
## Next step
|
|
150
156
|
|
|
151
|
-
Continue to [Tutorial 6: One Contract
|
|
157
|
+
Continue to [Tutorial 6: One Contract Model, Four Uses](/fullstack/tutorial-6-one-contract-four-uses).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Tutorial 6: One Contract
|
|
1
|
+
# Tutorial 6: One Contract Model, Four Uses
|
|
2
2
|
|
|
3
3
|
<Badge type="info" text="Basic" />
|
|
4
4
|
|
|
5
|
-
In this tutorial, one prompt lets AI close the series by showing Cabloy
|
|
5
|
+
In this tutorial, one prompt lets AI close the series by showing how Cabloy's field-oriented contract model supports several behaviors across backend and frontend.
|
|
6
6
|
|
|
7
7
|
This capstone sits on top of both the forward chain and the reverse chain rather than replacing either one.
|
|
8
8
|
|
|
@@ -14,7 +14,7 @@ This time the main teaching field is `mobile`, while `level` stays as the suppor
|
|
|
14
14
|
|
|
15
15
|
## Goal
|
|
16
16
|
|
|
17
|
-
By the end of this tutorial, you will understand how
|
|
17
|
+
By the end of this tutorial, you will understand how the field-oriented contract model supports:
|
|
18
18
|
|
|
19
19
|
1. validation
|
|
20
20
|
2. OpenAPI generation
|
|
@@ -44,13 +44,16 @@ Cabloy tries to reduce that duplication through a field-oriented contract and me
|
|
|
44
44
|
|
|
45
45
|
## CLI commands to inspect/use
|
|
46
46
|
|
|
47
|
-
This tutorial is mainly a source-inspection and verification capstone.
|
|
47
|
+
This tutorial is mainly a source-inspection and verification capstone. After updating the backend field and DTO contracts, start Vona in a separate terminal and keep it running so OpenAPI generation reads the current Swagger output:
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
```bash
|
|
50
|
+
npm run dev
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Then regenerate the frontend contract using the module configuration established in Tutorial 5:
|
|
50
54
|
|
|
51
55
|
```bash
|
|
52
56
|
npm run zova :openapi:generate demo-student
|
|
53
|
-
npm run dev
|
|
54
57
|
```
|
|
55
58
|
|
|
56
59
|
Usage notes:
|
|
@@ -94,9 +97,7 @@ The supporting render example remains:
|
|
|
94
97
|
|
|
95
98
|
## What those files mean in the business thread
|
|
96
99
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
That is why `mobile` is the main capstone field, while `level` remains the supporting rendering field.
|
|
100
|
+
Read `mobile` as the validation, OpenAPI, and serialization example, and `level` as the table and form rendering example. Together they show four uses of the same field-oriented contract model.
|
|
100
101
|
|
|
101
102
|
### Use 1: Validation
|
|
102
103
|
|
|
@@ -140,12 +141,7 @@ That keeps the masking rule close to the field contract ecosystem instead of sca
|
|
|
140
141
|
|
|
141
142
|
## Verification
|
|
142
143
|
|
|
143
|
-
1.
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
npm run dev
|
|
147
|
-
```
|
|
148
|
-
|
|
144
|
+
1. confirm that Vona, started before OpenAPI generation, is still running
|
|
149
145
|
2. open `http://localhost:7102/admin/`
|
|
150
146
|
3. enter the relevant **Student** page
|
|
151
147
|
4. verify that `level` still shows the expected render-driven behavior
|
|
@@ -84,9 +84,9 @@ See [Contract Loop Playbook](/fullstack/contract-loop-playbook) and [Frontend Me
|
|
|
84
84
|
|
|
85
85
|
This phase teaches the **forward chain** of the contract loop: backend contract truth changes first, generated frontend consumers are refreshed second, and frontend follow-up stays thin and resource-owner-aware.
|
|
86
86
|
|
|
87
|
-
### Phase 4: One field
|
|
87
|
+
### Phase 4: One field-oriented contract model across four uses
|
|
88
88
|
|
|
89
|
-
- [Tutorial 6: One Contract
|
|
89
|
+
- [Tutorial 6: One Contract Model, Four Uses](/fullstack/tutorial-6-one-contract-four-uses)
|
|
90
90
|
|
|
91
91
|
## The standard tutorial structure
|
|
92
92
|
|
package/repo-docs/index.md
CHANGED
|
@@ -4,7 +4,7 @@ layout: home
|
|
|
4
4
|
hero:
|
|
5
5
|
name: 'Cabloy'
|
|
6
6
|
text: 'Node.js fullstack framework for AI vibe coding'
|
|
7
|
-
tagline:
|
|
7
|
+
tagline: Vona and Zova stay connected through bidirectional type sync; AI Spec-Driven Development guides work from confirmed specs to verifiable delivery.
|
|
8
8
|
actions:
|
|
9
9
|
- theme: brand
|
|
10
10
|
text: Get Started
|
|
@@ -20,65 +20,43 @@ hero:
|
|
|
20
20
|
link: /ai/ai-spec-driven-development
|
|
21
21
|
|
|
22
22
|
features:
|
|
23
|
-
- title: One fullstack system
|
|
24
|
-
details: Build backend and frontend together instead of assembling separate stacks.
|
|
25
23
|
- title: Bidirectional type sync
|
|
26
|
-
details:
|
|
24
|
+
details: Generate Zova SDKs from Vona OpenAPI contracts and feed Zova metadata back to backend tooling.
|
|
27
25
|
- title: CLI-first workflows
|
|
28
|
-
details:
|
|
29
|
-
- title: Docs and skills
|
|
30
|
-
details: Give people and AI agents reusable, source-grounded guidance for the current repository.
|
|
26
|
+
details: Scaffold, regenerate, refactor, and verify through Vona and Zova commands.
|
|
31
27
|
- title: AI Spec-Driven Development
|
|
32
|
-
details:
|
|
33
|
-
- title:
|
|
34
|
-
details:
|
|
35
|
-
- title: Modular delivery
|
|
36
|
-
details: Organize capabilities as suites and modules, then deliver SSR, SPA, Web, and Admin applications with shared conventions.
|
|
37
|
-
- title: Semantic presentation
|
|
38
|
-
details: Translate confirmed audience, task, scene, and DTO contracts into schema-driven UI without changing security or ownership authority.
|
|
28
|
+
details: Turn confirmed product intent into bounded work, acceptance procedures, and verifiable evidence.
|
|
29
|
+
- title: Suites and modules
|
|
30
|
+
details: Organize capabilities for SSR, SPA, Web, and Admin applications with shared conventions.
|
|
39
31
|
---
|
|
40
32
|
|
|
41
|
-
|
|
33
|
+
## Choose a reading path
|
|
42
34
|
|
|
43
|
-
|
|
35
|
+
### Start a project
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
1. [Choose an edition](/editions/overview#choosing-an-edition)
|
|
38
|
+
2. [Fullstack Quickstart](/fullstack/quickstart)
|
|
39
|
+
3. [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
|
|
46
40
|
|
|
47
|
-
|
|
41
|
+
### Develop across Vona and Zova
|
|
48
42
|
|
|
49
|
-
|
|
50
|
-
- **Learn the shared fullstack architecture** across Cabloy, Vona, and Zova
|
|
51
|
-
- **Explore backend and frontend workflows** without losing the cross-stack picture
|
|
52
|
-
- **Understand Cabloy’s performance philosophy and runtime stability story** with [Framework Performance](/fullstack/framework-performance)
|
|
53
|
-
- **See how Cabloy Basic and Cabloy Start differ by edition** when UI assumptions, flavors, modules, SSR sites, or AI workflow guidance matter
|
|
54
|
-
- **Follow AI Spec-Driven Development** from confirmed product intent to evidence-backed verification
|
|
55
|
-
- **Use source-grounded AI vibe coding guidance** for prompting, workflow selection, and verification
|
|
43
|
+
Use the contract loop when generated contracts or metadata cross the Vona-Zova boundary.
|
|
56
44
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
1. [Fullstack Introduction](/fullstack/introduction)
|
|
46
|
+
2. [Fullstack CLI](/fullstack/cli)
|
|
47
|
+
3. [Contract Loop Playbook](/fullstack/contract-loop-playbook)
|
|
60
48
|
|
|
61
|
-
|
|
62
|
-
2. [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
|
|
63
|
-
3. [Cabloy Editions](/editions/overview#choosing-an-edition)
|
|
64
|
-
4. [Fullstack Introduction](/fullstack/introduction)
|
|
49
|
+
### Deliver from confirmed specs
|
|
65
50
|
|
|
66
|
-
|
|
51
|
+
Use AI Spec-Driven Development to connect product intent, bounded work, and acceptance evidence.
|
|
67
52
|
|
|
68
|
-
1. [
|
|
69
|
-
2. [
|
|
70
|
-
3. [VS Code Extensions](/fullstack/vscode-extensions)
|
|
71
|
-
4. [AI Development Introduction](/ai/introduction)
|
|
72
|
-
5. [AI Spec-Driven Development](/ai/ai-spec-driven-development)
|
|
73
|
-
6. [Reference Introduction](/reference/introduction)
|
|
74
|
-
7. [Editions Overview](/editions/overview)
|
|
53
|
+
1. [AI Spec-Driven Development](/ai/ai-spec-driven-development)
|
|
54
|
+
2. [AI Development Introduction](/ai/introduction)
|
|
75
55
|
|
|
76
|
-
###
|
|
56
|
+
### Explore performance
|
|
77
57
|
|
|
78
|
-
1. [
|
|
79
|
-
2. [
|
|
80
|
-
3. [Cache Guide](/backend/cache-guide)
|
|
81
|
-
4. [Vona + Zova Integration](/fullstack/vona-zova-integration)
|
|
58
|
+
1. [Framework Performance](/fullstack/framework-performance)
|
|
59
|
+
2. [Cache Guide](/backend/cache-guide)
|
|
82
60
|
|
|
83
61
|
## Documentation scope labels
|
|
84
62
|
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M14.1094 0C14.7552 0 15.1979 0.0729167 15.4375 0.21875C15.6771 0.364583 15.7969 0.619792 15.7969 0.984375V6.98438C15.7969 7.33854 15.6354 7.59375 15.3125 7.75C15 7.89583 14.474 7.96875 13.7344 7.96875C13.2448 7.96875 12.8646 7.9375 12.5938 7.875C12.3333 7.80208 12.151 7.69792 12.0469 7.5625C11.9427 7.42708 11.8906 7.23438 11.8906 6.98438C11.8906 5.94271 11.6042 5.10938 11.0312 4.48438C10.4688 3.85938 9.66146 3.54688 8.60938 3.54688C7.16146 3.54688 6.0625 4.06771 5.3125 5.10938C4.5625 6.15104 4.1875 7.65104 4.1875 9.60938C4.1875 11.5469 4.58333 13.0469 5.375 14.1094C6.17708 15.1615 7.30729 15.6875 8.76562 15.6875C9.67188 15.6875 10.5417 15.5677 11.375 15.3281C12.2083 15.0781 13.1146 14.7031 14.0938 14.2031C14.2604 14.1198 14.4167 14.0781 14.5625 14.0781C15.0521 14.0781 15.4583 14.5104 15.7812 15.375C15.9271 15.7708 16 16.125 16 16.4375C16 16.9688 15.7604 17.349 15.2812 17.5781C13.0521 18.6823 10.8281 19.2344 8.60938 19.2344C6.90104 19.2344 5.39583 18.8438 4.09375 18.0625C2.79167 17.2812 1.78125 16.1667 1.0625 14.7188C0.354167 13.2604 0 11.5573 0 9.60938C0 7.67188 0.348958 5.97917 1.04688 4.53125C1.74479 3.07292 2.70833 1.95312 3.9375 1.17188C5.17708 0.390625 6.57812 0 8.14062 0C9.96354 0 11.3177 0.65625 12.2031 1.96875V0.984375C12.2031 0.630208 12.3542 0.380208 12.6562 0.234375C12.9583 0.078125 13.4427 0 14.1094 0Z" fill="#FF9300"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M14.1094 0C14.7552 0 15.1979 0.0729167 15.4375 0.21875C15.6771 0.364583 15.7969 0.619792 15.7969 0.984375V6.98438C15.7969 7.33854 15.6354 7.59375 15.3125 7.75C15 7.89583 14.474 7.96875 13.7344 7.96875C13.2448 7.96875 12.8646 7.9375 12.5938 7.875C12.3333 7.80208 12.151 7.69792 12.0469 7.5625C11.9427 7.42708 11.8906 7.23438 11.8906 6.98438C11.8906 5.94271 11.6042 5.10938 11.0312 4.48438C10.4688 3.85938 9.66146 3.54688 8.60938 3.54688C7.16146 3.54688 6.0625 4.06771 5.3125 5.10938C4.5625 6.15104 4.1875 7.65104 4.1875 9.60938C4.1875 11.5469 4.58333 13.0469 5.375 14.1094C6.17708 15.1615 7.30729 15.6875 8.76562 15.6875C9.67188 15.6875 10.5417 15.5677 11.375 15.3281C12.2083 15.0781 13.1146 14.7031 14.0938 14.2031C14.2604 14.1198 14.4167 14.0781 14.5625 14.0781C15.0521 14.0781 15.4583 14.5104 15.7812 15.375C15.9271 15.7708 16 16.125 16 16.4375C16 16.9688 15.7604 17.349 15.2812 17.5781C13.0521 18.6823 10.8281 19.2344 8.60938 19.2344C6.90104 19.2344 5.39583 18.8438 4.09375 18.0625C2.79167 17.2812 1.78125 16.1667 1.0625 14.7188C0.354167 13.2604 0 11.5573 0 9.60938C0 7.67188 0.348958 5.97917 1.04688 4.53125C1.74479 3.07292 2.70833 1.95312 3.9375 1.17188C5.17708 0.390625 6.57812 0 8.14062 0C9.96354 0 11.3177 0.65625 12.2031 1.96875V0.984375C12.2031 0.630208 12.3542 0.380208 12.6562 0.234375C12.9583 0.078125 13.4427 0 14.1094 0Z" fill="#FF9300"/>
|
|
3
|
+
</svg>
|
|
@@ -55,11 +55,15 @@ Cabloy Basic exposes these shared root scripts:
|
|
|
55
55
|
The current Cabloy Basic root scripts also expose:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
+
npm run spec:check -- <suite>
|
|
59
|
+
npm run spec:check -- <suite> --lightweight --format json
|
|
58
60
|
npm run test:spec-charts
|
|
59
61
|
npm run spec:charts -- <suite>
|
|
60
62
|
npm run spec:charts:check -- <suite>
|
|
61
63
|
```
|
|
62
64
|
|
|
65
|
+
`spec:check` is a read-only planning-authority structure audit: complete mode checks core records, formal definitions, exact references and traceability, WBS/progress consistency, and supported local Markdown links. `--lightweight` checks the present authority and references without requiring a full baseline or charts; `--format json` emits deterministic diagnostics. Audit regressions run under `test:agent-governance`. A structural pass does not authenticate approval, business completeness, implementation, or acceptance evidence; existing legacy gaps should be reported rather than filled with invented requirements.
|
|
66
|
+
|
|
63
67
|
`spec:charts` refreshes the generated Gantt and burndown SVG views for a chart-compatible `repo-specs/<suite>/` record. `spec:charts:check` validates the supported input contract and detects stale generated views; `test:spec-charts` runs the chart-tool test suite. The deterministic implementation lives in `repo-agent-governance/tools/spec-charts/`, not inside a provider-specific skill discovery directory.
|
|
64
68
|
|
|
65
69
|
### Chart input contract
|
|
@@ -68,7 +72,8 @@ The generator consumes `README.md`, `pdp-wbs.md`, `test-plan.md`, and `progress.
|
|
|
68
72
|
|
|
69
73
|
- formal `### Phase <number>:` and `#### WBS-...:` headings in the WBS, with supported dependency labels
|
|
70
74
|
- formally defined `ATP-*` scenarios in the test plan for every ATP reference used by a WBS task
|
|
71
|
-
- one progress row for each WBS item, with the WBS ID
|
|
75
|
+
- exactly one progress row for each WBS item, with columns identified by the `WBS ID` and `Status` headers, regardless of their order; explicit WBS status must agree
|
|
76
|
+
- unique formal definitions and an acyclic dependency graph; both `Dependency:` and `Dependencies:` are supported, phase defaults apply only before the first task, and explicit task dependencies override them
|
|
72
77
|
- a README whose current title and language should be reflected by regenerated chart output
|
|
73
78
|
|
|
74
79
|
A legacy suite with a different WBS or progress-table layout is not chart-compatible until a deliberate record-format normalization aligns its authoritative Markdown with this input contract. Format normalization must preserve the existing planning authority; it does not require an unrelated product or delivery change.
|