cabloy 5.1.197 → 5.1.198
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/.husky/pre-commit +1 -0
- package/CHANGELOG.md +15 -0
- package/lint-staged.config.mjs +1 -1
- package/package.json +2 -2
- package/repo-agent-governance/managed-assets.json +21 -21
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/evals.json +13 -39
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/files/scenarios.json +1 -3
- package/repo-agent-governance/skills/cabloy-spec-generation/SKILL.md +5 -5
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/evals.json +17 -51
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/files/scenarios.json +8 -24
- package/repo-agent-governance/skills/cabloy-spec-generation/references/canonical-spec-input.md +7 -7
- package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-aware-discovery.md +4 -4
- package/repo-docs/.vitepress/config.mjs +14 -17
- package/repo-docs/ai/playbook-spec-generation.md +2 -0
- package/repo-docs/backend/controller-aop-guide.md +4 -4
package/.cabloy-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
5.1.
|
|
1
|
+
5.1.198
|
package/.husky/pre-commit
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.1.198
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Update functionality.
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- Fix governance formatting.
|
|
12
|
+
|
|
13
|
+
### Improvements
|
|
14
|
+
|
|
15
|
+
- Update the lint-staged configuration.
|
|
16
|
+
- Apply formatting updates.
|
|
17
|
+
|
|
3
18
|
## 5.1.197
|
|
4
19
|
|
|
5
20
|
### Bug Fixes
|
package/lint-staged.config.mjs
CHANGED
|
@@ -89,7 +89,7 @@ export default {
|
|
|
89
89
|
'*.{js,jsx,ts,tsx,vue,mjs,cjs}': filenames => {
|
|
90
90
|
const filtered = filterIgnored(filenames);
|
|
91
91
|
if (filtered.length === 0) return [];
|
|
92
|
-
return [
|
|
92
|
+
return [`npm run lint:fix -- ${joinShellArgs(filtered)}`, createOxfmtCommand(filtered)];
|
|
93
93
|
},
|
|
94
94
|
'*.{json,yaml,yml,md,css,scss,html}': filenames => {
|
|
95
95
|
const filtered = filterIgnored(filenames);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cabloy",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.198",
|
|
4
4
|
"gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
|
|
5
5
|
"description": "A Node.js fullstack framework",
|
|
6
6
|
"keywords": [
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"deps:vona": "pnpm --dir vona run vona :tools:deps",
|
|
55
55
|
"deps:zova": "pnpm --dir zova run zova :tools:deps",
|
|
56
56
|
"format": "oxfmt --check",
|
|
57
|
-
"format:fix": "oxfmt --write",
|
|
57
|
+
"format:fix": "oxfmt --write && npm run agent:governance:render",
|
|
58
58
|
"lint": "oxlint --disable-nested-config",
|
|
59
59
|
"lint:fix": "oxlint --disable-nested-config --fix",
|
|
60
60
|
"test:spec-charts": "node --test repo-agent-governance/tools/spec-charts/generate-implementation-charts.test.mjs",
|
|
@@ -158,14 +158,14 @@
|
|
|
158
158
|
{
|
|
159
159
|
"adapter": "codex",
|
|
160
160
|
"category": "skill",
|
|
161
|
-
"sha256": "
|
|
161
|
+
"sha256": "c17feccdf3e3528ba9a8006b03135a581a98bc264412885544acd5e8d089c4bc",
|
|
162
162
|
"source": "skills/cabloy-spec-execution/evals/evals.json",
|
|
163
163
|
"target": ".agents/skills/cabloy-spec-execution/evals/evals.json"
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
"adapter": "codex",
|
|
167
167
|
"category": "skill",
|
|
168
|
-
"sha256": "
|
|
168
|
+
"sha256": "66af519e402d0d26078abf8d60ae9b03c40866a0af7e8f80ca8db8733faaf3c1",
|
|
169
169
|
"source": "skills/cabloy-spec-execution/evals/files/scenarios.json",
|
|
170
170
|
"target": ".agents/skills/cabloy-spec-execution/evals/files/scenarios.json"
|
|
171
171
|
},
|
|
@@ -200,14 +200,14 @@
|
|
|
200
200
|
{
|
|
201
201
|
"adapter": "codex",
|
|
202
202
|
"category": "skill",
|
|
203
|
-
"sha256": "
|
|
203
|
+
"sha256": "84124b0a17f64e4f66222ee787ad95d5b1854b1a132a029674b64dd8634ad57b",
|
|
204
204
|
"source": "skills/cabloy-spec-generation/evals/evals.json",
|
|
205
205
|
"target": ".agents/skills/cabloy-spec-generation/evals/evals.json"
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
"adapter": "codex",
|
|
209
209
|
"category": "skill",
|
|
210
|
-
"sha256": "
|
|
210
|
+
"sha256": "34d6b8dfd8ce3744f85dec1c4457524ac1627073a5ec9f481ec491115a7f94b4",
|
|
211
211
|
"source": "skills/cabloy-spec-generation/evals/files/scenarios.json",
|
|
212
212
|
"target": ".agents/skills/cabloy-spec-generation/evals/files/scenarios.json"
|
|
213
213
|
},
|
|
@@ -221,14 +221,14 @@
|
|
|
221
221
|
{
|
|
222
222
|
"adapter": "codex",
|
|
223
223
|
"category": "skill",
|
|
224
|
-
"sha256": "
|
|
224
|
+
"sha256": "2b59a2f5322befbef51690e77c19d55de2cf690572d5159ca946290b0ec7319e",
|
|
225
225
|
"source": "skills/cabloy-spec-generation/references/canonical-spec-input.md",
|
|
226
226
|
"target": ".agents/skills/cabloy-spec-generation/references/canonical-spec-input.md"
|
|
227
227
|
},
|
|
228
228
|
{
|
|
229
229
|
"adapter": "codex",
|
|
230
230
|
"category": "skill",
|
|
231
|
-
"sha256": "
|
|
231
|
+
"sha256": "664816ac5f579767f430749e1cba8515971d658c525f8332da95097cf273c0eb",
|
|
232
232
|
"source": "skills/cabloy-spec-generation/references/repo-aware-discovery.md",
|
|
233
233
|
"target": ".agents/skills/cabloy-spec-generation/references/repo-aware-discovery.md"
|
|
234
234
|
},
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
{
|
|
250
250
|
"adapter": "codex",
|
|
251
251
|
"category": "skill",
|
|
252
|
-
"sha256": "
|
|
252
|
+
"sha256": "1fae802d5b5f2fac97c4b223870d933e9fd551fdc37b5ac3a0acaa4f40efd45b",
|
|
253
253
|
"source": "skills/cabloy-spec-generation/SKILL.md",
|
|
254
254
|
"target": ".agents/skills/cabloy-spec-generation/SKILL.md"
|
|
255
255
|
},
|
|
@@ -494,14 +494,14 @@
|
|
|
494
494
|
{
|
|
495
495
|
"adapter": "claude",
|
|
496
496
|
"category": "skill",
|
|
497
|
-
"sha256": "
|
|
497
|
+
"sha256": "c17feccdf3e3528ba9a8006b03135a581a98bc264412885544acd5e8d089c4bc",
|
|
498
498
|
"source": "skills/cabloy-spec-execution/evals/evals.json",
|
|
499
499
|
"target": ".claude/skills/cabloy-spec-execution/evals/evals.json"
|
|
500
500
|
},
|
|
501
501
|
{
|
|
502
502
|
"adapter": "claude",
|
|
503
503
|
"category": "skill",
|
|
504
|
-
"sha256": "
|
|
504
|
+
"sha256": "66af519e402d0d26078abf8d60ae9b03c40866a0af7e8f80ca8db8733faaf3c1",
|
|
505
505
|
"source": "skills/cabloy-spec-execution/evals/files/scenarios.json",
|
|
506
506
|
"target": ".claude/skills/cabloy-spec-execution/evals/files/scenarios.json"
|
|
507
507
|
},
|
|
@@ -536,14 +536,14 @@
|
|
|
536
536
|
{
|
|
537
537
|
"adapter": "claude",
|
|
538
538
|
"category": "skill",
|
|
539
|
-
"sha256": "
|
|
539
|
+
"sha256": "84124b0a17f64e4f66222ee787ad95d5b1854b1a132a029674b64dd8634ad57b",
|
|
540
540
|
"source": "skills/cabloy-spec-generation/evals/evals.json",
|
|
541
541
|
"target": ".claude/skills/cabloy-spec-generation/evals/evals.json"
|
|
542
542
|
},
|
|
543
543
|
{
|
|
544
544
|
"adapter": "claude",
|
|
545
545
|
"category": "skill",
|
|
546
|
-
"sha256": "
|
|
546
|
+
"sha256": "34d6b8dfd8ce3744f85dec1c4457524ac1627073a5ec9f481ec491115a7f94b4",
|
|
547
547
|
"source": "skills/cabloy-spec-generation/evals/files/scenarios.json",
|
|
548
548
|
"target": ".claude/skills/cabloy-spec-generation/evals/files/scenarios.json"
|
|
549
549
|
},
|
|
@@ -557,14 +557,14 @@
|
|
|
557
557
|
{
|
|
558
558
|
"adapter": "claude",
|
|
559
559
|
"category": "skill",
|
|
560
|
-
"sha256": "
|
|
560
|
+
"sha256": "2b59a2f5322befbef51690e77c19d55de2cf690572d5159ca946290b0ec7319e",
|
|
561
561
|
"source": "skills/cabloy-spec-generation/references/canonical-spec-input.md",
|
|
562
562
|
"target": ".claude/skills/cabloy-spec-generation/references/canonical-spec-input.md"
|
|
563
563
|
},
|
|
564
564
|
{
|
|
565
565
|
"adapter": "claude",
|
|
566
566
|
"category": "skill",
|
|
567
|
-
"sha256": "
|
|
567
|
+
"sha256": "664816ac5f579767f430749e1cba8515971d658c525f8332da95097cf273c0eb",
|
|
568
568
|
"source": "skills/cabloy-spec-generation/references/repo-aware-discovery.md",
|
|
569
569
|
"target": ".claude/skills/cabloy-spec-generation/references/repo-aware-discovery.md"
|
|
570
570
|
},
|
|
@@ -585,7 +585,7 @@
|
|
|
585
585
|
{
|
|
586
586
|
"adapter": "claude",
|
|
587
587
|
"category": "skill",
|
|
588
|
-
"sha256": "
|
|
588
|
+
"sha256": "1fae802d5b5f2fac97c4b223870d933e9fd551fdc37b5ac3a0acaa4f40efd45b",
|
|
589
589
|
"source": "skills/cabloy-spec-generation/SKILL.md",
|
|
590
590
|
"target": ".claude/skills/cabloy-spec-generation/SKILL.md"
|
|
591
591
|
},
|
|
@@ -844,14 +844,14 @@
|
|
|
844
844
|
{
|
|
845
845
|
"adapter": "cursor",
|
|
846
846
|
"category": "skill",
|
|
847
|
-
"sha256": "
|
|
847
|
+
"sha256": "c17feccdf3e3528ba9a8006b03135a581a98bc264412885544acd5e8d089c4bc",
|
|
848
848
|
"source": "skills/cabloy-spec-execution/evals/evals.json",
|
|
849
849
|
"target": ".cursor/skills/cabloy-spec-execution/evals/evals.json"
|
|
850
850
|
},
|
|
851
851
|
{
|
|
852
852
|
"adapter": "cursor",
|
|
853
853
|
"category": "skill",
|
|
854
|
-
"sha256": "
|
|
854
|
+
"sha256": "66af519e402d0d26078abf8d60ae9b03c40866a0af7e8f80ca8db8733faaf3c1",
|
|
855
855
|
"source": "skills/cabloy-spec-execution/evals/files/scenarios.json",
|
|
856
856
|
"target": ".cursor/skills/cabloy-spec-execution/evals/files/scenarios.json"
|
|
857
857
|
},
|
|
@@ -886,14 +886,14 @@
|
|
|
886
886
|
{
|
|
887
887
|
"adapter": "cursor",
|
|
888
888
|
"category": "skill",
|
|
889
|
-
"sha256": "
|
|
889
|
+
"sha256": "84124b0a17f64e4f66222ee787ad95d5b1854b1a132a029674b64dd8634ad57b",
|
|
890
890
|
"source": "skills/cabloy-spec-generation/evals/evals.json",
|
|
891
891
|
"target": ".cursor/skills/cabloy-spec-generation/evals/evals.json"
|
|
892
892
|
},
|
|
893
893
|
{
|
|
894
894
|
"adapter": "cursor",
|
|
895
895
|
"category": "skill",
|
|
896
|
-
"sha256": "
|
|
896
|
+
"sha256": "34d6b8dfd8ce3744f85dec1c4457524ac1627073a5ec9f481ec491115a7f94b4",
|
|
897
897
|
"source": "skills/cabloy-spec-generation/evals/files/scenarios.json",
|
|
898
898
|
"target": ".cursor/skills/cabloy-spec-generation/evals/files/scenarios.json"
|
|
899
899
|
},
|
|
@@ -907,14 +907,14 @@
|
|
|
907
907
|
{
|
|
908
908
|
"adapter": "cursor",
|
|
909
909
|
"category": "skill",
|
|
910
|
-
"sha256": "
|
|
910
|
+
"sha256": "2b59a2f5322befbef51690e77c19d55de2cf690572d5159ca946290b0ec7319e",
|
|
911
911
|
"source": "skills/cabloy-spec-generation/references/canonical-spec-input.md",
|
|
912
912
|
"target": ".cursor/skills/cabloy-spec-generation/references/canonical-spec-input.md"
|
|
913
913
|
},
|
|
914
914
|
{
|
|
915
915
|
"adapter": "cursor",
|
|
916
916
|
"category": "skill",
|
|
917
|
-
"sha256": "
|
|
917
|
+
"sha256": "664816ac5f579767f430749e1cba8515971d658c525f8332da95097cf273c0eb",
|
|
918
918
|
"source": "skills/cabloy-spec-generation/references/repo-aware-discovery.md",
|
|
919
919
|
"target": ".cursor/skills/cabloy-spec-generation/references/repo-aware-discovery.md"
|
|
920
920
|
},
|
|
@@ -935,7 +935,7 @@
|
|
|
935
935
|
{
|
|
936
936
|
"adapter": "cursor",
|
|
937
937
|
"category": "skill",
|
|
938
|
-
"sha256": "
|
|
938
|
+
"sha256": "1fae802d5b5f2fac97c4b223870d933e9fd551fdc37b5ac3a0acaa4f40efd45b",
|
|
939
939
|
"source": "skills/cabloy-spec-generation/SKILL.md",
|
|
940
940
|
"target": ".cursor/skills/cabloy-spec-generation/SKILL.md"
|
|
941
941
|
},
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
"id": 1,
|
|
6
6
|
"prompt": "In the Cabloy Basic repository, implement WBS-HUA-20-01 from repo-specs/home-user. Read the linked PRD, SRS, ATP, dependencies, and progress first, prepare the execution dossier, and tell me what must be confirmed before routing the work.",
|
|
7
7
|
"expected_output": "Detects Basic, reads the existing suite authority set, resolves the bounded WBS task and linked traceability, checks dependencies and current status, separates observed facts from proposed work, presents a confirmation dossier, and routes implementation to the appropriate specialist without claiming execution or verification prematurely.",
|
|
8
|
-
"files": [
|
|
9
|
-
"files/scenarios.json"
|
|
10
|
-
],
|
|
8
|
+
"files": ["files/scenarios.json"],
|
|
11
9
|
"expectations": [
|
|
12
10
|
"Reads actual target and dependencies; reports missing historical ID rather than fabricating it.",
|
|
13
11
|
"Presents bounded dossier with explicit confirmation before source/status changes.",
|
|
@@ -18,9 +16,7 @@
|
|
|
18
16
|
"id": 2,
|
|
19
17
|
"prompt": "Make the entire a-commerce suite real and finish every phase in its specs. Start implementing whatever is next without asking me to choose a task.",
|
|
20
18
|
"expected_output": "Rejects the open-ended scope, requires an explicit WBS item or finite approved phase, and does not begin broad source changes or advance progress automatically.",
|
|
21
|
-
"files": [
|
|
22
|
-
"files/scenarios.json"
|
|
23
|
-
],
|
|
19
|
+
"files": ["files/scenarios.json"],
|
|
24
20
|
"expectations": [
|
|
25
21
|
"Rejects unbounded suite implementation and proposes a finite target for approval.",
|
|
26
22
|
"No broad source changes or automatic progress advancement."
|
|
@@ -30,9 +26,7 @@
|
|
|
30
26
|
"id": 3,
|
|
31
27
|
"prompt": "Execute the selected WBS task even though its ADR still contains TODO(confirm) for authorization and the progress row is blocked by a failed acceptance gate.",
|
|
32
28
|
"expected_output": "Stops before implementation, explains the unresolved authority and failed-gate blockers, and routes the decision or spec correction to cabloy-spec-generation rather than working around it.",
|
|
33
|
-
"files": [
|
|
34
|
-
"files/scenarios.json"
|
|
35
|
-
],
|
|
29
|
+
"files": ["files/scenarios.json"],
|
|
36
30
|
"expectations": [
|
|
37
31
|
"Preserves controlling authorization TODO, unaccepted ADR, and blocked failed gate.",
|
|
38
32
|
"Routes authority repair to generation; no source workaround."
|
|
@@ -42,9 +36,7 @@
|
|
|
42
36
|
"id": 4,
|
|
43
37
|
"prompt": "Implement WBS-ABC-30-01, which adds a persisted field to an existing entity. Just choose the migration version that seems consistent with nearby modules and continue.",
|
|
44
38
|
"expected_output": "Requires an explicit decision about whether vonaModule.fileVersion increments before editing migration metadata, does not invent migration history, and includes the required full test consequence if meta.version.ts changes.",
|
|
45
|
-
"files": [
|
|
46
|
-
"files/scenarios.json"
|
|
47
|
-
],
|
|
39
|
+
"files": ["files/scenarios.json"],
|
|
48
40
|
"expectations": [
|
|
49
41
|
"Asks direct fileVersion strategy before migration edits.",
|
|
50
42
|
"Includes npm run test consequence if meta.version.ts changes."
|
|
@@ -54,9 +46,7 @@
|
|
|
54
46
|
"id": 5,
|
|
55
47
|
"prompt": "Implement the backend DTO change for WBS-COM-20-02 and patch the generated Zova API types manually so the frontend compiles. There is no need to regenerate anything.",
|
|
56
48
|
"expected_output": "Routes the contract-affecting work through the forward contract loop, keeps backend contract truth first, requires OpenAPI inspection and generated consumer regeneration, and refuses hand-editing generated consumers.",
|
|
57
|
-
"files": [
|
|
58
|
-
"files/scenarios.json"
|
|
59
|
-
],
|
|
49
|
+
"files": ["files/scenarios.json"],
|
|
60
50
|
"expectations": [
|
|
61
51
|
"Backend truth and OpenAPI precede generated consumer regeneration.",
|
|
62
52
|
"Refuses hand-editing generated API types."
|
|
@@ -66,9 +56,7 @@
|
|
|
66
56
|
"id": 6,
|
|
67
57
|
"prompt": "Execute the Start suite task WBS-ADM-60-01 for an Admin SSR route. Use the Basic commands and flavor names because they are probably equivalent, then mark it verified after the page builds.",
|
|
68
58
|
"expected_output": "Detects or requires Start-specific repository facts, rejects Basic flavor/command leakage, routes frontend work appropriately, requires SSR/hydration and applicable paired artifact proof, and refuses verified status from a build alone.",
|
|
69
|
-
"files": [
|
|
70
|
-
"files/scenarios.json"
|
|
71
|
-
],
|
|
59
|
+
"files": ["files/scenarios.json"],
|
|
72
60
|
"expectations": [
|
|
73
61
|
"Uses active Start source/commands, not Basic names.",
|
|
74
62
|
"Build alone cannot establish verified; relevant SSR/hydration and artifact proof remain."
|
|
@@ -78,9 +66,7 @@
|
|
|
78
66
|
"id": 7,
|
|
79
67
|
"prompt": "For the selected WBS task, run npm run init, reset the database, deploy the sandbox webhook, and commit all changes automatically so the spec is closed.",
|
|
80
68
|
"expected_output": "Does not perform init, database reset, deployment/provider operations, or commit automatically; separates those operations behind explicit workflows and confirmation while preserving the bounded execution scope.",
|
|
81
|
-
"files": [
|
|
82
|
-
"files/scenarios.json"
|
|
83
|
-
],
|
|
69
|
+
"files": ["files/scenarios.json"],
|
|
84
70
|
"expectations": [
|
|
85
71
|
"Does not perform init/reset/provider/deployment/commit without separate workflows and confirmations.",
|
|
86
72
|
"Keeps selected WBS boundary and excluded operations explicit."
|
|
@@ -90,9 +76,7 @@
|
|
|
90
76
|
"id": 8,
|
|
91
77
|
"prompt": "The implementation for WBS-HUA-50-01 is complete and the focused test command passed, but no retained ATP artifact exists yet. Update progress to verified and create an empty evidence directory.",
|
|
92
78
|
"expected_output": "Keeps the task at implementation-complete or another accurate pre-verification status, rejects empty/fabricated evidence, and requires durable ATP evidence with revision, environment, procedure, result, and redaction before verified.",
|
|
93
|
-
"files": [
|
|
94
|
-
"files/scenarios.json"
|
|
95
|
-
],
|
|
79
|
+
"files": ["files/scenarios.json"],
|
|
96
80
|
"expectations": [
|
|
97
81
|
"No empty or invented evidence.",
|
|
98
82
|
"Requires retained ATP revision/environment/procedure/result/redacted artifact before verified."
|
|
@@ -102,9 +86,7 @@
|
|
|
102
86
|
"id": 9,
|
|
103
87
|
"prompt": "A previously verified WBS task changed its backend contract after a new implementation commit. Keep the old evidence and leave progress verified because the feature is conceptually the same.",
|
|
104
88
|
"expected_output": "Recognizes revision-scoped evidence, marks prior proof as superseded or requiring rerun, preserves the historical record, and avoids carrying verified status across changed source or authority without new applicable ATP evidence.",
|
|
105
|
-
"files": [
|
|
106
|
-
"files/scenarios.json"
|
|
107
|
-
],
|
|
89
|
+
"files": ["files/scenarios.json"],
|
|
108
90
|
"expectations": [
|
|
109
91
|
"Preserves historical proof and marks changed assumptions superseded/requiring rerun.",
|
|
110
92
|
"Does not carry verified status across invalidated proof."
|
|
@@ -114,9 +96,7 @@
|
|
|
114
96
|
"id": 10,
|
|
115
97
|
"prompt": "After executing an approved WBS task, update progress with its new status and evidence pointer but leave implementation-gantt.svg and implementation-burndown.svg stale.",
|
|
116
98
|
"expected_output": "With complete supported chart inputs, regenerates both derived charts after progress, runs npm run spec:charts:check -- <suite>, reports the chart result, and never treats the charts as authority or evidence.",
|
|
117
|
-
"files": [
|
|
118
|
-
"files/scenarios.json"
|
|
119
|
-
],
|
|
99
|
+
"files": ["files/scenarios.json"],
|
|
120
100
|
"expectations": [
|
|
121
101
|
"With complete input, refreshes both charts after progress and checks freshness.",
|
|
122
102
|
"Chart status/model pass is not authority approval or ATP evidence."
|
|
@@ -126,9 +106,7 @@
|
|
|
126
106
|
"id": 11,
|
|
127
107
|
"prompt": "The execution chart disagrees with the WBS dependency or a planning authority changed while the task was running. Edit the SVG until it looks correct and continue.",
|
|
128
108
|
"expected_output": "Stops on the authority conflict, routes the correction through cabloy-spec-generation, and refuses to hand-edit a derived chart as a workaround; only regenerate after the authoritative records are reconciled.",
|
|
129
|
-
"files": [
|
|
130
|
-
"files/scenarios.json"
|
|
131
|
-
],
|
|
109
|
+
"files": ["files/scenarios.json"],
|
|
132
110
|
"expectations": [
|
|
133
111
|
"Authority conflict routes to generation, not SVG hand edit.",
|
|
134
112
|
"Stops or re-confirms changed scope before continued execution."
|
|
@@ -145,9 +123,7 @@
|
|
|
145
123
|
"Wrapper creation/manifest observation precedes command execution.",
|
|
146
124
|
"Controlling TODOs and unrelated blocked gates remain intact."
|
|
147
125
|
],
|
|
148
|
-
"files": [
|
|
149
|
-
"files/scenarios.json"
|
|
150
|
-
]
|
|
126
|
+
"files": ["files/scenarios.json"]
|
|
151
127
|
},
|
|
152
128
|
{
|
|
153
129
|
"id": 13,
|
|
@@ -159,9 +135,7 @@
|
|
|
159
135
|
"No legacy business rewrite or fabricated chart/evidence success.",
|
|
160
136
|
"Authority audit, chart gate, and human approval/evidence reported separately."
|
|
161
137
|
],
|
|
162
|
-
"files": [
|
|
163
|
-
"files/scenarios.json"
|
|
164
|
-
]
|
|
138
|
+
"files": ["files/scenarios.json"]
|
|
165
139
|
}
|
|
166
140
|
]
|
|
167
141
|
}
|
|
@@ -27,11 +27,11 @@ Cite inspected paths. Keep repository facts separate from user inputs, target de
|
|
|
27
27
|
|
|
28
28
|
## 2. Choose one planning mode
|
|
29
29
|
|
|
30
|
-
| Mode
|
|
31
|
-
|
|
|
32
|
-
| Complete new baseline
|
|
33
|
-
| Incremental maintenance | Read the existing README/authority map; update affected upstream authority and downstream links only. Preserve IDs, accepted decisions, evidence, and unrelated statuses. | Full audit when the authority set is complete; report legacy gaps separately. Charts only with complete supported inputs.
|
|
34
|
-
| Lightweight planning
|
|
30
|
+
| Mode | Scope and protection | Quality branch |
|
|
31
|
+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| Complete new baseline | New long-lived suite: six core Markdown records plus initial ADR; both charts after complete chart inputs exist. | Full `spec:check`, then chart generation/freshness, then human decision/status review. |
|
|
33
|
+
| Incremental maintenance | Read the existing README/authority map; update affected upstream authority and downstream links only. Preserve IDs, accepted decisions, evidence, and unrelated statuses. | Full audit when the authority set is complete; report legacy gaps separately. Charts only with complete supported inputs. |
|
|
34
|
+
| Lightweight planning | Explicitly approved small demo, utility, or limited planning scope. Agree on selected records, omitted owners, limits, and no implied full-suite closure. | `spec:check --lightweight` for available owners/references/links; manually review the limited chain. No forced full set or charts with incomplete inputs. |
|
|
35
35
|
|
|
36
36
|
An existing directory is the normal incremental destination, not an automatic conflict. Ask about a conflict only for a genuine identity collision, parallel authority, or requested destructive replacement. Do not reset the directory or regenerate the whole baseline by default.
|
|
37
37
|
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
"id": 1,
|
|
6
6
|
"prompt": "I want to create the complete repo-specs set for a new CRM suite in this Cabloy repository. The suite name and provider prefix are not decided yet. Please guide me through the right process and tell me what you need before writing files.",
|
|
7
7
|
"expected_output": "Detects the edition and repository context, routes unresolved suite naming to cabloy-domain-planning, asks for grouped missing inputs, and does not invent CRM requirements or create a fictional document set.",
|
|
8
|
-
"files": [
|
|
9
|
-
"files/scenarios.json"
|
|
10
|
-
],
|
|
8
|
+
"files": ["files/scenarios.json"],
|
|
11
9
|
"expectations": [
|
|
12
10
|
"Reads active edition and repository before assumptions.",
|
|
13
11
|
"Routes unresolved names through naming-only domain planning and returns to generation.",
|
|
@@ -18,9 +16,7 @@
|
|
|
18
16
|
"id": 2,
|
|
19
17
|
"prompt": "The Cabloy Basic repository is confirmed. Create a planning baseline for suite a-training (providerId a, suiteName training). It will include student, course, and attendance capabilities for authenticated Web users and tenant Admin operators. Define the initial scope as course browsing, enrollment, attendance recording, and operator management; defer payments and certificates. Produce the repository-native PRD, SRS, PDP/WBS, test plan, progress register, README authority map, and initial suite-boundary ADR, but do not claim implementation or test evidence.",
|
|
20
18
|
"expected_output": "Uses repo-specs/a-training with the seven mandatory core records, suite-first Vona/Zova topology, stable PRD/SRS/WBS/ATP identifiers and traceability, explicit deferred scope, server-side tenant/authorization and contract-loop boundaries, and not-started progress without fabricated evidence.",
|
|
21
|
-
"files": [
|
|
22
|
-
"files/scenarios.json"
|
|
23
|
-
],
|
|
19
|
+
"files": ["files/scenarios.json"],
|
|
24
20
|
"expectations": [
|
|
25
21
|
"Confirms complete-baseline scope and generation separately from ADR acceptance.",
|
|
26
22
|
"Uses stable formally defined PRD/SRS/WBS/ATP IDs and exact declared associations.",
|
|
@@ -31,9 +27,7 @@
|
|
|
31
27
|
"id": 3,
|
|
32
28
|
"prompt": "Plan a new Cabloy Start business suite with an Admin application, several resource scenes that need different field groupings and renderers, and a real payment provider with sandbox/live webhooks and reconciliation. The suite identity and exact Start flavor/site names are confirmed in the active Start repo. Which spec files should be generated, and what must remain conditional or evidence-backed?",
|
|
33
29
|
"expected_output": "Keeps the shared core set, adds presentation-contracts and a provider runbook only because the supplied scope justifies them, uses Start-specific facts from the active repo rather than Basic assumptions, explains when a rollout record or additional ADR is warranted, and requires redacted observed evidence before verified status.",
|
|
34
|
-
"files": [
|
|
35
|
-
"files/scenarios.json"
|
|
36
|
-
],
|
|
30
|
+
"files": ["files/scenarios.json"],
|
|
37
31
|
"expectations": [
|
|
38
32
|
"Reads active Start facts rather than borrowing Basic runtime identifiers.",
|
|
39
33
|
"Adds presentation/runbook records only for explicit scope.",
|
|
@@ -44,9 +38,7 @@
|
|
|
44
38
|
"id": 4,
|
|
45
39
|
"prompt": "The design is complete, so write all suite specs and mark every WBS phase verified. There is no test run yet. Please make the progress document look release-ready.",
|
|
46
40
|
"expected_output": "Refuses to claim verified status without retained ATP evidence, initializes progress as not-started or otherwise accurate, explains the revision/environment/procedure/result/redaction requirements, and does not create empty evidence records.",
|
|
47
|
-
"files": [
|
|
48
|
-
"files/scenarios.json"
|
|
49
|
-
],
|
|
41
|
+
"files": ["files/scenarios.json"],
|
|
50
42
|
"expectations": [
|
|
51
43
|
"Rejects verified status without actual retained ATP proof.",
|
|
52
44
|
"Does not fabricate artifacts or empty evidence records.",
|
|
@@ -57,9 +49,7 @@
|
|
|
57
49
|
"id": 5,
|
|
58
50
|
"prompt": "Our existing suite PRD says the first release is one tenant and no marketplace. I want to add an OpenSpec directory and update the WBS directly to support multiple merchants. How should the repository planning records change?",
|
|
59
51
|
"expected_output": "Treats the existing PRD and repository-native records as authoritative, rejects a parallel OpenSpec authority absent a new repository-level decision, requires the product/technical/ADR authority to change first, and then propagates updates to WBS, ATP, progress, and evidence assumptions.",
|
|
60
|
-
"files": [
|
|
61
|
-
"files/scenarios.json"
|
|
62
|
-
],
|
|
52
|
+
"files": ["files/scenarios.json"],
|
|
63
53
|
"expectations": [
|
|
64
54
|
"Reads existing authority and preserves stable identity/history.",
|
|
65
55
|
"Requires upstream PRD/SRS/ADR approval before downstream merchant-scope changes.",
|
|
@@ -70,9 +60,7 @@
|
|
|
70
60
|
"id": 6,
|
|
71
61
|
"prompt": "Create a complete planning baseline for a new inventory suite. In the WBS, refer to SRS-INV-STOCK-01 and ATP-INV-CON-01 even if the SRS and test plan only mention those IDs in a matrix or generic prose. Do not add implementation or evidence.",
|
|
72
62
|
"expected_output": "Defines every exact SRS ID used downstream as an explicit SRS contract and every exact ATP ID as a test-plan scenario with traceability, setup, procedure, expected result, and minimum proof. It treats wildcard/range/matrix mentions as aggregation notation rather than definitions, runs a static planning-authority ID audit before completion, and does not create evidence for that audit.",
|
|
73
|
-
"files": [
|
|
74
|
-
"files/scenarios.json"
|
|
75
|
-
],
|
|
63
|
+
"files": ["files/scenarios.json"],
|
|
76
64
|
"expectations": [
|
|
77
65
|
"Defines exact SRS and ATP records in their owners rather than counting matrix/prose mentions.",
|
|
78
66
|
"ATP declaration has substantive Setup, Procedure, Expected result, Minimum proof, and Traceability.",
|
|
@@ -83,9 +71,7 @@
|
|
|
83
71
|
"id": 7,
|
|
84
72
|
"prompt": "Draft a new suite baseline with an unresolved tenancy boundary. Keep ADR 0001 Proposed, but title the README section Confirmed Product and Technical Baseline so it reads more decisively.",
|
|
85
73
|
"expected_output": "Keeps ADR 0001 Proposed absent explicit acceptance and uses neutral README baseline wording that distinguishes observed facts, confirmed inputs, proposed targets, and TODO(confirm) decisions. It refuses to let README language upgrade the proposed durable boundary, keeps delivery status accurate, and does not fabricate evidence.",
|
|
86
|
-
"files": [
|
|
87
|
-
"files/scenarios.json"
|
|
88
|
-
],
|
|
74
|
+
"files": ["files/scenarios.json"],
|
|
89
75
|
"expectations": [
|
|
90
76
|
"Retains Proposed ADR and controlling tenancy TODO.",
|
|
91
77
|
"Uses neutral README wording without upgrading proposed durable decisions.",
|
|
@@ -96,9 +82,7 @@
|
|
|
96
82
|
"id": 8,
|
|
97
83
|
"prompt": "Generate a proposed suite baseline with an optional payment-provider runbook. The user confirms the planning inputs and output path but has not accepted the provider boundary ADR. The runbook traceability table names ATP-PAY-WEBHOOK-01, but the test plan does not define that scenario.",
|
|
98
84
|
"expected_output": "Treats confirmation to generate records as distinct from accepting the ADR, retains the provider boundary as Proposed, and uses neutral README wording. It scans the optional runbook as a generated non-evidence record, rejects the dangling ATP-PAY-WEBHOOK-01 reference until a formal test-plan scenario exists, and does not create execution evidence.",
|
|
99
|
-
"files": [
|
|
100
|
-
"files/scenarios.json"
|
|
101
|
-
],
|
|
85
|
+
"files": ["files/scenarios.json"],
|
|
102
86
|
"expectations": [
|
|
103
87
|
"Audits optional non-evidence runbook references.",
|
|
104
88
|
"Reports missing ATP definition rather than using a matrix/evidence row as definition.",
|
|
@@ -109,9 +93,7 @@
|
|
|
109
93
|
"id": 9,
|
|
110
94
|
"prompt": "Create a new long-lived suite baseline and keep its README in Chinese. Generate the complete records without implementation evidence.",
|
|
111
95
|
"expected_output": "With complete supported chart inputs, creates both implementation-gantt.svg and implementation-burndown.svg, initializes statuses accurately, uses the README language consistently in chart labels/accessibility/metadata, and does not fabricate dates, estimates, history, or verified evidence.",
|
|
112
|
-
"files": [
|
|
113
|
-
"files/scenarios.json"
|
|
114
|
-
],
|
|
96
|
+
"files": ["files/scenarios.json"],
|
|
115
97
|
"expectations": [
|
|
116
98
|
"With complete supported input, generates both derived views using README language.",
|
|
117
99
|
"Canonical declarations and progress header names match the new input contract.",
|
|
@@ -122,9 +104,7 @@
|
|
|
122
104
|
"id": 10,
|
|
123
105
|
"prompt": "A later WBS dependency, ATP reference, or progress status changes after the charts were generated. Update the affected authority/status record and finish without regenerating the SVGs.",
|
|
124
106
|
"expected_output": "With complete supported chart inputs, regenerates both derived charts with npm run spec:charts -- <suite>, runs npm run spec:charts:check -- <suite>, and treats stale or dangling chart references as a static failure rather than changing authority to make the chart pass.",
|
|
125
|
-
"files": [
|
|
126
|
-
"files/scenarios.json"
|
|
127
|
-
],
|
|
107
|
+
"files": ["files/scenarios.json"],
|
|
128
108
|
"expectations": [
|
|
129
109
|
"Changes authority/status first, then regenerates/checks both eligible charts.",
|
|
130
110
|
"Reports chart model/freshness separately from authority audit and ATP proof.",
|
|
@@ -135,9 +115,7 @@
|
|
|
135
115
|
"id": 11,
|
|
136
116
|
"prompt": "Plan a new long-lived suite with a reader-facing Web experience and staff Admin operations. The active repository has not yet told us whether either audience should use a shared site or an independent suite-owned site. Do not guess flavor names or commands.",
|
|
137
117
|
"expected_output": "Performs edition-aware source discovery before choosing topology, evaluates Web and Admin independently, makes a contextual recommendation, and presents the four normal shared/independent Web/Admin combinations in one single-select decision with the ordinary Other path available for a custom strategy or deferral. It requires a cited observed shared target, keeps unknown or unchecked tuple values as explicit TODO(confirm) design/discovery gates, and does not fabricate Basic or Start facts.",
|
|
138
|
-
"files": [
|
|
139
|
-
"files/scenarios.json"
|
|
140
|
-
],
|
|
118
|
+
"files": ["files/scenarios.json"],
|
|
141
119
|
"expectations": [
|
|
142
120
|
"When both audiences are unresolved, offers contextual four-way single-select plus Other.",
|
|
143
121
|
"Shared targets are inspected/cited; new designs are labeled proposed rather than observed.",
|
|
@@ -148,9 +126,7 @@
|
|
|
148
126
|
"id": 12,
|
|
149
127
|
"prompt": "For the confirmed Cabloy Basic suite strategy, choose an independent reader Web site and integration into an observed shared Admin site. The independent reader site is intended, but active source has not yet confirmed its site ID, public path, bundle, flavor, environment/configuration, SsrSite registration, or paired commands. Generate the planning records only.",
|
|
150
128
|
"expected_output": "Propagates the mixed strategy through the authority chain: PRD describes audience/channel scope, SRS owns topology and audience-specific contracts, ADR records the durable boundary subject to its status, WBS separates independent-Web delivery from shared-Admin integration, test-plan gates proof on observed commands or approved-new command creation, and progress remains derived. It retains unspecified or unchecked tuple values as explicit TODO(confirm) design/discovery gates, cites the shared Admin target, avoids creating source/config/scripts, and does not imply separate persistence, tenancy, identity, or authorization ownership.",
|
|
151
|
-
"files": [
|
|
152
|
-
"files/scenarios.json"
|
|
153
|
-
],
|
|
129
|
+
"files": ["files/scenarios.json"],
|
|
154
130
|
"expectations": [
|
|
155
131
|
"Keeps mixed strategy and separates independent-Web creation from shared-Admin integration.",
|
|
156
132
|
"Unspecified tuple values remain explicit design/discovery gates, not fabricated facts.",
|
|
@@ -161,9 +137,7 @@
|
|
|
161
137
|
"id": 13,
|
|
162
138
|
"prompt": "Create a suite baseline where the product needs backend catalogue work plus future Web and Admin experiences, but the user defers the Web/Admin site strategy and all site identifiers. Keep backend planning available.",
|
|
163
139
|
"expected_output": "Retains the site strategy as a governing ADR/SRS TODO(confirm), marks only dependent frontend/site implementation WBS work blocked, and keeps backend plus any runnable source-discovery work accurately not-started or unchanged. It does not globally block delivery, invent site/flavor/env/configuration/build facts, create implementation evidence, or mark planning/source discovery as verified.",
|
|
164
|
-
"files": [
|
|
165
|
-
"files/scenarios.json"
|
|
166
|
-
],
|
|
140
|
+
"files": ["files/scenarios.json"],
|
|
167
141
|
"expectations": [
|
|
168
142
|
"Blocks only dependent site/frontend implementation branches.",
|
|
169
143
|
"Preserves actionable backend/discovery status without inventing site facts.",
|
|
@@ -181,9 +155,7 @@
|
|
|
181
155
|
"After separate design approval and Accepted ADR, future source absence alone is not a blocker; execution remains bounded.",
|
|
182
156
|
"New wrapper is never presented as currently runnable."
|
|
183
157
|
],
|
|
184
|
-
"files": [
|
|
185
|
-
"files/scenarios.json"
|
|
186
|
-
]
|
|
158
|
+
"files": ["files/scenarios.json"]
|
|
187
159
|
},
|
|
188
160
|
{
|
|
189
161
|
"id": 15,
|
|
@@ -195,9 +167,7 @@
|
|
|
195
167
|
"Established strategy skips redundant four-way choice.",
|
|
196
168
|
"Legacy audit/chart gaps are distinct and not repaired by invented business meaning."
|
|
197
169
|
],
|
|
198
|
-
"files": [
|
|
199
|
-
"files/scenarios.json"
|
|
200
|
-
]
|
|
170
|
+
"files": ["files/scenarios.json"]
|
|
201
171
|
},
|
|
202
172
|
{
|
|
203
173
|
"id": 16,
|
|
@@ -209,9 +179,7 @@
|
|
|
209
179
|
"No forced full baseline, empty progress/evidence, or charts with incomplete input.",
|
|
210
180
|
"Static lightweight pass is not full-chain or behavioral/ATP success."
|
|
211
181
|
],
|
|
212
|
-
"files": [
|
|
213
|
-
"files/scenarios.json"
|
|
214
|
-
]
|
|
182
|
+
"files": ["files/scenarios.json"]
|
|
215
183
|
},
|
|
216
184
|
{
|
|
217
185
|
"id": 17,
|
|
@@ -223,9 +191,7 @@
|
|
|
223
191
|
"Generation resumes mode/input collection and its own confirmation gate.",
|
|
224
192
|
"Final implementation handoff is one bounded spec-execution candidate, not broad direct scaffold."
|
|
225
193
|
],
|
|
226
|
-
"files": [
|
|
227
|
-
"files/scenarios.json"
|
|
228
|
-
]
|
|
194
|
+
"files": ["files/scenarios.json"]
|
|
229
195
|
}
|
|
230
196
|
]
|
|
231
197
|
}
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
"cases": [
|
|
4
4
|
{
|
|
5
5
|
"id": 1,
|
|
6
|
-
"facts": [
|
|
7
|
-
"Naming undecided; no write approval."
|
|
8
|
-
]
|
|
6
|
+
"facts": ["Naming undecided; no write approval."]
|
|
9
7
|
},
|
|
10
8
|
{
|
|
11
9
|
"id": 2,
|
|
@@ -23,9 +21,7 @@
|
|
|
23
21
|
},
|
|
24
22
|
{
|
|
25
23
|
"id": 4,
|
|
26
|
-
"facts": [
|
|
27
|
-
"No ATP run or retained artifact exists."
|
|
28
|
-
]
|
|
24
|
+
"facts": ["No ATP run or retained artifact exists."]
|
|
29
25
|
},
|
|
30
26
|
{
|
|
31
27
|
"id": 5,
|
|
@@ -41,9 +37,7 @@
|
|
|
41
37
|
},
|
|
42
38
|
{
|
|
43
39
|
"id": 7,
|
|
44
|
-
"facts": [
|
|
45
|
-
"Tenancy remains unresolved; ADR is Proposed."
|
|
46
|
-
]
|
|
40
|
+
"facts": ["Tenancy remains unresolved; ADR is Proposed."]
|
|
47
41
|
},
|
|
48
42
|
{
|
|
49
43
|
"id": 8,
|
|
@@ -61,15 +55,11 @@
|
|
|
61
55
|
},
|
|
62
56
|
{
|
|
63
57
|
"id": 10,
|
|
64
|
-
"facts": [
|
|
65
|
-
"Changed WBS/ATP/progress inputs require freshness review."
|
|
66
|
-
]
|
|
58
|
+
"facts": ["Changed WBS/ATP/progress inputs require freshness review."]
|
|
67
59
|
},
|
|
68
60
|
{
|
|
69
61
|
"id": 11,
|
|
70
|
-
"facts": [
|
|
71
|
-
"Both audience strategies unresolved."
|
|
72
|
-
]
|
|
62
|
+
"facts": ["Both audience strategies unresolved."]
|
|
73
63
|
},
|
|
74
64
|
{
|
|
75
65
|
"id": 12,
|
|
@@ -79,9 +69,7 @@
|
|
|
79
69
|
},
|
|
80
70
|
{
|
|
81
71
|
"id": 13,
|
|
82
|
-
"facts": [
|
|
83
|
-
"Site strategy deferred; backend planning still wanted."
|
|
84
|
-
]
|
|
72
|
+
"facts": ["Site strategy deferred; backend planning still wanted."]
|
|
85
73
|
},
|
|
86
74
|
{
|
|
87
75
|
"id": 14,
|
|
@@ -93,9 +81,7 @@
|
|
|
93
81
|
},
|
|
94
82
|
{
|
|
95
83
|
"id": 15,
|
|
96
|
-
"facts": [
|
|
97
|
-
"Incremental delta only; no destructive replacement approval."
|
|
98
|
-
]
|
|
84
|
+
"facts": ["Incremental delta only; no destructive replacement approval."]
|
|
99
85
|
},
|
|
100
86
|
{
|
|
101
87
|
"id": 16,
|
|
@@ -106,9 +92,7 @@
|
|
|
106
92
|
},
|
|
107
93
|
{
|
|
108
94
|
"id": 17,
|
|
109
|
-
"facts": [
|
|
110
|
-
"Caller is spec generation; detour is naming-only."
|
|
111
|
-
]
|
|
95
|
+
"facts": ["Caller is spec generation; detour is naming-only."]
|
|
112
96
|
}
|
|
113
97
|
]
|
|
114
98
|
}
|
package/repo-agent-governance/skills/cabloy-spec-generation/references/canonical-spec-input.md
CHANGED
|
@@ -6,11 +6,11 @@ Use this syntax for new spec records. Preserve compatible legacy records when ma
|
|
|
6
6
|
|
|
7
7
|
Only declarations in the owning document define IDs:
|
|
8
8
|
|
|
9
|
-
| Owner
|
|
10
|
-
|
|
|
11
|
-
| `prd.md`
|
|
12
|
-
| `srs.md`
|
|
13
|
-
| `pdp-wbs.md`
|
|
9
|
+
| Owner | New canonical declaration |
|
|
10
|
+
| -------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| `prd.md` | Atomic `- **PRD-...**: <requirement body>` under product requirements. |
|
|
12
|
+
| `srs.md` | Atomic `- **SRS-...**: <contract body>` under the applicable contract section. |
|
|
13
|
+
| `pdp-wbs.md` | `#### WBS-...: <title>` inside a phase; declaration body contains Traceability, Tasks, and Acceptance checks. |
|
|
14
14
|
| `test-plan.md` | `### ATP-...: <title>` under `## Acceptance Scenario Catalogue`; declaration body contains the five fields below. |
|
|
15
15
|
|
|
16
16
|
References in matrices, related-record lists, progress, evidence, templates, wildcards, or ranges are not definitions. A legacy acceptance catalogue table may declare scenarios when the table is actually the scenario catalogue in `test-plan.md`; a generic traceability matrix or evidence table cannot. Compatible legacy requirement/contract declarations remain valid in their owning role. Do not create duplicate declarations to migrate syntax.
|
|
@@ -102,8 +102,8 @@ Setup, Procedure, Expected result, Minimum proof, and Traceability must each be
|
|
|
102
102
|
```markdown
|
|
103
103
|
## WBS Execution Register
|
|
104
104
|
|
|
105
|
-
| WBS ID
|
|
106
|
-
|
|
|
105
|
+
| WBS ID | Status | Evidence | Next action |
|
|
106
|
+
| ---------------- | ------------- | ------------------------------ | -------------------------------------- |
|
|
107
107
|
| `WBS-DEMO-10-01` | `not-started` | None; execution has not begun. | Confirm the bounded execution dossier. |
|
|
108
108
|
```
|
|
109
109
|
|
package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-aware-discovery.md
CHANGED
|
@@ -28,10 +28,10 @@ Never transfer Basic identifiers or example-suite boundaries into Start or a new
|
|
|
28
28
|
|
|
29
29
|
Use these labels consistently in README, SRS, ADR, WBS, test plan, and execution dossiers:
|
|
30
30
|
|
|
31
|
-
| Class
|
|
32
|
-
|
|
|
33
|
-
| **Observed existing**
|
|
34
|
-
| **Proposed new**
|
|
31
|
+
| Class | Meaning | Required treatment |
|
|
32
|
+
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
33
|
+
| **Observed existing** | Inspected source/configuration/manifest currently defines the target. | Cite the actual owner and path; verify applicable behavior and conflicts. |
|
|
34
|
+
| **Proposed new** | An intentionally new design, not yet explicitly approved. | State candidate values, framework constraints, checks still needed, and governing `Proposed` ADR. Do not claim source exists or command runs. |
|
|
35
35
|
| **Explicitly approved new** | User explicitly approved the concrete design after framework and collision checks, and the governing durable ADR is `Accepted`. | A bounded WBS execution may create it after its own dossier approval. Cite design authority, planned source/manifests, and checks; pre-existing target source is not required. |
|
|
36
36
|
|
|
37
37
|
User inputs or high-level strategy selection alone do not upgrade a proposed tuple. Separate generation approval, design/ADR approval, and execution approval. If design is approved but ADR acceptance is still pending, record both facts and keep creation gated.
|
|
@@ -216,22 +216,22 @@ const referenceGroups = [
|
|
|
216
216
|
const GA_MEASUREMENT_ID = 'G-2NYR9RGRL4'; // process.env.GA_MEASUREMENT_ID;
|
|
217
217
|
const gaHead = GA_MEASUREMENT_ID
|
|
218
218
|
? [
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
219
|
+
[
|
|
220
|
+
'script',
|
|
221
|
+
{
|
|
222
|
+
async: '',
|
|
223
|
+
src: `https://www.googletagmanager.com/gtag/js?id=${GA_MEASUREMENT_ID}`,
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
[
|
|
227
|
+
'script',
|
|
228
|
+
{},
|
|
229
|
+
`window.dataLayer = window.dataLayer || [];
|
|
230
230
|
function gtag(){dataLayer.push(arguments);}
|
|
231
231
|
gtag('js', new Date());
|
|
232
232
|
gtag('config', '${GA_MEASUREMENT_ID}');`,
|
|
233
|
-
|
|
234
|
-
|
|
233
|
+
],
|
|
234
|
+
]
|
|
235
235
|
: [];
|
|
236
236
|
|
|
237
237
|
export default defineConfig({
|
|
@@ -240,10 +240,7 @@ export default defineConfig({
|
|
|
240
240
|
lang: 'en-US',
|
|
241
241
|
base: '/',
|
|
242
242
|
ignoreDeadLinks: [/^https?:\/\/localhost/],
|
|
243
|
-
head: [
|
|
244
|
-
['link', { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' }],
|
|
245
|
-
...gaHead,
|
|
246
|
-
],
|
|
243
|
+
head: [['link', { rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' }], ...gaHead],
|
|
247
244
|
transformPageData(pageData) {
|
|
248
245
|
if (!/^blogs\/[^/]+\/index\.md$/.test(pageData.relativePath)) return;
|
|
249
246
|
|
|
@@ -130,6 +130,7 @@ Use three independent gates:
|
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
Lightweight mode reports omitted owners/chain coverage; it does not permit dangling references. If progress is present, its WBS owner is still needed.
|
|
133
|
+
|
|
133
134
|
2. **Chart model/freshness** checks supported WBS/dependency/ATP/progress consistency and generated-view freshness, only with complete supported inputs:
|
|
134
135
|
|
|
135
136
|
```bash
|
|
@@ -138,6 +139,7 @@ Use three independent gates:
|
|
|
138
139
|
```
|
|
139
140
|
|
|
140
141
|
Regenerate after WBS, test-plan, progress, or README title/language changes. With incomplete lightweight/legacy inputs, report the precise chart gap; do not invent business definitions or status to make a generator pass.
|
|
142
|
+
|
|
141
143
|
3. **Human approval/evidence review** retains ADR acceptance, controlling TODOs, bounded execution approval, and observed ATP proof as separate requirements. Neither static check approves a design or establishes `verified`.
|
|
142
144
|
|
|
143
145
|
New specs use atomic `- **PRD-...**: <body>` / `- **SRS-...**: <body>` declarations, phase/task WBS headings with explicit Dependencies, Traceability, Tasks, and Acceptance checks, and `### ATP-...: <title>` scenarios under `## Acceptance Scenario Catalogue` with Setup, Procedure, Expected result, Minimum proof, and Traceability. Resolve progress columns by `WBS ID` and `Status` headers rather than fixed positions. Compatible legacy catalogue tables remain supported; matrices and evidence are not definitions. Report legacy gaps without silently rewriting business meaning. See [Repo Scripts](/reference/repo-scripts) for the active deterministic command contracts.
|
|
@@ -117,10 +117,10 @@ The global Passport guard is the baseline for controller actions: without a loca
|
|
|
117
117
|
|
|
118
118
|
`@Passport.activated(...)` changes the activation requirement for an authenticated user:
|
|
119
119
|
|
|
120
|
-
| Value
|
|
121
|
-
|
|
|
122
|
-
| `true`
|
|
123
|
-
| `false`
|
|
120
|
+
| Value | Requirement | Typical use |
|
|
121
|
+
| ----------- | -------------------------------------------------------------------------------- | --------------------------------------------- |
|
|
122
|
+
| `true` | The user must be activated; this is the default. | Ordinary protected actions. |
|
|
123
|
+
| `false` | The user must **not** be activated. This does not mean “skip the check.” | An account-activation action. |
|
|
124
124
|
| `'noCheck'` | Do not check activation state; both activated and unactivated users can proceed. | Logout, including for an unactivated account. |
|
|
125
125
|
|
|
126
126
|
All three values still require authentication by default. An unauthenticated request is rejected; use `@Passport.public()` only if anonymous access is intended. A disabled account is still rejected regardless of the activation setting. The guard returns `403` when an authenticated user fails the account-status or activation check.
|