cabloy 5.1.229 → 5.1.231
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/playwright-e2e.yml +4 -2
- package/.github/workflows/vona-test-sqlite3.yml +2 -1
- package/CHANGELOG.md +23 -0
- package/package.json +1 -1
- package/repo-agent-governance/managed-assets.json +9 -9
- package/repo-agent-governance/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
- package/repo-agent-governance/skills/cabloy-spec-execution/references/execution-protocol.md +4 -1
- package/repo-agent-governance/skills/cabloy-spec-execution/references/status-and-evidence.md +10 -0
- package/repo-docs/ai/verification.md +22 -0
- package/repo-docs/backend/model-guide.md +1 -0
- package/repo-docs/backend/websocket-usage-guide.md +3 -0
- package/repo-docs/frontend/controller-boundary-guide.md +1 -1
- package/repo-docs/frontend/ioc-and-beans.md +2 -1
- package/repo-docs/frontend/modules-and-suites.md +1 -0
- package/repo-docs/reference/repo-scripts.md +2 -0
- package/vona/env/.env +1 -0
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/packages-utils/zod-query/package.json +1 -1
- package/vona/packages-utils/zod-query/src/lib/query.ts +4 -1
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-core/package.json +1 -1
- package/vona/packages-vona/vona-core/src/lib/bean/type.ts +3 -3
- package/vona/packages-vona/vona-core/src/lib/core/testClaim.test.ts +294 -1
- package/vona/packages-vona/vona-core/src/lib/core/testClaim.ts +47 -9
- package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystem.test.ts +163 -39
- package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystemWindows.cs +16 -6
- package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystemWindows.ts +9 -4
- package/vona/packages-vona/vona-core/src/lib/utils/index.ts +1 -0
- package/vona/packages-vona/vona-core/src/lib/utils/zod-enhance.ts +8 -1
- package/vona/packages-vona/vona-mock/package.json +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/cartItem.tsx +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/cartOwnership.test.ts +144 -18
- package/vona/src/suite-vendor/a-auth/modules/auth-oauth/package.json +1 -1
- package/vona/src/suite-vendor/a-auth/modules/auth-oauth/src/bean/authProvider.oauth.ts +1 -0
- package/vona/src/suite-vendor/a-auth/modules/auth-oauth/src/types/index.ts +1 -0
- package/vona/src/suite-vendor/a-auth/package.json +2 -2
- 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-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
- 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/types/relationsColumns.ts +7 -5
- 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/zova/packages-utils/zova-jsx/package.json +2 -2
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +2 -2
- package/zova/packages-zova/zova-core/src/bean/resource/component/type.ts +3 -3
- package/zova/packages-zova/zova-core/src/bean/type.ts +6 -6
- package/zova/src/suite/cabloy-basic/modules/basic-button/src/bean/behavior.perform.tsx +5 -5
- package/zova/src/suite/cabloy-basic/modules/basic-date/src/.metadata/component/date.ts +3 -1
- package/zova/src/suite/cabloy-basic/modules/basic-date/src/.metadata/component/dateRange.ts +12 -4
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockPageEntry/controller.tsx +8 -2
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/.metadata/component/select.ts +9 -3
- package/zova/src/suite-vendor/a-zova/modules/a-behavior/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-behavior/src/types/behavior.ts +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/detailsActionBulk.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/detail/detailsActionRow.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/formActionRow.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/tableActionBulk.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/types/resource/tableActionRow.ts +5 -3
- package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +5 -5
package/.cabloy-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
5.1.
|
|
1
|
+
5.1.231
|
|
@@ -98,7 +98,8 @@ jobs:
|
|
|
98
98
|
if: runner.os != 'Linux'
|
|
99
99
|
run: npx playwright install chromium
|
|
100
100
|
- name: run focused managed E2E regression gate
|
|
101
|
-
|
|
101
|
+
# Bound concurrent PowerShell/Add-Type cold starts on Windows runners.
|
|
102
|
+
run: node --test ${{ runner.os == 'Windows' && '--test-concurrency=2' || '' }} zova/packages-utils/zova-vite/test/configUtils.test.ts scripts/testClaimProcesses.test.ts scripts/runIsolatedTest.test.ts scripts/generateOpenapiIsolated.test.ts scripts/testClaimCleanup.test.ts scripts/testProcessGuardianWindows.test.ts scripts/testBrowserGuardianWindows.test.ts vona/packages-vona/vona-core/src/lib/core/testClaim.test.ts vona/packages-vona/vona-core/src/lib/core/testClaimFilesystem.test.ts vona/packages-vona/vona-core/src/lib/framework/processWorker.test.ts vona/src/suite-vendor/a-vona/modules/a-static/test/middlewareSystem.static.test.ts vona/src/suite-vendor/a-vona/modules/a-metrics/test/middlewareSystem.health.test.ts vona/src/suite-vendor/a-vona/modules/a-logger/test/middlewareSystem.httpLog.test.ts vona/src/suite-vendor/a-vona/modules/a-logger/src/lib/redactIsolatedReadyHeader.test.ts repo-e2e/scripts/managedTest.test.ts repo-e2e/scripts/managedTestImports.test.ts repo-e2e/scripts/e2e.test.ts repo-e2e/scripts/runE2eArgs.test.ts repo-e2e/scripts/runE2e.test.ts
|
|
102
103
|
- name: run Basic E2E baseline
|
|
103
104
|
run: npm run test:e2e -- cabloy-basic home-user-account
|
|
104
105
|
- name: upload Playwright artifacts
|
|
@@ -206,7 +207,8 @@ jobs:
|
|
|
206
207
|
if: runner.os != 'Linux'
|
|
207
208
|
run: npx playwright install chromium
|
|
208
209
|
- name: run focused managed E2E regression gate
|
|
209
|
-
|
|
210
|
+
# Bound concurrent PowerShell/Add-Type cold starts on Windows runners.
|
|
211
|
+
run: node --test ${{ runner.os == 'Windows' && '--test-concurrency=2' || '' }} zova/packages-utils/zova-vite/test/configUtils.test.ts scripts/testClaimProcesses.test.ts scripts/runIsolatedTest.test.ts scripts/generateOpenapiIsolated.test.ts scripts/testClaimCleanup.test.ts scripts/testProcessGuardianWindows.test.ts scripts/testBrowserGuardianWindows.test.ts vona/packages-vona/vona-core/src/lib/core/testClaim.test.ts vona/packages-vona/vona-core/src/lib/core/testClaimFilesystem.test.ts vona/packages-vona/vona-core/src/lib/framework/processWorker.test.ts vona/src/suite-vendor/a-vona/modules/a-static/test/middlewareSystem.static.test.ts vona/src/suite-vendor/a-vona/modules/a-metrics/test/middlewareSystem.health.test.ts vona/src/suite-vendor/a-vona/modules/a-logger/test/middlewareSystem.httpLog.test.ts vona/src/suite-vendor/a-vona/modules/a-logger/src/lib/redactIsolatedReadyHeader.test.ts repo-e2e/scripts/managedTest.test.ts repo-e2e/scripts/managedTestImports.test.ts repo-e2e/scripts/e2e.test.ts repo-e2e/scripts/runE2eArgs.test.ts repo-e2e/scripts/runE2e.test.ts
|
|
210
212
|
- name: run Commerce cart model regression
|
|
211
213
|
run: node --test zova/src/suite/a-commerce/modules/commerce-trade/test/lib/cartModel.test.ts
|
|
212
214
|
- name: build Commerce Zova artifacts
|
|
@@ -93,7 +93,8 @@ jobs:
|
|
|
93
93
|
- name: init
|
|
94
94
|
run: npm run init
|
|
95
95
|
- name: run isolated test infrastructure gate
|
|
96
|
-
|
|
96
|
+
# Bound concurrent PowerShell/Add-Type cold starts on Windows runners.
|
|
97
|
+
run: node --test ${{ runner.os == 'Windows' && '--test-concurrency=2' || '' }} scripts/testClaimProcesses.test.ts scripts/runIsolatedTest.test.ts scripts/testClaimCleanup.test.ts scripts/testProcessGuardianWindows.test.ts vona/packages-vona/vona-core/src/lib/core/testClaim.test.ts vona/packages-vona/vona-core/src/lib/core/testClaimFilesystem.test.ts vona/packages-vona/vona-core/src/lib/framework/bootstrap.test.ts vona/packages-vona/vona-core/src/lib/framework/useApp.test.ts vona/packages-cli/cli-set-api/test/binBuildEntries.test.ts vona/packages-cli/cli-set-api/test/binTestPatterns.test.ts
|
|
97
98
|
- name: run A-Pay focused gate
|
|
98
99
|
run: npm run test -- test-pay/test/paymentSession.test.ts test-pay/test/payMock.test.ts test-pay/test/paypalProvider.test.ts test-pay/test/paypalLifecycle.test.ts test-pay/test/stripeProvider.test.ts test-pay/test/stripeLifecycle.test.ts test-pay/test/outbox.test.ts test-pay/test/webhook.test.ts
|
|
99
100
|
working-directory: vona
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.1.231
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Add commerce functionality.
|
|
8
|
+
- Add formatting support.
|
|
9
|
+
- Apply feature updates.
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
- Fix Windows tests.
|
|
14
|
+
- Patch Zod integration.
|
|
15
|
+
|
|
16
|
+
### Improvements
|
|
17
|
+
|
|
18
|
+
- Update the controller implementation.
|
|
19
|
+
|
|
20
|
+
## 5.1.230
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
- Apply feature updates (details not specified in commit messages).
|
|
25
|
+
|
|
3
26
|
## 5.1.229
|
|
4
27
|
|
|
5
28
|
### Features
|
package/package.json
CHANGED
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
{
|
|
96
96
|
"adapter": "codex",
|
|
97
97
|
"category": "skill",
|
|
98
|
-
"sha256": "
|
|
98
|
+
"sha256": "c3233550631e7782834811d3bd73b9b823b0bd429a681cedff85e24128b9ed35",
|
|
99
99
|
"source": "skills/cabloy-frontend-scaffold/SKILL.md",
|
|
100
100
|
"target": ".agents/skills/cabloy-frontend-scaffold/SKILL.md"
|
|
101
101
|
},
|
|
@@ -179,14 +179,14 @@
|
|
|
179
179
|
{
|
|
180
180
|
"adapter": "codex",
|
|
181
181
|
"category": "skill",
|
|
182
|
-
"sha256": "
|
|
182
|
+
"sha256": "64615460c3bec383bb0010ddc1412e7fa8f122bbb3f87cfe5c824891fe247e6c",
|
|
183
183
|
"source": "skills/cabloy-spec-execution/references/execution-protocol.md",
|
|
184
184
|
"target": ".agents/skills/cabloy-spec-execution/references/execution-protocol.md"
|
|
185
185
|
},
|
|
186
186
|
{
|
|
187
187
|
"adapter": "codex",
|
|
188
188
|
"category": "skill",
|
|
189
|
-
"sha256": "
|
|
189
|
+
"sha256": "9ec7a5dd8b7c1a5d561a96562ee754c148e1d14db953d3629075af89e38613d3",
|
|
190
190
|
"source": "skills/cabloy-spec-execution/references/status-and-evidence.md",
|
|
191
191
|
"target": ".agents/skills/cabloy-spec-execution/references/status-and-evidence.md"
|
|
192
192
|
},
|
|
@@ -431,7 +431,7 @@
|
|
|
431
431
|
{
|
|
432
432
|
"adapter": "claude",
|
|
433
433
|
"category": "skill",
|
|
434
|
-
"sha256": "
|
|
434
|
+
"sha256": "c3233550631e7782834811d3bd73b9b823b0bd429a681cedff85e24128b9ed35",
|
|
435
435
|
"source": "skills/cabloy-frontend-scaffold/SKILL.md",
|
|
436
436
|
"target": ".claude/skills/cabloy-frontend-scaffold/SKILL.md"
|
|
437
437
|
},
|
|
@@ -515,14 +515,14 @@
|
|
|
515
515
|
{
|
|
516
516
|
"adapter": "claude",
|
|
517
517
|
"category": "skill",
|
|
518
|
-
"sha256": "
|
|
518
|
+
"sha256": "64615460c3bec383bb0010ddc1412e7fa8f122bbb3f87cfe5c824891fe247e6c",
|
|
519
519
|
"source": "skills/cabloy-spec-execution/references/execution-protocol.md",
|
|
520
520
|
"target": ".claude/skills/cabloy-spec-execution/references/execution-protocol.md"
|
|
521
521
|
},
|
|
522
522
|
{
|
|
523
523
|
"adapter": "claude",
|
|
524
524
|
"category": "skill",
|
|
525
|
-
"sha256": "
|
|
525
|
+
"sha256": "9ec7a5dd8b7c1a5d561a96562ee754c148e1d14db953d3629075af89e38613d3",
|
|
526
526
|
"source": "skills/cabloy-spec-execution/references/status-and-evidence.md",
|
|
527
527
|
"target": ".claude/skills/cabloy-spec-execution/references/status-and-evidence.md"
|
|
528
528
|
},
|
|
@@ -781,7 +781,7 @@
|
|
|
781
781
|
{
|
|
782
782
|
"adapter": "cursor",
|
|
783
783
|
"category": "skill",
|
|
784
|
-
"sha256": "
|
|
784
|
+
"sha256": "c3233550631e7782834811d3bd73b9b823b0bd429a681cedff85e24128b9ed35",
|
|
785
785
|
"source": "skills/cabloy-frontend-scaffold/SKILL.md",
|
|
786
786
|
"target": ".cursor/skills/cabloy-frontend-scaffold/SKILL.md"
|
|
787
787
|
},
|
|
@@ -865,14 +865,14 @@
|
|
|
865
865
|
{
|
|
866
866
|
"adapter": "cursor",
|
|
867
867
|
"category": "skill",
|
|
868
|
-
"sha256": "
|
|
868
|
+
"sha256": "64615460c3bec383bb0010ddc1412e7fa8f122bbb3f87cfe5c824891fe247e6c",
|
|
869
869
|
"source": "skills/cabloy-spec-execution/references/execution-protocol.md",
|
|
870
870
|
"target": ".cursor/skills/cabloy-spec-execution/references/execution-protocol.md"
|
|
871
871
|
},
|
|
872
872
|
{
|
|
873
873
|
"adapter": "cursor",
|
|
874
874
|
"category": "skill",
|
|
875
|
-
"sha256": "
|
|
875
|
+
"sha256": "9ec7a5dd8b7c1a5d561a96562ee754c148e1d14db953d3629075af89e38613d3",
|
|
876
876
|
"source": "skills/cabloy-spec-execution/references/status-and-evidence.md",
|
|
877
877
|
"target": ".cursor/skills/cabloy-spec-execution/references/status-and-evidence.md"
|
|
878
878
|
},
|
|
@@ -281,6 +281,8 @@ Always end with a verification path that matches the scope of the frontend chang
|
|
|
281
281
|
|
|
282
282
|
For ordinary frontend changes, prefer a few critical user flows through the existing E2E infrastructure, selected by affected behavior with spec names, tags, or `--grep`. Reuse existing scenarios or extend them narrowly; do not require exhaustive isolated-test matrices, extensive fake dependencies, or custom source-evaluation loaders before delivery. When an actual problem is fixed, add focused regression coverage. Targeted unit or framework tests remain useful when they efficiently prove the behavior being changed; this is not a ban on existing tests or managed test-resource isolation.
|
|
283
283
|
|
|
284
|
+
Business E2E should primarily assert user actions, visible business outcomes, and persistence after save/reload. Do not turn architecture guidance into default browser assertions about Controller/IoC object identity, model instances, or Query/cache internals. Assert those internals only for an explicit architecture/framework acceptance contract or a focused regression, preferably at the smallest suitable unit, framework, or integration layer. This does not remove architecture requirements or server-side safety checks.
|
|
285
|
+
|
|
284
286
|
Keep relevant format, lint, and type checks lightweight and scope-dependent. Prepare only the affected flavor's required artifacts for runtime verification. Preserve applicable route, SSR/hydration, authentication, authorization, contract, and acceptance checks; frontend E2E does not replace server-side enforcement. If runtime verification is unavailable or not authorized, report the gap rather than building a substitute harness. See [Frontend Scripts](../../../repo-docs/frontend/scripts.md) for edition-aware preparation and filtered E2E commands.
|
|
285
287
|
|
|
286
288
|
Shared checks, when applicable, include:
|
|
@@ -115,6 +115,7 @@ Source ownership: <observed paths and proposed paths>
|
|
|
115
115
|
Specialist route: <backend/frontend/contract-loop/specialist>
|
|
116
116
|
Safety/contract constraints: <tenant, auth, lifecycle, transaction, SSR, migration, privacy>
|
|
117
117
|
Verification: <exact approved ATP procedures and commands>
|
|
118
|
+
Failure handling: <bounded in-scope diagnosis/repair/reruns, limits, and explicit stop conditions; or stop/report only>
|
|
118
119
|
Evidence: <required revision/environment/procedure/result/redacted artifact>
|
|
119
120
|
Target classes: <observed existing / proposed new / explicitly approved new; design checks, ADR and planned additions>
|
|
120
121
|
Quality gates: <authority audit; chart input eligibility/model/freshness; human approval/evidence>
|
|
@@ -147,10 +148,12 @@ Verify the approved connected outcome, not merely supporting helper behavior. On
|
|
|
147
148
|
|
|
148
149
|
After user correction, redirect the affected approach rather than rename, relocate, or repackage rejected work. Reassess only the affected scope and preserve valid unchanged approvals; the correction does not itself authorize destructive cleanup or a different feature.
|
|
149
150
|
|
|
151
|
+
The approved dossier may cover bounded in-scope diagnosis, implementation/test repair, and reruns, including locator corrections. Record the first failure and subsequent attempts, then complete that connected work within the stated limits without another approval for each substep. Do not weaken expected business/security outcomes, skip required checks, or expand scope to obtain a pass. If repair/reruns are not authorized, the limit is reached, or the user explicitly required first-failure stopping, stop and report. This permission is prospective and never overrides an existing narrower approval.
|
|
152
|
+
|
|
150
153
|
Stop and report rather than guessing when:
|
|
151
154
|
|
|
152
155
|
- a command to run is not yet observed, or a creation path lacks the explicit approved-new design/ADR/execution boundary; future source absence alone is not a blocker for an approved creation task;
|
|
153
|
-
- a test
|
|
156
|
+
- a failed test or missing required artifact cannot be resolved within the approved repair/rerun boundary, or an explicit stop condition applies;
|
|
154
157
|
- the working tree becomes attribution-ambiguous;
|
|
155
158
|
- a specialist discovers a requirement or contract change;
|
|
156
159
|
- a planned external/destructive operation is needed;
|
package/repo-agent-governance/skills/cabloy-spec-execution/references/status-and-evidence.md
CHANGED
|
@@ -24,6 +24,8 @@ Do not use `progress.md` to add requirements, technical contracts, acceptance pr
|
|
|
24
24
|
|
|
25
25
|
## Evidence layout
|
|
26
26
|
|
|
27
|
+
Retain the minimum sufficient evidence required by the test plan and attribution rules below. Prefer existing test-runner reports, redacted logs, and concise ATP/progress pointers rather than duplicating their contents across receipt layers. Do not create full input snapshots, exhaustive hash manifests, custom evidence verifiers, or multilayer receipts by default; new evidence machinery needs an explicit test-plan requirement or a concrete attribution/integrity risk that existing artifacts cannot address. Preserving source hashes during sanitization does not require inventing a new all-input hashing system. Keep mandatory revision/worktree attribution, actual failures, privacy review, and historical evidence intact unless a separate approved consolidation follows the lifecycle rules below.
|
|
28
|
+
|
|
27
29
|
Prefer the scalable phase/ATP layout for newly observed proof when the suite permits extensions:
|
|
28
30
|
|
|
29
31
|
```text
|
|
@@ -104,6 +106,14 @@ A genuinely documentary/design-only task can instead follow `not-started -> in-p
|
|
|
104
106
|
|
|
105
107
|
A task may be `implementation-complete` when source work is complete but an ATP, browser check, paired build, release gate, redaction decision, or durable artifact remains. A phase can be verified without implying that a separately defined integration or release phase is verified.
|
|
106
108
|
|
|
109
|
+
## Evidence lifecycle and consolidation
|
|
110
|
+
|
|
111
|
+
Retain artifacts for a named ongoing development need, an applicable acceptance/retention requirement, or unique information still needed to explain a result. Creation alone and hypothetical future usefulness are not reasons for permanent retention. Maintained source-controlled business tests provide ongoing regression protection; historical run artifacts record only what happened for their attributed revision and do not prove changed code remains correct.
|
|
112
|
+
|
|
113
|
+
Keep current delivery state, coverage gaps, and blockers concise in the existing progress/phase records. Retain key acceptance results and only the supporting primary evidence and revision/dirty-worktree attribution they still require. Move durable discoveries needed for further development into the owning source tests, design record, or issue/handoff instead of depending on an artifact chain. Retired one-shot runners, resolved diagnostic detail, repeated inventories/snapshots, and documentary receipts need not remain permanently when they have no such purpose or unique information.
|
|
114
|
+
|
|
115
|
+
Inspect before deleting or overwriting historical material and obtain explicit approval for the consolidation/deletion scope, including replacement of any earlier unchanged-retention commitment. Preserve meaningful successes, failures, waivers, and gaps truthfully; retain primary proof required by continuing acceptance claims. Update incoming links and state when old hash-based verifiers are retired or no longer applicable rather than recreating their dependency chains. Do not delete by extension or Git status, replace the clutter with a giant archive or a new manifest/checker system, or promote acceptance status. Reorganizing existing evidence alone does not require rerunning business tests; verify affected references and records with existing tools. This guidance does not itself authorize cleanup or override a controlling retention requirement.
|
|
116
|
+
|
|
107
117
|
## Historical evidence and supersession
|
|
108
118
|
|
|
109
119
|
Evidence is revision- and authority-scoped. When source paths, generated artifacts, contracts, scope, or security assumptions change:
|
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
AI-assisted work should finish with checks that match the scope of the change.
|
|
4
4
|
|
|
5
|
+
## Proportional verification
|
|
6
|
+
|
|
7
|
+
Prefer a few critical business flows through existing test infrastructure over exhaustive upfront matrices or bespoke verification harnesses. Preserve applicable security, authorization, tenant isolation, SSR/hydration, data consistency, migration, cleanup, and formal acceptance requirements.
|
|
8
|
+
|
|
9
|
+
### Assert business outcomes at the business layer
|
|
10
|
+
|
|
11
|
+
Business E2E should focus on user actions, visible results, and persistence after save/reload, plus essential rejection paths. Architecture guidance is not automatically a requirement to inspect Controller/IoC object identity, model instances, or Query/cache internals in the browser. Test internal invariants when an explicit architecture/framework contract or an actual regression requires them, preferably at the smallest suitable unit, framework, or integration layer. Architecture requirements and server-side enforcement still apply.
|
|
12
|
+
|
|
13
|
+
### Keep evidence sufficient, not elaborate
|
|
14
|
+
|
|
15
|
+
Prefer native test reports, redacted logs, and concise ATP/progress links. Retain required revision/worktree attribution, changed-file scope, exact procedures, relevant environment/fixture identities, and observed outcomes, including failures. Do not introduce full input snapshots, exhaustive hash manifests, custom evidence verifiers, or multiple receipt layers unless the test plan requires them or a concrete attribution/integrity risk cannot be addressed with existing artifacts. Preserve privacy review and historical evidence; simpler future evidence is not permission to delete old records.
|
|
16
|
+
|
|
17
|
+
Retain artifacts only for a named ongoing development need, an applicable acceptance/retention requirement, or unique information still needed to explain a result—not merely because they were generated or might someday be useful. Maintained source-controlled business tests provide ongoing regression protection; historical logs describe a particular run and cannot prove changed code remains correct. Keep current status and blockers in existing progress/phase records, and move durable discoveries into the owning tests, design record, or issue/handoff. A concise delivery summary plus the few primary artifacts needed to support continuing acceptance claims is preferable to permanent process-file chains.
|
|
18
|
+
|
|
19
|
+
Historical consolidation requires inspection and explicit approval of the deletion scope, including any change to prior retention commitments. Preserve meaningful outcomes, failures, waivers, gaps, and necessary revision attribution; update links and retire obsolete verifier expectations. Remove redundant snapshots/receipts and one-shot helpers only when their required or unique information is retained elsewhere or no longer needed. Do not substitute a giant archive or another checker system. Evidence reorganization alone needs reference/record checks, not business-test reruns, and never advances acceptance or overrides controlling retention requirements.
|
|
20
|
+
|
|
21
|
+
### Handle failures within the approved boundary
|
|
22
|
+
|
|
23
|
+
For specification execution, the approved dossier may include bounded in-scope diagnosis, repair, and reruns, with limits and stop conditions. When covered, record the failure and perform the connected correction without requesting approval for every locator or test-fix substep. Do not weaken business/security expectations to obtain a pass. Stop when the approved repair/rerun boundary is absent or exhausted, an explicit first-failure stop applies, or new scope, authority, dependency, safety, external, or destructive-operation questions require renewed approval. This guidance does not broaden or retrospectively replace an existing approval.
|
|
24
|
+
|
|
25
|
+
See the canonical `cabloy-frontend-scaffold` verification guidance and the `cabloy-spec-execution` execution-protocol and status-and-evidence references for operational details.
|
|
26
|
+
|
|
5
27
|
## Documentation verification
|
|
6
28
|
|
|
7
29
|
For public docs changes, verify at minimum:
|
|
@@ -63,6 +63,7 @@ Representative structure:
|
|
|
63
63
|
|
|
64
64
|
```typescript
|
|
65
65
|
import type { IDecoratorSocketNamespaceOptions } from 'vona-module-a-socket';
|
|
66
|
+
|
|
66
67
|
import { BeanSocketNamespaceBase, SocketNamespace } from 'vona-module-a-socket';
|
|
67
68
|
|
|
68
69
|
declare module 'vona-module-a-socket' {
|
|
@@ -242,6 +243,7 @@ import type {
|
|
|
242
243
|
ISocketConnectionExecute,
|
|
243
244
|
} from 'vona-module-a-socket';
|
|
244
245
|
import type { WebSocket } from 'ws';
|
|
246
|
+
|
|
245
247
|
import { BeanBase } from 'vona';
|
|
246
248
|
import { SocketConnection } from 'vona-module-a-socket';
|
|
247
249
|
|
|
@@ -284,6 +286,7 @@ Representative generated shape:
|
|
|
284
286
|
import type { Next } from 'vona';
|
|
285
287
|
import type { IDecoratorSocketPacketOptions, ISocketPacketExecute } from 'vona-module-a-socket';
|
|
286
288
|
import type { WebSocket } from 'ws';
|
|
289
|
+
|
|
287
290
|
import { BeanBase } from 'vona';
|
|
288
291
|
import { SocketPacket } from 'vona-module-a-socket';
|
|
289
292
|
|
|
@@ -88,8 +88,8 @@ static $componentOptions: IComponentOptions = {
|
|
|
88
88
|
Application configuration supplies the shared renderer contract:
|
|
89
89
|
|
|
90
90
|
```ts
|
|
91
|
-
import type { ZovaContext } from 'zova';
|
|
92
91
|
import type { VNodeChild } from 'vue';
|
|
92
|
+
import type { ZovaContext } from 'zova';
|
|
93
93
|
|
|
94
94
|
config.boundary = {
|
|
95
95
|
loading: {
|
|
@@ -138,9 +138,10 @@ In practice, Zova can still preserve the ergonomic class-based development exper
|
|
|
138
138
|
Use a getter when injection arguments must be prepared dynamically. The getter must explicitly identify the target bean with `beanFullName`; `usePrepareArg(...)` supplies initialization arguments only and does not resolve the target bean.
|
|
139
139
|
|
|
140
140
|
```typescript
|
|
141
|
-
import { Use, usePrepareArg } from 'zova';
|
|
142
141
|
import type { ServiceSsrLayout } from 'zova-module-home-base';
|
|
143
142
|
|
|
143
|
+
import { Use, usePrepareArg } from 'zova';
|
|
144
|
+
|
|
144
145
|
class ControllerLayout {
|
|
145
146
|
@Use({ beanFullName: 'home-base.service.ssrLayout' })
|
|
146
147
|
get $$serviceSsrLayout(): ServiceSsrLayout {
|
|
@@ -70,6 +70,8 @@ Use the root commands to select the workspace scope:
|
|
|
70
70
|
|
|
71
71
|
Explicit native and legacy checks use `--noEmit --incremental false`: Zova selects `tsconfig.vue-tsc.json`, and Vona selects `tsconfig.json`. Vona's daily config has no `include` or project `references`; default source discovery is filtered by `exclude`, following Zova's approach. Backend/application/module source and module tests are checked together in one program. CLI tooling, package-directory roots, dependencies, distribution output, and generated runtime/REST directories are excluded from initial discovery. Exclusions are not import barriers: required framework/package source and hidden module metadata still participate through imports. Unreferenced hidden helpers and generated `.vona` bootstraps are not independent daily-check roots.
|
|
72
72
|
|
|
73
|
+
Choose the narrowest **supported, semantically appropriate checking project**, not simply the nearest module `tsconfig.json`. Prefer the active repository's root/workspace source-check entrypoints; a module publication/declaration configuration is not automatically a standalone application check. Before using a custom local invocation or interpreting configuration-related diagnostics, inspect the selected configuration's `extends` chain and effective compiler options, and confirm whether dependencies resolve to source or declarations. Dependency source imported into the consuming program is checked under that program's compiler options; the dependency package's own `tsconfig.json` is not automatically applied. Distinguish an unsuitable invocation/configuration from a business-source type error, and do not change import suffixes or relax compiler options merely to make that invocation pass. Keep daily application checks separate from publication/declaration validation, and verify the actual entrypoints in Cabloy Start rather than assuming all Basic aliases apply.
|
|
74
|
+
|
|
73
75
|
Root `npm run tsc` runs `tsc:zova`, then `tsc:vona`; these are the only root `tsc` entrypoints. Compiler selection remains in the nested workspaces: use `pnpm --dir zova run tsc:legacy` or `pnpm --dir vona run tsc:legacy` for comparison or fallback, and the corresponding workspace `tsc:native` scripts for explicit native checks. The former `tsc:force`, `tsc:vona:native:force`, and nested Vona `tsc:native:force` aliases have been removed: these source checks neither run a project build nor emit declarations/build-info files. Each module's existing publication scripts remain responsible for its declaration output; there is no separate root declaration-validation workflow.
|
|
74
76
|
|
|
75
77
|
In both nested workspaces, `npm run tsc` delegates to `npm run tsc:native`. Native and legacy checks first run `npm run prerun`, then invoke the selected compiler with incremental caching disabled. Root workspace aliases delegate to these scripts too, so dependency and generated metadata preparation is not bypassed. Each workspace's `prerun` runs only its `:tools:deps` command; it does not call `tsc`, avoiding recursive script execution. Preparation may refresh generated metadata or dependency manifests and install changed dependencies, while the compiler step itself emits no declarations or build-info files.
|
package/vona/env/.env
CHANGED
|
@@ -10,13 +10,16 @@ interface IParsePayload {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
let ZodMetadata: any;
|
|
13
|
-
|
|
13
|
+
let shouldAdapt: (() => boolean) | undefined;
|
|
14
|
+
export function setParseAdapter(zodMetadata: any, policy?: () => boolean) {
|
|
14
15
|
ZodMetadata = zodMetadata;
|
|
16
|
+
shouldAdapt = policy;
|
|
15
17
|
(z.core as any).setParseAdapter(__parseAdapter);
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
function __parseAdapter(inst: z.ZodType, parse) {
|
|
19
21
|
return (payload: IParsePayload, _) => {
|
|
22
|
+
if (shouldAdapt?.() === false) return parse(payload, _);
|
|
20
23
|
const type = inst.type;
|
|
21
24
|
switch (type) {
|
|
22
25
|
case 'string':
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vona",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.117",
|
|
4
4
|
"gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
|
|
5
5
|
"description": "Vona is an intuitive, elegant and powerful Node.js framework for rapidly developing enterprise applications of any size",
|
|
6
6
|
"keywords": [
|
|
@@ -7,9 +7,9 @@ import type { TypeErrorsInternal } from './resource/error/errorInternal.ts';
|
|
|
7
7
|
export interface IBeanRecordGlobal {}
|
|
8
8
|
export interface IBeanRecordGeneral {}
|
|
9
9
|
export type TypeBeanRecordGeneralSelector<SCENE extends keyof IBeanSceneRecord> = {
|
|
10
|
-
[
|
|
11
|
-
? K
|
|
12
|
-
|
|
10
|
+
[
|
|
11
|
+
K in keyof IBeanRecordGeneral as K extends `${string}.${SCENE}.${string}` ? K : never
|
|
12
|
+
]: IBeanRecordGeneral[K];
|
|
13
13
|
};
|
|
14
14
|
export type TypeBeanRecordGeneralSelectorKeys<SCENE extends keyof IBeanSceneRecord> =
|
|
15
15
|
keyof TypeBeanRecordGeneralSelector<SCENE>;
|