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.
Files changed (91) hide show
  1. package/.cabloy-version +1 -1
  2. package/.github/workflows/agent-governance.yml +1 -0
  3. package/CHANGELOG.md +22 -0
  4. package/README.md +13 -24
  5. package/package.json +2 -1
  6. package/repo-agent-governance/managed-assets.json +138 -33
  7. package/repo-agent-governance/scripts/pack-check.mjs +17 -0
  8. package/repo-agent-governance/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -0
  9. package/repo-agent-governance/skills/cabloy-domain-planning/SKILL.md +5 -3
  10. package/repo-agent-governance/skills/cabloy-spec-execution/SKILL.md +13 -8
  11. package/repo-agent-governance/skills/cabloy-spec-execution/evals/evals.json +108 -12
  12. package/repo-agent-governance/skills/cabloy-spec-execution/evals/files/scenarios.json +84 -0
  13. package/repo-agent-governance/skills/cabloy-spec-execution/evals/protocol.md +9 -0
  14. package/repo-agent-governance/skills/cabloy-spec-execution/references/execution-protocol.md +21 -5
  15. package/repo-agent-governance/skills/cabloy-spec-execution/references/status-and-evidence.md +5 -3
  16. package/repo-agent-governance/skills/cabloy-spec-generation/SKILL.md +78 -168
  17. package/repo-agent-governance/skills/cabloy-spec-generation/evals/evals.json +165 -17
  18. package/repo-agent-governance/skills/cabloy-spec-generation/evals/files/scenarios.json +114 -0
  19. package/repo-agent-governance/skills/cabloy-spec-generation/evals/protocol.md +44 -0
  20. package/repo-agent-governance/skills/cabloy-spec-generation/references/canonical-spec-input.md +145 -0
  21. package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-aware-discovery.md +55 -57
  22. package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-specs-document-set.md +6 -4
  23. package/repo-agent-governance/skills/cabloy-spec-generation/references/traceability-and-status-rules.md +12 -8
  24. package/repo-agent-governance/tests/governance.test.mjs +10 -1
  25. package/repo-agent-governance/tests/spec-audit.test.mjs +255 -0
  26. package/repo-agent-governance/tools/spec-audit/audit.mjs +427 -0
  27. package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs +97 -408
  28. package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.test.mjs +462 -1
  29. package/repo-agent-governance/tools/spec-charts/spec-parser.mjs +561 -0
  30. package/repo-docs/.vitepress/config.mjs +54 -29
  31. package/repo-docs/ai/playbook-spec-execution.md +10 -4
  32. package/repo-docs/ai/playbook-spec-generation.md +40 -3
  33. package/repo-docs/ai/skills.md +3 -3
  34. package/repo-docs/backend/controller-aop-guide.md +10 -0
  35. package/repo-docs/backend/field-indexes.md +25 -0
  36. package/repo-docs/blogs/cabloy-fullstack-resource-addressing/index.md +1 -1
  37. package/repo-docs/fullstack/contract-loop-playbook.md +1 -1
  38. package/repo-docs/fullstack/development-history.md +24 -0
  39. package/repo-docs/fullstack/introduction.md +25 -156
  40. package/repo-docs/fullstack/quickstart.md +1 -1
  41. package/repo-docs/fullstack/ssr-entry-modes.md +52 -0
  42. package/repo-docs/fullstack/ssr-site-and-flavor-setup.md +3 -1
  43. package/repo-docs/fullstack/tutorial-5-backend-contract-sharing.md +13 -7
  44. package/repo-docs/fullstack/tutorial-6-one-contract-four-uses.md +11 -15
  45. package/repo-docs/fullstack/tutorials-overview.md +2 -2
  46. package/repo-docs/index.md +23 -45
  47. package/repo-docs/public/cabloy.png +0 -0
  48. package/repo-docs/public/cabloy.svg +3 -0
  49. package/repo-docs/public/favicon.svg +3 -0
  50. package/repo-docs/reference/repo-scripts.md +6 -1
  51. package/repo-e2e/specs/home-user-account.spec.ts +311 -207
  52. package/scripts/bootstrapAgentGovernance.mjs +1 -0
  53. package/scripts/upgrade.ts +1 -0
  54. package/vona/packages-cli/cli/package.json +1 -1
  55. package/vona/packages-cli/cli-set-api/cli/templates/tools/crudBasic/snippets/2-meta.index.ts +4 -10
  56. package/vona/packages-cli/cli-set-api/cli/templates/tools/crudStart/snippets/2-meta.index.ts +4 -10
  57. package/vona/packages-cli/cli-set-api/package.json +8 -2
  58. package/vona/packages-cli/cli-set-api/src/index.ts +1 -0
  59. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.masterDetail.ts +9 -12
  60. package/vona/packages-cli/cli-set-api/src/lib/mergeMetaIndex.ts +121 -0
  61. package/vona/packages-cli/cli-set-api/test/indexSnippets.test.ts +41 -0
  62. package/vona/packages-cli/cli-set-api/test/mergeMetaIndex.test.ts +78 -0
  63. package/vona/packages-vona/vona/package.json +1 -1
  64. package/vona/pnpm-lock.yaml +6 -6
  65. package/vona/src/suite/a-commerce/modules/commerce-catalog/src/service/sku.ts +25 -4
  66. package/vona/src/suite/a-commerce/modules/commerce-catalog/test/skuUniqueness.test.ts +161 -0
  67. package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.index.ts +21 -20
  68. package/vona/src/suite/a-commerce/modules/commerce-payment/test/paymentIndexes.test.ts +165 -0
  69. package/vona/src/suite/a-commerce/modules/commerce-promotion/src/bean/meta.index.ts +16 -13
  70. package/vona/src/suite/a-commerce/modules/commerce-promotion/test/promotionIndexes.test.ts +82 -0
  71. package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.index.ts +23 -21
  72. package/vona/src/suite/a-commerce/modules/commerce-trade/test/tradeIndexes.test.ts +86 -0
  73. package/vona/src/suite/a-home/modules/home-user/src/.metadata/index.ts +379 -376
  74. package/vona/src/suite/a-home/modules/home-user/src/controller/passportTest.ts +60 -0
  75. package/vona/src/suite/a-home/modules/home-user/test/passportTest.test.ts +164 -1
  76. package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
  77. package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
  78. package/vona/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
  79. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.index.ts +35 -26
  80. package/vona/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
  81. package/vona/src/suite-vendor/a-pay/modules/pay-paypal/package.json +1 -1
  82. package/vona/src/suite-vendor/a-pay/modules/pay-stripe/package.json +1 -1
  83. package/vona/src/suite-vendor/a-pay/package.json +5 -5
  84. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  85. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/transactionFiber_.ts +6 -2
  86. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/transaction_.ts +4 -1
  87. package/vona/src/suite-vendor/a-vona/modules/a-ormutils/package.json +1 -1
  88. package/vona/src/suite-vendor/a-vona/modules/a-ormutils/src/lib/columns.ts +3 -1
  89. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  90. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  91. /package/repo-docs/{.vitepress/public → public}/CNAME +0 -0
@@ -1,227 +1,137 @@
1
1
  ---
2
2
  name: cabloy-spec-generation
3
- description: This skill should be used for requests to create or maintain a Cabloy `repo-specs/<suite>/` set, including a PRD, SRS, PDP/WBS, test plan, progress register, suite ADR, or “write the specs”/“plan the suite.” It links product, technical, delivery, acceptance, and decision records after the domain boundary is confirmed. Route unresolved naming to `cabloy-domain-planning`, implementation to scaffold skills, and concrete synchronization to `cabloy-contract-loop`.
3
+ description: Use this skill to create or maintain Cabloy suite specifications under repo-specs, including PRD, SRS, PDP/WBS, acceptance planning, progress, and suite ADRs. It supports a complete new baseline, incremental maintenance, and explicitly lightweight planning. Route unresolved naming through cabloy-domain-planning and return here; hand approved bounded implementation to cabloy-spec-execution, not directly to broad scaffolding.
4
4
  ---
5
5
 
6
6
  # Cabloy Repository Specs
7
7
 
8
- Use this skill to create or maintain a coherent, repository-native planning record for a long-lived Cabloy business suite. The output is internal planning material under `repo-specs/`; it is not source code, generated consumer output, or proof that implementation has happened.
8
+ Create or maintain repository-native planning authority. Planning is not source implementation, acceptance evidence, ADR acceptance, or execution authorization.
9
9
 
10
- ## Goals
10
+ Read before substantial generation or revision:
11
11
 
12
- 1. detect the active repository edition before making site, flavor, UI, or topology assumptions;
13
- 2. distinguish a new suite baseline from an extension of an existing spec set;
14
- 3. preserve the authority boundaries demonstrated by the Cabloy spec examples;
15
- 4. generate stable cross-document traceability from product intent to observed evidence;
16
- 5. keep unresolved decisions and unverified work explicit rather than filling gaps with plausible fiction;
17
- 6. hand implementation and contract-loop work to the appropriate existing skill instead of starting it implicitly.
12
+ - `references/repo-aware-discovery.md`: edition, source discovery, and observed versus new target semantics;
13
+ - `references/repo-specs-document-set.md`: authority and proportionate document architecture;
14
+ - `references/canonical-spec-input.md`: canonical declarations, parser compatibility, and the three quality gates;
15
+ - `references/traceability-and-status-rules.md`: stable IDs, evidence, and authority-first updates.
18
16
 
19
- Read these references before generating or substantially revising records:
17
+ ## 1. Discover the active repository
20
18
 
21
- - `references/repo-specs-document-set.md` for the document architecture and section contracts;
22
- - `references/repo-aware-discovery.md` for edition detection, repository discovery, and command rules;
23
- - `references/traceability-and-status-rules.md` for identifiers, evidence, status, and update-order gates.
19
+ Inspect the root, working tree, edition markers, root `package.json`, existing `repo-specs/` indexes, relevant suite/module topology, and authored governance. Discover `npm run vona` / `npm run zova` command families when planning cites implementation commands.
24
20
 
25
- ## Step 1: Detect the repository and edition
21
+ - Exactly `__CABLOY_BASIC__`: use observed Basic scripts, UI, sites, flavors, and output paths.
22
+ - Exactly `__CABLOY_START__`: resolve those details from the active Start source; do not copy Basic examples.
23
+ - Both markers: stop; the checkout is invalid or ambiguous.
24
+ - Neither: inspect the owning package and nearby structure, then ask before edition-sensitive planning.
26
25
 
27
- From the repository root, inspect:
26
+ Cite inspected paths. Keep repository facts separate from user inputs, target design, and evidence. Never read or expose `.env*` contents to recommend worktree identity or ports.
28
27
 
29
- 1. `git rev-parse --show-toplevel` and `git status --short`;
30
- 2. `__CABLOY_BASIC__` and `__CABLOY_START__`;
31
- 3. the root `package.json` and `repo-agent-governance/` (or the active generated adapter);
32
- 4. existing `repo-specs/` indexes and related suite/module topology;
33
- 5. `npm run vona` and `npm run zova` when the records will cite implementation commands.
28
+ ## 2. Choose one planning mode
34
29
 
35
- Interpret the markers as follows:
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. |
36
35
 
37
- - `__CABLOY_BASIC__` present: use Cabloy Basic source and public-doc assumptions;
38
- - `__CABLOY_START__` present: use Cabloy Start source and resolve its own site, UI, flavor, and command details;
39
- - neither present: do not make strong edition-specific assumptions; inspect the nearby project shape and ask the user to confirm the edition.
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.
40
37
 
41
- Never copy Basic flavor names, SSR assumptions, UI-library assumptions, or exact command lines into a Start record without verifying them in the active Start repository. The document architecture is shared; edition-specific runtime facts are not.
38
+ A growing business domain defaults to the complete baseline. Ask before choosing lightweight scope. Do not invent requirements to fill omitted documents.
42
39
 
43
- ## Step 2: Classify the request
40
+ ## 3. Resolve identity without changing the workflow
44
41
 
45
- Choose one mode:
42
+ For unresolved provider/suite/module naming, route to `cabloy-domain-planning` with a **naming-only return to generation**. Validate the returned names and resume this mode and its confirmation gate. Naming confirmation does not authorize source scaffolding.
46
43
 
47
- ### New suite baseline
44
+ For suite-first ownership, the short name is `{providerId}-{suiteName}`; `suiteName` uses lowercase English letters only, without another hyphen. Use capability names for modules. Reuse the stable existing suite/capability planning slug rather than creating a competing hierarchy.
48
45
 
49
- Use this when the user wants planning records for a new, long-lived business domain. The default output is a complete core set under `repo-specs/<suite-short-name>/`.
46
+ ## 4. Resolve only missing site strategy
50
47
 
51
- ### Existing suite extension
48
+ First inspect active shared-site composition owners, extension points, independent-site conventions, and framework constraints. A capability module or an Admin audience alone does not require an independent site.
52
49
 
53
- Use this when a suite already has a planning directory. Read its README and authority map first. Update the authoritative PRD, SRS, or ADR before downstream WBS, test-plan, progress, or evidence references. Do not silently overwrite existing requirements, decisions, evidence, or status.
50
+ - If both Web and Admin strategies are unresolved, evaluate them separately, recommend contextually, and present one single-select decision: shared/shared, independent/shared, shared/independent, independent/independent. Keep Other for custom/no-site/deferred choices.
51
+ - If only one audience is in scope or unresolved, ask only about that audience.
52
+ - If an established strategy already governs the requested change, preserve it; do not repeat the four-way question absent a material change.
54
53
 
55
- ### Proportionate planning
54
+ Choosing strategy confirms only that input. It does not accept an ADR or approve implementation.
56
55
 
57
- A disposable demo, isolated tutorial, or small utility may not warrant the complete seven-document set. Explain the trade-off and offer a smaller record only when the user explicitly wants that scope. A real business domain that is expected to grow defaults to suite-first and the complete baseline.
56
+ Classify every target as **observed existing**, **proposed new**, or **explicitly approved new** under the discovery reference. Shared integration requires an observed owner. A proposed independent tuple may be designed before its source exists: validate framework constraints and collisions, obtain explicit design approval, and retain its governing ADR as `Proposed` until separately accepted. An explicitly approved new tuple with an `Accepted` ADR can be created by a bounded execution task; source pre-existence is not a prerequisite.
58
57
 
59
- ### Routing to another skill
58
+ Unknown or unchecked values stay `TODO(confirm)` with the exact missing design/source/conflict check. Block only dependent site/frontend implementation; keep backend, unrelated audiences, and runnable discovery tasks actionable.
60
59
 
61
- If the provider, suite, or module identity is unresolved, route to `cabloy-domain-planning` first. If the user wants code generation, route after planning to `cabloy-backend-scaffold` and/or `cabloy-frontend-scaffold`. If the user asks to synchronize a concrete Vona/Zova contract, route that implementation task to `cabloy-contract-loop`. This skill may record those handoff points but does not perform them automatically.
60
+ ## 5. Collect the remaining inputs
62
61
 
63
- ## Step 3: Resolve site strategy when applicable
62
+ Ask only for missing inputs in a compact clarification pass:
64
63
 
65
- When the scope includes a Web, Admin, or another user-facing site audience, resolve the high-level site strategy before collecting detailed topology or runtime facts. First use active-repository discovery to identify observed shared-site composition and independent-site conventions for the detected edition. Do not infer that a capability module, Web/Admin audience, or example suite requires a matching independent site.
64
+ - identity/output path, outcomes, personas, journeys, scope, exclusions, and acceptance;
65
+ - modules and reused persistence/identity owners; audience strategy and target classification;
66
+ - tenant, server-authoritative identity/authorization, privacy, lifecycle, transactions, concurrency, idempotency, audit, integrations, and migration/version decisions where material;
67
+ - dependencies, release constraints, contract-loop checkpoints, test levels, fixture cleanup, proof/redaction, and optional records;
68
+ - durable decisions, ADR candidates, and unresolved gates.
66
69
 
67
- Evaluate Web and Admin independently. Give a contextual recommendation based on the product audience, authority/experience differences, and source facts actually observed, then present these normal combinations as one single-select decision:
70
+ Label recommendations as proposals. A request for comprehensiveness is not permission to invent security or business decisions.
68
71
 
69
- 1. shared Web + shared Admin;
70
- 2. independent Web + shared Admin;
71
- 3. shared Web + independent Admin;
72
- 4. independent Web + independent Admin.
72
+ ## 6. Confirm generation scope
73
73
 
74
- Keep the ordinary Other response path available for a custom combination, an audience with no site, or a deferred decision. State that choosing one combination accepts only this site-strategy input; it neither accepts an unrelated durable ADR nor confirms implementation facts.
74
+ Before writing, present the edition/root, mode, identity/path, intended ownership, outcomes/scope, site strategy/target tuple classification, affected records, justified omissions/extensions, unresolved gates, and initial status/evidence policy. Include planned chart eligibility and README language.
75
75
 
76
- At this stage, record each audience as a shared existing site, an intended independent suite-owned site, no site, or `TODO(confirm)`. A shared target is valid only when its owning site/composition boundary is observed and cited. An independent strategy is not permission to invent a site ID, public path, bundle, flavor, environment/configuration file, `SsrSite` registration, generated-output location, or development/build/REST command. Keep every unobserved identifier as `TODO(confirm from active source)` for a later frontend WBS/discovery scope.
76
+ Keep three approvals separate:
77
77
 
78
- If the user defers the strategy or needed identifiers, record the unresolved gate in ADR/SRS and mark only frontend/site implementation WBS work that depends on it as `blocked`. Keep runnable source-discovery, backend, known shared-site, and unrelated-audience work accurately `not-started` or at its current status.
78
+ 1. **Generation approval** authorizes the named planning edits only.
79
+ 2. **Design/ADR approval** explicitly approves a durable decision; record `Accepted` only for the decision actually accepted. A tuple design approval is not source-existence proof.
80
+ 3. **Execution approval** belongs to a bounded WBS dossier in `cabloy-spec-execution`.
79
81
 
80
- ## Step 4: Confirm the remaining planning inputs
82
+ Do not treat silence, strategy selection, naming confirmation, or generation approval as another approval. Drafts retain `Proposed` ADRs and controlling `TODO(confirm)` gates.
81
83
 
82
- Ask only for missing information, grouped into a compact clarification pass. Do not treat “make it comprehensive” as permission to invent business or security decisions.
84
+ ## 7. Write authority first
83
85
 
84
- Collect or confirm:
85
-
86
- - **Identity:** business domain, `providerId`, `suiteName`, suite short name, stable planning slug, and whether the directory already exists;
87
- - **Product:** problem, measurable outcomes, personas, primary journeys, and release goal;
88
- - **Scope:** capabilities in scope, explicit exclusions/deferred work, business rules, and acceptance conditions;
89
- - **Topology:** likely capability modules, existing module/persistence owners to reuse, audiences, selected shared/independent/deferred site strategy per audience, and any separate application boundary;
90
- - **Technical constraints:** instance/tenant model, server-authoritative identity, authorization, data ownership, lifecycle/state, transactions, concurrency, idempotency, audit, privacy, integrations, and migration/version concerns where relevant;
91
- - **Delivery:** dependency order, decision gates, implementation phases, release constraints, and contract-loop checkpoints;
92
- - **Verification:** required test levels, database/flavor constraints, browser/SSR needs, evidence retention and redaction rules, and release gates;
93
- - **Durable decisions:** selected site strategy and rationale, accepted boundaries, unresolved trade-offs, ADR candidates, and external-provider operations that may need runbooks.
94
-
95
- Repository inspection may fill a fact only when the fact was actually observed. Label it as a confirmed current-source fact and cite its path. Keep observed facts separate from confirmed user inputs, proposed target contracts, and `TODO(confirm from active source)` identifiers.
96
-
97
- ## Step 5: Validate identity and protect existing records
98
-
99
- For a suite-first domain, validate the existing naming convention before writing:
100
-
101
- - short name is `{providerId}-{suiteName}`;
102
- - `suiteName` uses lowercase English letters only and contains no additional hyphen;
103
- - suite-owned source is intended to live under `vona/src/suite/<suite>/modules/` and `zova/src/suite/<suite>/modules/`;
104
- - modules name business capabilities rather than vague technical placeholders.
105
-
106
- Use the business suite short name as the planning directory when it is the natural scope. For a capability that belongs to an existing suite, use the existing stable suite/capability planning slug instead of creating a duplicate hierarchy.
107
-
108
- If `repo-specs/<slug>/` exists, stop before writing and present the conflict. Offer to update the existing authority set, choose a new explicitly justified slug, or stop. Do not overwrite it merely because the user asked for a “fresh” version.
109
-
110
- ## Step 6: Present the confirmation gate
111
-
112
- Before creating or replacing records, summarize and request explicit confirmation of:
113
-
114
- - detected edition and source repository;
115
- - `providerId`, `suiteName`, short name, and output path;
116
- - intended suite-first Vona/Zova topology and module ownership;
117
- - product outcome, personas, in-scope capabilities, and deferred scope;
118
- - the Web/Admin/other-audience site strategy, recommendation/rationale, and every observed shared-site target;
119
- - tenant, authorization, persistence, site/flavor, and privacy boundaries that are actually confirmed;
120
- - exact independent-site identifiers that are observed and cited, plus identifiers retained as `TODO(confirm from active source)`;
121
- - mandatory documents and any optional extensions, with a reason for each;
122
- - unresolved decisions and explicit `TODO(confirm)` gates, including only the WBS branches blocked by a deferred site decision;
123
- - the initial status policy: delivery is `not-started` unless implementation evidence already exists;
124
- - the derived implementation charts: `implementation-gantt.svg` and `implementation-burndown.svg`, whose labels default to the language detected from `README.md`.
125
-
126
- Do not treat silence as approval. Once confirmed, generate the records in authority order. Confirmation to generate records does not accept a durable ADR decision: retain its ADR as `Proposed` unless the user explicitly accepts that decision. A site-strategy selection confirms that one planning input only; it does not accept another durable boundary or convert a proposed site ADR into `Accepted`. If the user asks only for a draft, or has not explicitly accepted a durable boundary, retain unresolved decisions and do not imply acceptance.
127
-
128
- ## Step 7: Generate the mandatory document set
129
-
130
- Create this baseline for a new long-lived suite:
86
+ For a complete new baseline, create:
131
87
 
132
88
  ```text
133
- repo-specs/<suite-short-name>/
89
+ repo-specs/<suite>/
134
90
  ├── README.md
135
91
  ├── prd.md
136
92
  ├── srs.md
137
93
  ├── pdp-wbs.md
138
94
  ├── test-plan.md
139
95
  ├── progress.md
140
- ├── implementation-gantt.svg
141
- ├── implementation-burndown.svg
142
- └── decisions/
143
- └── 0001-<suite-boundary-slug>.md
96
+ └── decisions/0001-<boundary>.md
144
97
  ```
145
98
 
146
- Use the templates and authority rules in `references/repo-specs-document-set.md`. In brief:
147
-
148
- - `README.md` is the maintainer-facing index, reading order, baseline/topology summary, authority map, and related-record index;
149
- - `prd.md` owns outcomes, personas, scope, journeys, business rules, product requirements, launch criteria, and `PRD-*` traceability;
150
- - `srs.md` owns capability/persistence boundaries, data and tenant rules, authorization, state machines, transaction/concurrency/idempotency, API/DTO/OpenAPI, frontend/SSR ownership, nonfunctional contracts, and technical acceptance;
151
- - `pdp-wbs.md` owns dependency-ordered phases, WBS tasks, completion checks, contract-loop checkpoints, and delivery traceability;
152
- - `test-plan.md` owns risk priorities, test levels, `ATP-*` scenarios, fixtures, evidence format/redaction, procedures, and release gates;
153
- - `progress.md` owns derived status, WBS execution rows, blockers, open decisions, evidence pointers, and next proof only;
154
- - `implementation-gantt.svg` and `implementation-burndown.svg` are deterministic derived views, not authority. They consume `pdp-wbs.md`, `test-plan.md`, and `progress.md`; they must not introduce scope, dependencies, dates, estimates, evidence, or status. Generate them with `npm run spec:charts -- <suite>` and validate them with `npm run spec:charts:check -- <suite>`;
155
- - chart language defaults to the language detected from `README.md` and applies consistently to visible labels, accessibility text, and metadata;
156
- - `decisions/0001-*.md` owns the durable initial boundary decision, alternatives, consequences, and decision gates.
157
-
158
- Create records in a way that makes every sibling link resolvable from the final directory. Use stable prefixes consistently, such as `PRD-<DOMAIN>-*`, `SRS-<DOMAIN>-*`, `WBS-<DOMAIN>-<PHASE>-*`, and `ATP-<DOMAIN>-*`. Choose a concise domain prefix and use it consistently across all matrices. Define every exact SRS ID used in generated planning records as one formal contract in `srs.md`, and every exact ATP ID as one scenario with a procedure in `test-plan.md`, before any downstream record references it. Wildcards and ranges are compact summaries of already-defined IDs; they never substitute for a formal definition.
99
+ With complete supported chart inputs, generate `implementation-gantt.svg` and `implementation-burndown.svg` as derived views. Use canonical declarations in `references/canonical-spec-input.md` for new records. Each exact PRD/SRS/WBS/ATP ID has one definition in its owner, not merely a matrix, range, or evidence mention.
159
100
 
160
- ## Step 8: Add optional records only when justified
101
+ For updates, change PRD/SRS/ADR first, then mappings, WBS, ATP, evidence assumptions, and progress. Preserve stable IDs and history. Legacy catalogue tables remain compatible; missing formal definitions are a reported legacy gap, not permission to invent business meaning or rewrite legacy business records to satisfy a tool.
161
102
 
162
- Do not generate optional files because a reference suite contains them. Select them from explicit requirements:
103
+ Add presentation contracts, rollout records, runbooks, extra ADRs, or evidence only when confirmed scope justifies them. Never create empty evidence or fabricate an `EVD-*` record.
163
104
 
164
- - `presentation-contracts.md`: multiple audiences or Admin Resource scenes need durable information-area, field-boundary, or renderer decisions;
165
- - `semantic-presentation-rollout.md`: presentation or metadata work is staged, serial, resumable, and needs handoff gates;
166
- - `runbooks/<provider-or-operation>.md`: a real external provider, webhook, sandbox/live procedure, reconciliation, cutover, or incident operation is in scope;
167
- - additional ADRs: a separate durable security, tenancy, ownership, site/flavor, migration, integration, or scope decision exists;
168
- - `evidence/`: create only when actual ATP execution produces retained redacted evidence, not as an empty completeness signal.
105
+ ## 8. Preserve Cabloy boundaries
169
106
 
170
- Optional records remain subordinate to the PRD/SRS/WBS/test-plan authority appropriate to their content. A presentation matrix cannot authorize an API or redefine persistence; a runbook cannot redefine a payment state machine; a rollout record cannot replace the WBS or test plan.
107
+ - Keep suite business planning in `repo-specs/`, public/agent guidance in `repo-docs/`, and supporting maintainer rationale in `repo-docs-internal/`.
108
+ - Reuse persistence and identity ownership. An independent site does not create a separate tenant, identity, authorization, persistence, or domain-rule authority.
109
+ - Treat the active Vona instance as tenant by default. Authorization and scope are server-authoritative, not menus or browser filters.
110
+ - Separate genuinely different Admin/Web API/DTO, server-scope, frontend state, and page contracts while retaining one domain/persistence boundary.
111
+ - Plan forward and reverse contract-loop checkpoints; actual regeneration belongs to the specialist invoked by execution. Never hand-edit generated consumers.
112
+ - Ask before choosing the persisted-field `vonaModule.fileVersion` strategy.
113
+ - A new wrapper is a **planned addition**, not a currently runnable command. Validate its durable manifest destination and paired SSR/REST design; execution must create and observe it before running it.
171
114
 
172
- ## Step 9: Apply Cabloy-specific contract guardrails
115
+ ## 9. Apply three independent quality gates
173
116
 
174
- While drafting, preserve these principles and tailor them to confirmed scope:
117
+ Use the active root scripts, verified from `package.json`:
175
118
 
176
- - `repo-specs/` is the product/business planning home; `repo-docs/` is public and agent-facing framework guidance; `repo-docs-internal/` holds supporting cross-suite maintainer rationale; `repo-agent-governance/skills/` is authored workflow behavior; do not assume a particular internal record exists in every edition;
177
- - use suite-first ownership and distinguish new domain modules from reusable framework modules; do not duplicate an existing persistence or identity owner without a stated decision;
178
- - treat the active Vona instance as the tenant by default; do not introduce a store, organization, or merchant entity unless the confirmed domain contract requires it;
179
- - make identity, tenant scope, authorization, and ownership server-authoritative; menus, routes, browser filters, and UI visibility are not API authorization;
180
- - specify transactions, concurrency, idempotency, audit, recovery, and historical snapshots when the business flow needs them;
181
- - for fullstack work, record the Vona-to-Zova forward chain and Zova-to-Vona reverse-chain checkpoint, but hand actual generation/synchronization to `cabloy-contract-loop`;
182
- - when Admin Resource and Web self-service consume one resource with different authority or audience, separate API/DTO contracts, server scope, state owners, and pages while retaining one domain/persistence boundary;
183
- - independent site composition does not create an independent persistence, tenant, identity, authorization, or domain-rule authority; shared composition does not make generic CRUD, client-side admission, or identical audience contracts sufficient;
184
- - an Admin-facing module alone does not authorize an independent Admin site, `SsrSite` registration, flavor, environment/configuration file, bundle, or root command;
185
- - ask before choosing whether a persisted-field change increments `vonaModule.fileVersion`; do not silently invent migration history;
186
- - use `TODO(confirm from active source)` and neutral placeholders for unobserved runtime facts; never copy site/flavor details, example-suite entities, routes, tests, CI links, or evidence into a new domain.
187
-
188
- ## Step 10: Quality-check the document set
189
-
190
- Before reporting completion, verify:
191
-
192
- 1. each applicable Web, Admin, or other site audience has a stated shared, independent, no-site, or `TODO(confirm)` strategy; every shared target is cited, and every unknown independent-site runtime identifier remains `TODO(confirm from active source)`;
193
- 2. deferred site strategy or identifiers block only the dependent frontend/site WBS branch, while unrelated backend and actionable audience work remains accurately statused;
194
- 3. every in-scope `PRD-*` requirement maps to an `SRS-*` contract, a `WBS-*` task, and an `ATP-*` scenario;
195
- 4. every SRS contract maps backward to a product requirement and forward to planned delivery/proof;
196
- 5. every WBS item has dependencies, a bounded task, completion checks, and expected ATP coverage;
197
- 6. every ATP has traceability, procedure/scope, minimum proof, and evidence-retention rules;
198
- 7. `progress.md` contains only derived status and never introduces requirements or contracts;
199
- 8. no downstream file silently changes an upstream product, technical, or ADR decision;
200
- 9. every `verified` claim has observed revision, environment, exact command/procedure, result, and redacted evidence location;
201
- 10. initial rows remain `not-started`, `deferred`, or explicitly `blocked` unless existing observed evidence was intentionally carried forward;
202
- 11. every exact `PRD-*`, `SRS-*`, `WBS-*`, and `ATP-*` reference in the planning authority set resolves to exactly one formal definition in its owning document; ranges and wildcards are aggregation notation only and cannot satisfy this check;
203
- 12. README language distinguishes observed facts, confirmed inputs, proposed targets, and `TODO(confirm)` decisions, and does not upgrade a `Proposed` ADR into a confirmed or accepted durable boundary;
204
- 13. `npm run spec:charts:check -- <suite>` passes, proving every WBS task has one progress row, statuses and dependencies reconcile, ATP references resolve, and both generated SVGs are current;
205
- 14. chart language and accessibility/metadata text follow the README language policy;
206
- 15. local Markdown links and referenced paths resolve;
207
- 16. prospective commands are real commands discovered in the active repository, or clearly marked as commands to confirm later.
208
-
209
- If the exact-ID, status-consistency, or chart check fails, correct the authoritative planning records or regenerate the derived artifacts and rerun it before reporting generation complete. This is a static planning check, not ATP execution: do not create evidence or claim `verified` for it.
119
+ ```bash
120
+ npm run spec:check -- <suite>
121
+ # Explicit lightweight branch:
122
+ npm run spec:check -- <suite> --lightweight
123
+ ```
210
124
 
211
- After creating or changing `pdp-wbs.md`, `test-plan.md`, or `progress.md`, regenerate both derived views with `npm run spec:charts -- <suite>` and then run `npm run spec:charts:check -- <suite>`. A chart change never authorizes a planning or status change. If a later edit occurs outside this workflow, the check command is the source of truth for detecting stale views.
125
+ 1. **Planning authority audit**: `spec:check` validates definition roles, exact references, PRD -> SRS -> WBS -> ATP associations, and local links. Explicit Traceability belongs in declaration bodies. Review gaps and decisions manually; a static pass is not design acceptance.
126
+ 2. **Chart model/freshness**: only with complete supported README/WBS/ATP/progress inputs, run `npm run spec:charts -- <suite>` then `npm run spec:charts:check -- <suite>`. This proves supported model consistency and SVG freshness only. Regenerate after WBS, test-plan, progress, or README title/language changes. No complete input means an explicit chart omission/blocker, not invented definitions or status.
127
+ 3. **Human approval/evidence**: review ADR status, controlling TODOs, scope, and evidence-backed status. Only retained applicable ATP proof can justify `verified`; neither audit nor charts can approve a design or implementation.
212
128
 
213
- Do not run `npm run init`, reset a database, scaffold code, or execute deployment/provider operations as an automatic consequence of writing planning records. Do not report those activities as evidence.
129
+ For incremental legacy gaps, report the missing definition/owner/link and affected chain without silently changing business meaning. If correction needs a new decision, request it and report the update as incomplete at that gate. Lightweight results must state skipped owners/chain coverage; never advertise a full-suite pass.
214
130
 
215
- ## Step 11: Handoff and response
131
+ Planning creation alone initializes delivery as `not-started`, `deferred`, or specifically `blocked`. Preserve carried-forward observed evidence with its revision/authority limits. Do not run init, database reset, scaffolding, deployment/provider operations, or acceptance tests as an automatic consequence of planning.
216
132
 
217
- Report:
133
+ ## 10. Finish with a bounded execution handoff
218
134
 
219
- - detected edition and output directory;
220
- - files created or updated;
221
- - optional files intentionally omitted and why;
222
- - unresolved decisions and the next confirmation needed;
223
- - initial status and evidence limitations;
224
- - recommended next workflow (`cabloy-domain-planning`, backend/frontend scaffold, or `cabloy-contract-loop`);
225
- - generated or refreshed `implementation-gantt.svg` and `implementation-burndown.svg`, selected README language, and the result of `npm run spec:charts:check -- <suite>`.
135
+ Report edition/mode/path, files changed, omissions, unresolved decisions, approval domains, actual audit results, chart eligibility/freshness/language, and evidence limitations. Identify one candidate WBS increment or finite phase and its dependencies, acceptance proof, and controlling gates.
226
136
 
227
- Keep the result practical. A good spec set gives the next implementer a shared authority map, not a fictional completion report.
137
+ The next implementation entry is `cabloy-spec-execution`, which still requires explicit target/dossier approval. Do not jump directly from generation to broad backend/frontend scaffolding, execute an adjacent task, or claim release closure.
@@ -5,79 +5,227 @@
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": []
8
+ "files": [
9
+ "files/scenarios.json"
10
+ ],
11
+ "expectations": [
12
+ "Reads active edition and repository before assumptions.",
13
+ "Routes unresolved names through naming-only domain planning and returns to generation.",
14
+ "Asks grouped missing inputs without writing or scaffolding before approval."
15
+ ]
9
16
  },
10
17
  {
11
18
  "id": 2,
12
19
  "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.",
13
20
  "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.",
14
- "files": []
21
+ "files": [
22
+ "files/scenarios.json"
23
+ ],
24
+ "expectations": [
25
+ "Confirms complete-baseline scope and generation separately from ADR acceptance.",
26
+ "Uses stable formally defined PRD/SRS/WBS/ATP IDs and exact declared associations.",
27
+ "Initial status is accurate; no invented execution evidence or source existence."
28
+ ]
15
29
  },
16
30
  {
17
31
  "id": 3,
18
32
  "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?",
19
33
  "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.",
20
- "files": []
34
+ "files": [
35
+ "files/scenarios.json"
36
+ ],
37
+ "expectations": [
38
+ "Reads active Start facts rather than borrowing Basic runtime identifiers.",
39
+ "Adds presentation/runbook records only for explicit scope.",
40
+ "Retains provider operation and proof gates; planned commands are not passing results."
41
+ ]
21
42
  },
22
43
  {
23
44
  "id": 4,
24
45
  "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.",
25
46
  "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.",
26
- "files": []
47
+ "files": [
48
+ "files/scenarios.json"
49
+ ],
50
+ "expectations": [
51
+ "Rejects verified status without actual retained ATP proof.",
52
+ "Does not fabricate artifacts or empty evidence records.",
53
+ "Keeps status and next proof accurate despite release-ready wording request."
54
+ ]
27
55
  },
28
56
  {
29
57
  "id": 5,
30
58
  "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?",
31
59
  "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.",
32
- "files": []
60
+ "files": [
61
+ "files/scenarios.json"
62
+ ],
63
+ "expectations": [
64
+ "Reads existing authority and preserves stable identity/history.",
65
+ "Requires upstream PRD/SRS/ADR approval before downstream merchant-scope changes.",
66
+ "Does not introduce parallel OpenSpec authority without repository-level decision."
67
+ ]
33
68
  },
34
69
  {
35
70
  "id": 6,
36
71
  "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.",
37
72
  "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.",
38
- "files": []
73
+ "files": [
74
+ "files/scenarios.json"
75
+ ],
76
+ "expectations": [
77
+ "Defines exact SRS and ATP records in their owners rather than counting matrix/prose mentions.",
78
+ "ATP declaration has substantive Setup, Procedure, Expected result, Minimum proof, and Traceability.",
79
+ "Separates authority audit, chart gate, and human approval/evidence."
80
+ ]
39
81
  },
40
82
  {
41
83
  "id": 7,
42
84
  "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.",
43
85
  "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.",
44
- "files": []
86
+ "files": [
87
+ "files/scenarios.json"
88
+ ],
89
+ "expectations": [
90
+ "Retains Proposed ADR and controlling tenancy TODO.",
91
+ "Uses neutral README wording without upgrading proposed durable decisions.",
92
+ "Generation approval does not count as ADR acceptance or execution approval."
93
+ ]
45
94
  },
46
95
  {
47
96
  "id": 8,
48
97
  "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.",
49
98
  "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.",
50
- "files": []
99
+ "files": [
100
+ "files/scenarios.json"
101
+ ],
102
+ "expectations": [
103
+ "Audits optional non-evidence runbook references.",
104
+ "Reports missing ATP definition rather than using a matrix/evidence row as definition.",
105
+ "Keeps provider ADR Proposed without separate explicit acceptance."
106
+ ]
51
107
  },
52
108
  {
53
109
  "id": 9,
54
110
  "prompt": "Create a new long-lived suite baseline and keep its README in Chinese. Generate the complete records without implementation evidence.",
55
- "expected_output": "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.",
56
- "files": []
111
+ "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
+ ],
115
+ "expectations": [
116
+ "With complete supported input, generates both derived views using README language.",
117
+ "Canonical declarations and progress header names match the new input contract.",
118
+ "No fabricated dates, estimates, history, or verified proof."
119
+ ]
57
120
  },
58
121
  {
59
122
  "id": 10,
60
123
  "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.",
61
- "expected_output": "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.",
62
- "files": []
124
+ "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
+ ],
128
+ "expectations": [
129
+ "Changes authority/status first, then regenerates/checks both eligible charts.",
130
+ "Reports chart model/freshness separately from authority audit and ATP proof.",
131
+ "Does not hand-edit SVGs or invent definitions to satisfy charts."
132
+ ]
63
133
  },
64
134
  {
65
135
  "id": 11,
66
136
  "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.",
67
- "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 unobserved site/flavor/env/SsrSite/command identifiers as TODO(confirm from active source), and does not fabricate Basic or Start facts.",
68
- "files": []
137
+ "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
+ ],
141
+ "expectations": [
142
+ "When both audiences are unresolved, offers contextual four-way single-select plus Other.",
143
+ "Shared targets are inspected/cited; new designs are labeled proposed rather than observed.",
144
+ "Leaves unchecked values gated without assuming Basic/Start tuple details."
145
+ ]
69
146
  },
70
147
  {
71
148
  "id": 12,
72
149
  "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.",
73
- "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 defines only source-confirmed proof, and progress remains derived. It preserves every missing independent identifier as TODO(confirm from active source), cites the shared Admin target, avoids creating source/config/scripts, and does not imply separate persistence, tenancy, identity, or authorization ownership.",
74
- "files": []
150
+ "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
+ ],
154
+ "expectations": [
155
+ "Keeps mixed strategy and separates independent-Web creation from shared-Admin integration.",
156
+ "Unspecified tuple values remain explicit design/discovery gates, not fabricated facts.",
157
+ "Allows a future validated explicitly approved new design without requiring pre-existing source; no implementation now."
158
+ ]
75
159
  },
76
160
  {
77
161
  "id": 13,
78
162
  "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.",
79
163
  "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.",
80
- "files": []
164
+ "files": [
165
+ "files/scenarios.json"
166
+ ],
167
+ "expectations": [
168
+ "Blocks only dependent site/frontend implementation branches.",
169
+ "Preserves actionable backend/discovery status without inventing site facts.",
170
+ "Deferred strategy remains controlling TODO/ADR gate rather than globally blocking every task."
171
+ ]
172
+ },
173
+ {
174
+ "id": 14,
175
+ "prompt": "Plan a new independent Web-only training site. Candidate tuple: flavor evalTrainingWeb, site ID evalTrainingReader, public path /eval-training, site module training-site, bundle derived from the inspected release rule, and root wrapper build:zova:eval:training:web as a planned addition. These are proposals, not current source facts. Inspect active framework constraints and collisions; then show the concrete design and generation gates. In follow-up I will separately approve the tuple, accept its ADR, and approve only one bounded execution dossier. Do not demand that future source already exists.",
176
+ "expected_output": "Validates the candidate tuple against active framework/source constraints and collisions, separates proposed from approved-new state, and permits later bounded creation only with explicit design approval, Accepted ADR, and execution dossier approval. The new wrapper remains a planned addition until created/observed.",
177
+ "expectations": [
178
+ "Inspects active constraints and collisions without treating fixture candidates as source truth.",
179
+ "Single Web audience does not trigger redundant Web/Admin four-way question.",
180
+ "Generation approval alone does not accept the ADR or authorize creation.",
181
+ "After separate design approval and Accepted ADR, future source absence alone is not a blocker; execution remains bounded.",
182
+ "New wrapper is never presented as currently runnable."
183
+ ],
184
+ "files": [
185
+ "files/scenarios.json"
186
+ ]
187
+ },
188
+ {
189
+ "id": 15,
190
+ "prompt": "Update one approved requirement in an existing repo-specs suite. Read its authority map; keep existing IDs, evidence, accepted shared-site strategy, and unrelated progress. The directory already exists because this is an incremental change, not a request to reset or recreate it. Show the proposed diff and confirmation gate first.",
191
+ "expected_output": "Uses incremental maintenance, preserves established strategy and history, asks only for missing delta decisions, updates upstream authority before downstream associations, and reports legacy gaps without altering business definitions for tools.",
192
+ "expectations": [
193
+ "Existing directory is normal update destination, not automatic conflict.",
194
+ "No directory reset, baseline recreation, ID renumbering, or unrelated status change.",
195
+ "Established strategy skips redundant four-way choice.",
196
+ "Legacy audit/chart gaps are distinct and not repaired by invented business meaning."
197
+ ],
198
+ "files": [
199
+ "files/scenarios.json"
200
+ ]
201
+ },
202
+ {
203
+ "id": 16,
204
+ "prompt": "This is an explicitly lightweight backend-only tutorial planning request, not a long-lived suite. Agree on README plus one PRD requirement only; omit SRS/WBS/ATP/progress/ADR and charts. Do not create placeholders for omitted owners. Confirm the limited output, then use the appropriate audit branch and report its limits.",
205
+ "expected_output": "Confirms explicitly lightweight scope, creates only approved records, runs positional spec:check with --lightweight, reports omitted full-chain coverage, and skips charts for incomplete input without fabricating owners or proof.",
206
+ "expectations": [
207
+ "Uses npm run spec:check -- <suite> --lightweight only after scope approval.",
208
+ "Omitted owners are stated; no dangling references or phantom declarations.",
209
+ "No forced full baseline, empty progress/evidence, or charts with incomplete input.",
210
+ "Static lightweight pass is not full-chain or behavioral/ATP success."
211
+ ],
212
+ "files": [
213
+ "files/scenarios.json"
214
+ ]
215
+ },
216
+ {
217
+ "id": 17,
218
+ "prompt": "I invoked spec generation for a new CRM baseline, but provider/suite names need validation first. Use domain planning only to settle names. After I confirm the naming option, return to the baseline conversation; do not scaffold a suite/module or run contract generation.",
219
+ "expected_output": "Uses a naming-only domain-planning detour, returns validated identity to the original generation mode, and requires generation/ADR/execution approvals separately before any later implementation.",
220
+ "expectations": [
221
+ "Domain planning is explicitly naming-only and returns to generation.",
222
+ "Naming confirmation does not trigger scaffold or dependency commands.",
223
+ "Generation resumes mode/input collection and its own confirmation gate.",
224
+ "Final implementation handoff is one bounded spec-execution candidate, not broad direct scaffold."
225
+ ],
226
+ "files": [
227
+ "files/scenarios.json"
228
+ ]
81
229
  }
82
230
  ]
83
231
  }