@rsaglobaltech/specgate 0.8.1 → 0.9.0

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 (121) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +8 -8
  3. package/bin/specgate.ts +13 -2
  4. package/dist/bin/specgate.js +11 -1
  5. package/dist/bin/specgate.js.map +1 -1
  6. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js +56 -0
  7. package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js.map +1 -1
  8. package/dist/packages/core/src/application/ValidateProjectUseCase.js +54 -0
  9. package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
  10. package/dist/packages/core/src/domain/AdversarialProbe.js +75 -0
  11. package/dist/packages/core/src/domain/AdversarialProbe.js.map +1 -0
  12. package/dist/packages/core/src/domain/AgentPrompt.js +52 -3
  13. package/dist/packages/core/src/domain/AgentPrompt.js.map +1 -1
  14. package/dist/packages/core/src/domain/DeclaredArtifacts.js +25 -0
  15. package/dist/packages/core/src/domain/DeclaredArtifacts.js.map +1 -1
  16. package/dist/packages/core/src/domain/DoneVerification.js +68 -0
  17. package/dist/packages/core/src/domain/DoneVerification.js.map +1 -0
  18. package/dist/packages/core/src/domain/GateCommandIntegrity.js +139 -0
  19. package/dist/packages/core/src/domain/GateCommandIntegrity.js.map +1 -0
  20. package/dist/packages/core/src/domain/HarnessConfig.js +6 -0
  21. package/dist/packages/core/src/domain/HarnessConfig.js.map +1 -1
  22. package/dist/packages/core/src/domain/MultiStack.js +96 -0
  23. package/dist/packages/core/src/domain/MultiStack.js.map +1 -0
  24. package/dist/packages/core/src/domain/Precedents.js +96 -0
  25. package/dist/packages/core/src/domain/Precedents.js.map +1 -0
  26. package/dist/packages/core/src/domain/RequirementRemoval.js +161 -0
  27. package/dist/packages/core/src/domain/RequirementRemoval.js.map +1 -0
  28. package/dist/packages/core/src/domain/ScenarioCoverage.js +178 -0
  29. package/dist/packages/core/src/domain/ScenarioCoverage.js.map +1 -0
  30. package/dist/packages/core/src/domain/SpecSections.js +206 -0
  31. package/dist/packages/core/src/domain/SpecSections.js.map +1 -0
  32. package/dist/packages/core/src/domain/TestCommand.js +82 -0
  33. package/dist/packages/core/src/domain/TestCommand.js.map +1 -0
  34. package/dist/packages/core/src/domain/TraceabilityFormat.js +37 -1
  35. package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
  36. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js +31 -0
  37. package/dist/packages/core/src/infrastructure/HarnessConfigFile.js.map +1 -1
  38. package/dist/packages/core/test/unit/adversarial-probe.test.js +81 -0
  39. package/dist/packages/core/test/unit/adversarial-probe.test.js.map +1 -0
  40. package/dist/packages/core/test/unit/done-verification.test.js +83 -0
  41. package/dist/packages/core/test/unit/done-verification.test.js.map +1 -0
  42. package/dist/packages/core/test/unit/gate-command-integrity.test.js +114 -0
  43. package/dist/packages/core/test/unit/gate-command-integrity.test.js.map +1 -0
  44. package/dist/packages/core/test/unit/multi-stack.test.js +86 -0
  45. package/dist/packages/core/test/unit/multi-stack.test.js.map +1 -0
  46. package/dist/packages/core/test/unit/precedents.test.js +99 -0
  47. package/dist/packages/core/test/unit/precedents.test.js.map +1 -0
  48. package/dist/packages/core/test/unit/requirement-removal.test.js +124 -0
  49. package/dist/packages/core/test/unit/requirement-removal.test.js.map +1 -0
  50. package/dist/packages/core/test/unit/scenario-coverage.test.js +146 -0
  51. package/dist/packages/core/test/unit/scenario-coverage.test.js.map +1 -0
  52. package/dist/packages/core/test/unit/spec-sections.test.js +146 -0
  53. package/dist/packages/core/test/unit/spec-sections.test.js.map +1 -0
  54. package/dist/packages/core/test/unit/test-command.test.js +81 -0
  55. package/dist/packages/core/test/unit/test-command.test.js.map +1 -0
  56. package/dist/packages/core/test/unit/validate-project.test.js +21 -0
  57. package/dist/packages/core/test/unit/validate-project.test.js.map +1 -1
  58. package/dist/scripts/agents/commands.js +1 -1
  59. package/dist/scripts/agents/commands.js.map +1 -1
  60. package/dist/scripts/agents/init.js +1 -1
  61. package/dist/scripts/agents/init.js.map +1 -1
  62. package/dist/scripts/change/instructions.js +2 -2
  63. package/dist/scripts/change/instructions.js.map +1 -1
  64. package/dist/scripts/cli/commands/change/ChangeCommand.js +2 -2
  65. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  66. package/dist/scripts/cli/commands/config/CiInitCommand.js +1 -1
  67. package/dist/scripts/cli/commands/config/CiInitCommand.js.map +1 -1
  68. package/dist/scripts/cli/commands/harness/RunCommand.js +203 -4
  69. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  70. package/dist/scripts/cli/commands/pack/InferPackCommand.js +331 -31
  71. package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
  72. package/dist/scripts/cli/commands/project/AdoptCommand.js +81 -4
  73. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  74. package/dist/scripts/cli/commands/project/InitProjectCommand.js +245 -45
  75. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  76. package/dist/scripts/cli/commands/quality/DoctorCommand.js +20 -2
  77. package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
  78. package/dist/scripts/cli/commands/quality/FixCommand.js +1 -1
  79. package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
  80. package/dist/scripts/cli/commands/quality/ReportCommand.js +1 -1
  81. package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
  82. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +340 -18
  83. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  84. package/dist/scripts/cli/commands/spec/DoneCommand.js +108 -0
  85. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  86. package/dist/scripts/cli/commands/spec/PlanCommand.js +7 -1
  87. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
  88. package/dist/scripts/cli/commands/spec/ReqCommand.js +112 -2
  89. package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
  90. package/dist/scripts/cli/commands/spec/StatusCommand.js +2 -2
  91. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  92. package/dist/scripts/docs/build-site.js +145 -35
  93. package/dist/scripts/docs/build-site.js.map +1 -1
  94. package/dist/scripts/docs/components.js +208 -0
  95. package/dist/scripts/docs/components.js.map +1 -0
  96. package/dist/scripts/docs/highlight.js +180 -0
  97. package/dist/scripts/docs/highlight.js.map +1 -0
  98. package/dist/scripts/docs/icons.js +63 -0
  99. package/dist/scripts/docs/icons.js.map +1 -0
  100. package/dist/scripts/docs/nav.js +9 -3
  101. package/dist/scripts/docs/nav.js.map +1 -1
  102. package/dist/scripts/gen_mcp_tools.js +22 -2
  103. package/dist/scripts/gen_mcp_tools.js.map +1 -1
  104. package/dist/scripts/harness/init.js +101 -40
  105. package/dist/scripts/harness/init.js.map +1 -1
  106. package/dist/scripts/harness/worktree-lock.js +161 -0
  107. package/dist/scripts/harness/worktree-lock.js.map +1 -0
  108. package/dist/scripts/infer_pack.js +4 -1
  109. package/dist/scripts/infer_pack.js.map +1 -1
  110. package/dist/scripts/lib/surface.js +35 -7
  111. package/dist/scripts/lib/surface.js.map +1 -1
  112. package/package.json +5 -2
  113. package/templates/adopt/AI_RULES.md.tpl +1 -1
  114. package/templates/adopt/spec.md.tpl +4 -4
  115. package/templates/base/spec.md.tpl +12 -0
  116. package/templates/ci/azure.yml.tpl +2 -2
  117. package/templates/ci/github.yml.tpl +2 -2
  118. package/templates/ci/gitlab.yml.tpl +1 -1
  119. package/templates/ci/jenkins.tpl +1 -1
  120. package/templates/contracts/test-strategy.md.tpl +2 -2
  121. package/templates/harness/prompt-prefix.md.tpl +2 -5
package/CHANGELOG.md CHANGED
@@ -6,6 +6,104 @@ and [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  The release process is in [`docs/release-process.md`](docs/release-process.md).
8
8
 
9
+ ## [Unreleased]
10
+
11
+ ## [0.9.0] — 2026-10-06
12
+
13
+ ### Added
14
+
15
+ - **`prompt_precedents` shows the agent an accepted requirement from the same
16
+ bounded context.** Everything else in the prompt is normative — facts,
17
+ Gherkin, `AI_RULES.md`, the definition of done — and none of it is an
18
+ example. An agent with no conversation history has never seen what an
19
+ accepted implementation looks like in your repository, so it invents a house
20
+ style and the next attempt is spent correcting it.
21
+
22
+ Three rules keep the section from doing harm: the same bounded context only
23
+ (a precedent from elsewhere teaches conventions that do not apply, with the
24
+ authority of having been accepted), `Verified` rather than `Implemented`
25
+ (one means the code exists, the other means somebody checked it), and an
26
+ earlier requirement only. It says in as many words that it is an example of
27
+ shape and not of behaviour. Nothing qualifying means no section rather than
28
+ an empty one, and a moved artifact never stops a run.
29
+
30
+ Off by default. Closes #106.
31
+
32
+ - **`pack infer` stops making five corrections you had to make by hand.** The
33
+ same operation inferred from two scenarios is proposed once rather than twice
34
+ with two ids; a `When` that reads becomes a query with a `QRY-` id, which the
35
+ pack model already distinguished and inference did not; names drop glue words,
36
+ so "10 more vehicles enter the facility" gives `MoreVehiclesEnterFacility`
37
+ rather than spending its four-word budget on "the"; field names are proposed
38
+ from `<placeholders>` and `key: value` pairs, each with a `TODO` for its type;
39
+ and `--from` repeats and accepts a directory, so a command shared by three
40
+ files is proposed once.
41
+
42
+ `--llm` is *not* here: ADR-0014 defers it, and reopening that needs an ADR
43
+ rather than a flag. Everything above stays a skeleton to review with every
44
+ guess carrying its `TODO` — an inference that stops looking like a guess is
45
+ the failure mode the ADR names. Closes #32.
46
+
47
+ Also fixes a latent bug in the renderer: an empty list rendered as a bare `[]`
48
+ on its own line, which the project's YAML reader rejects. Nothing had an empty
49
+ list to render until queries arrived.
50
+
51
+ - **`adversary_profile` lets a second agent try to break a green
52
+ implementation.** The advisory reviewer that already exists returns prose; an
53
+ adversary returns a test, and a test either fails or it does not. After the
54
+ gate passes and the work is committed, it is asked for one case the
55
+ requirement should handle and might not; the project's tests then run again
56
+ with it in place.
57
+
58
+ A failing probe is a recorded warning and **never** a verdict. An adversary
59
+ can always assert a behaviour nobody specified, so letting it fail the run
60
+ would block correct work and make it a second judge — the gate stays the only
61
+ one. Runs once per requirement, on a green gate only, and its writes are
62
+ discarded so the branch carries the implementer's work alone. Closes #107.
63
+
64
+ - **`harness run --verbose`** streams the gate command's output as it runs,
65
+ on stderr. Without it the output only appeared when the gate failed, so a run
66
+ that takes minutes showed nothing and a hung test looked like a working one.
67
+ Stdout stays reserved for `--format json`. Closes #34.
68
+
69
+ ### Fixed
70
+
71
+ - **Every place that recommends a gate now recommends the gate.** `--strict`
72
+ became the one gate in #174, but `specgate --help --all`, its example,
73
+ `status`, `fix`, `change`, the instructions written for agents, the MCP tool
74
+ description, the README, seven documentation pages and two templates still
75
+ sold `--strict-tdd` — which passes a requirement whose test file is gone.
76
+ The individual `--strict-*` flags keep working.
77
+ - **`req add|link|rm|done --help` answer with the subcommand's own help.** They
78
+ printed the parent usage, whose last line tells you to run exactly that.
79
+ - **The `spec.md` written by `adopt` describes `req add` as it is.** It still
80
+ said `req add` "does not write a section here" after it started writing one.
81
+
82
+ - **`git worktree add` raced itself under `--concurrency`.** Each requirement
83
+ runs in its own process and every one creates a worktree in the same
84
+ repository; git writes `.git/worktrees/<name>/` incrementally, so a sibling
85
+ read an entry that was half there and failed with `failed to read …
86
+ /commondir`. Worse, the failure was *attributed*: the run reported the
87
+ requirement as failed with "the agent produced no files", so a race in the
88
+ harness read as the agent's fault.
89
+
90
+ `git worktree add` is now serialised across processes with a lock directory
91
+ in `.git/`. Only the creation is inside it — the agent and the gate stay
92
+ parallel. Closes #158.
93
+
94
+ - **MCP could edit the specification it was being measured against.** The
95
+ prompt said not to; nothing enforced it. Tools that write a protected path
96
+ are refused unless a change is open, with the list declared once on the
97
+ command surface and the escape hatch written down in `.csda/config.json`
98
+ rather than passed with the call. Closes #138.
99
+
100
+ ### Changed
101
+
102
+ - **Pull requests target `develop`, not `main`.** `main` is the branch releases
103
+ are cut from and the first thing an evaluator sees, so it does not get to be
104
+ red — not even briefly. A green `develop` is fast-forwarded into `main` and
105
+ the release is cut from there. CI runs on pushes to both.
106
+
9
107
  ## [0.8.1] — 2026-09-01
10
108
 
11
109
  ### Changed
package/README.md CHANGED
@@ -5,8 +5,8 @@
5
5
  **Specs as executable contracts — requirements, scenarios and traceability that CI enforces.**
6
6
 
7
7
  [![CI](https://github.com/rsaglobaltech/specgate/actions/workflows/ci.yml/badge.svg)](https://github.com/rsaglobaltech/specgate/actions/workflows/ci.yml)
8
- [![npm latest](https://img.shields.io/npm/v/specgate?logo=npm&label=npm)](https://www.npmjs.com/package/specgate)
9
- [![npm beta](https://img.shields.io/npm/v/specgate/beta?logo=npm&label=beta)](https://www.npmjs.com/package/specgate)
8
+ [![npm](https://img.shields.io/npm/v/%40rsaglobaltech%2Fspecgate?logo=npm&label=npm)](https://www.npmjs.com/package/@rsaglobaltech/specgate)
9
+ [![Docker](https://img.shields.io/badge/ghcr.io-specgate-2496ed?logo=docker&logoColor=white)](https://github.com/rsaglobaltech/specgate/pkgs/container/specgate)
10
10
  [![Docs](https://img.shields.io/badge/docs-github_pages-0e8078)](https://rsaglobaltech.github.io/specgate/)
11
11
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](#-license)
12
12
 
@@ -20,8 +20,8 @@
20
20
 
21
21
  ## ⚡ Start
22
22
 
23
- > **Just renamed** ([ADR-0024](docs/specs/adr/0024-the-tool-is-renamed-the-format-is-not.md)): until the
24
- > first release under the new name the registries still hold `create-spec-driven-app` and the `csda` image — both kept as aliases.
23
+ > **The npm package is scoped; the binary is not.** `spec-gate` already claims the
24
+ > unscoped name ([ADR-0024](docs/specs/adr/0024-the-tool-is-renamed-the-format-is-not.md)). You type `specgate`; `csda` still works too.
25
25
 
26
26
  **Existing codebase** — the common enterprise case:
27
27
 
@@ -41,7 +41,7 @@ npx @rsaglobaltech/specgate@latest init # interactive wizard
41
41
  Requires **Node.js ≥ 22** — or none at all with the Docker image:
42
42
 
43
43
  ```bash
44
- docker run --rm -v "$PWD:/workspace" ghcr.io/rsaglobaltech/specgate validate . --strict-tdd
44
+ docker run --rm -v "$PWD:/workspace" ghcr.io/rsaglobaltech/specgate validate . --strict
45
45
  ```
46
46
 
47
47
  → [Getting started](docs/getting-started.md) · [Quickstart for joiners](docs/quickstart.md)
@@ -53,7 +53,7 @@ Each level is useful on its own and never requires the ones above it.
53
53
  | Level | You get | Commands | Cost |
54
54
  | --- | --- | --- | --- |
55
55
  | **L1** | Traceable specs in your repo | `onboard`, `adopt` | ~1 hour |
56
- | **L2** | A PR gate enforcing spec and test coverage | `validate --strict-tdd` | ~1 hour |
56
+ | **L2** | A PR gate enforcing spec and test coverage | `validate --strict` | ~1 hour |
57
57
  | **L3** | Versioned, reusable domain requirements | `specops add / sync / diff` | ~1 day |
58
58
  | **L4** | Agent-driven delivery, one requirement at a time | `agents init`, `harness run` | ~1 week |
59
59
 
@@ -66,8 +66,8 @@ closes them.
66
66
  → [Quickstart](docs/quickstart.md) · [Command reference](docs/commands.md)
67
67
 
68
68
  **Specs that are checked.** `specgate validate` fails the build when a requirement
69
- has no scenario, no test, or no row in the traceability matrix. `--strict-tdd`
70
- fails it when a requirement moves past Draft without a test.
69
+ has no scenario, no test, or no row in the traceability matrix. `--strict` — the
70
+ gate — also fails one past Draft without a test, or linked to a missing file.
71
71
  → [Writing specs](docs/writing-specs.md) · [Validating](docs/validating.md)
72
72
 
73
73
  **Changes you review as intent.** Modify a spec that already shipped through a
package/bin/specgate.ts CHANGED
@@ -86,8 +86,8 @@ const EXAMPLES =
86
86
  "Generate a new project from a config file"
87
87
  ) +
88
88
  example(
89
- `npx @rsaglobaltech/specgate@latest validate ./projects/my-app --strict-tdd`,
90
- "Validate with the TDD gate"
89
+ `npx @rsaglobaltech/specgate@latest validate ./projects/my-app --strict`,
90
+ "Validate with the gate"
91
91
  ) +
92
92
  example(
93
93
  `npx @rsaglobaltech/specgate@latest expand --pack-root ./domain-packs \\\n --pack parking-management/backend --project-dir ./projects/my-app \\\n --var PROJECT_NAME="My App" --var PROJECT_SLUG=my-app --var DOMAIN="parking ops"`,
@@ -313,6 +313,15 @@ function dispatchValidate(validateArgs: string[]): void {
313
313
  const script = resolveScript(["validate_specs.js"]);
314
314
  ensureExecutable(script);
315
315
 
316
+ // `--help` before the positional check. Asking a command what it does must
317
+ // never be a usage error — `specgate validate --help` answered "expects
318
+ // exactly one positional argument", which is the tool refusing to explain
319
+ // itself to someone who is trying to learn it.
320
+ if (validateArgs.includes("--help") || validateArgs.includes("-h")) {
321
+ runNodeScript(script, ["--help"]);
322
+ return;
323
+ }
324
+
316
325
  const positional = validateArgs.filter((a) => !a.startsWith("-"));
317
326
  if (positional.length !== 1) {
318
327
  error(`'validate' expects exactly one positional argument: <project_dir>`);
@@ -320,10 +329,12 @@ function dispatchValidate(validateArgs: string[]): void {
320
329
  process.exit(2);
321
330
  }
322
331
  const VALIDATE_FLAGS = new Set([
332
+ "--strict",
323
333
  "--strict-tdd",
324
334
  "--strict-scenarios",
325
335
  "--strict-requirements",
326
336
  "--strict-links",
337
+ "--strict-coverage",
327
338
  "--against-lock",
328
339
  "--json",
329
340
  ]);
@@ -96,7 +96,7 @@ function example(line, comment) {
96
96
  const EXAMPLES = example(`npx @rsaglobaltech/specgate@latest init`, "Generate a new project (wizard)") +
97
97
  example(`npx @rsaglobaltech/specgate@latest adopt --project-dir ./my-existing-repo`, "Adopt SDD on an existing codebase") +
98
98
  example(`npx @rsaglobaltech/specgate@latest init --config ./project.config --out ./projects`, "Generate a new project from a config file") +
99
- example(`npx @rsaglobaltech/specgate@latest validate ./projects/my-app --strict-tdd`, "Validate with the TDD gate") +
99
+ example(`npx @rsaglobaltech/specgate@latest validate ./projects/my-app --strict`, "Validate with the gate") +
100
100
  example(`npx @rsaglobaltech/specgate@latest expand --pack-root ./domain-packs \\\n --pack parking-management/backend --project-dir ./projects/my-app \\\n --var PROJECT_NAME="My App" --var PROJECT_SLUG=my-app --var DOMAIN="parking ops"`, "Apply a local pack") +
101
101
  example(`npx @rsaglobaltech/specgate@latest expand --pack-repo https://github.com/acme/parking-specops.git \\\n --pack-version v0.1.0 --pack backend --project-dir ./projects/smart-parking \\\n --var PROJECT_NAME="Smart Parking"`, "Apply a remote pack pinned to a git tag") +
102
102
  example(`npx @rsaglobaltech/specgate@latest specops sync --project-dir ./projects/smart-parking`, "Re-expand everything in .specops.lock / specops.config.yaml") +
@@ -276,6 +276,14 @@ function dispatchInit(passThrough) {
276
276
  function dispatchValidate(validateArgs) {
277
277
  const script = resolveScript(["validate_specs.js"]);
278
278
  ensureExecutable(script);
279
+ // `--help` before the positional check. Asking a command what it does must
280
+ // never be a usage error — `specgate validate --help` answered "expects
281
+ // exactly one positional argument", which is the tool refusing to explain
282
+ // itself to someone who is trying to learn it.
283
+ if (validateArgs.includes("--help") || validateArgs.includes("-h")) {
284
+ runNodeScript(script, ["--help"]);
285
+ return;
286
+ }
279
287
  const positional = validateArgs.filter((a) => !a.startsWith("-"));
280
288
  if (positional.length !== 1) {
281
289
  error(`'validate' expects exactly one positional argument: <project_dir>`);
@@ -283,10 +291,12 @@ function dispatchValidate(validateArgs) {
283
291
  process.exit(2);
284
292
  }
285
293
  const VALIDATE_FLAGS = new Set([
294
+ "--strict",
286
295
  "--strict-tdd",
287
296
  "--strict-scenarios",
288
297
  "--strict-requirements",
289
298
  "--strict-links",
299
+ "--strict-coverage",
290
300
  "--against-lock",
291
301
  "--json",
292
302
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"specgate.js","sourceRoot":"","sources":["../../bin/specgate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specgate.js","sourceRoot":"","sources":["../../bin/specgate.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GenerateAgentPromptUseCase = void 0;
4
4
  const AgentPrompt_1 = require("../domain/AgentPrompt");
5
5
  const HarnessRun_1 = require("../domain/HarnessRun");
6
+ const Precedents_1 = require("../domain/Precedents");
7
+ const SpecSections_1 = require("../domain/SpecSections");
8
+ const TraceabilityFormat_1 = require("../domain/TraceabilityFormat");
9
+ const MATRIX = "docs/specs/traceability.md";
6
10
  class GenerateAgentPromptUseCase {
7
11
  configRepo;
8
12
  constructor(configRepo) {
@@ -14,11 +18,63 @@ class GenerateAgentPromptUseCase {
14
18
  ? this.configRepo.readProjectFile(projectDir, featurePath)
15
19
  : null;
16
20
  const aiRulesContent = this.configRepo.readProjectFile(projectDir, "AI_RULES.md");
21
+ // The requirement's own prose. Not reading it is how the prompt came to say
22
+ // "Implement REQ-002" with every fact `-` and nothing to implement.
23
+ const specSource = this.configRepo.readProjectFile(projectDir, "spec.md");
24
+ const requirementText = specSource
25
+ ? (0, SpecSections_1.extractRequirementSection)(specSource, String(req.requirement || ""))
26
+ : null;
17
27
  return AgentPrompt_1.AgentPrompt.build(req, {
18
28
  ...opts,
19
29
  featureContent,
20
30
  aiRulesContent,
31
+ requirementText: requirementText || undefined,
32
+ // Opt-in: the caller decides, because a precedent costs prompt budget and
33
+ // is only worth it once a project has accepted work to point at.
34
+ precedent: opts.withPrecedents ? this.findPrecedent(req, projectDir) : null,
35
+ });
36
+ }
37
+ /**
38
+ * The most recent accepted requirement in the same bounded context, with the
39
+ * top of its test and its implementation.
40
+ *
41
+ * Returns null rather than throwing on anything missing. A prompt that fails
42
+ * to build because an artifact was moved would stop a run over a section that
43
+ * is, by design, optional.
44
+ */
45
+ findPrecedent(req, projectDir) {
46
+ const matrix = this.configRepo.readProjectFile(projectDir, MATRIX);
47
+ if (!matrix)
48
+ return null;
49
+ const mode = (0, TraceabilityFormat_1.detectTraceabilityMode)(matrix);
50
+ if (!mode)
51
+ return null;
52
+ const rows = (0, TraceabilityFormat_1.parseMatrixRows)(matrix).map((cells) => {
53
+ const fields = (0, TraceabilityFormat_1.readRowFields)(cells, mode);
54
+ return {
55
+ requirementId: fields.requirementId,
56
+ status: fields.status,
57
+ testArtifact: fields.testArtifact,
58
+ // The production artifact is the column before the test one in a rich
59
+ // matrix, and absent from a legacy one.
60
+ technicalArtifact: mode === "rich" ? cells[8] || "" : "",
61
+ };
21
62
  });
63
+ const choice = (0, Precedents_1.choosePrecedent)(rows, (0, TraceabilityFormat_1.parseMatrixContexts)(matrix), req.requirement);
64
+ if (!choice)
65
+ return null;
66
+ const read = (rel) => (rel ? this.configRepo.readProjectFile(projectDir, rel) : null);
67
+ const testSource = read(choice.testArtifact);
68
+ const codeSource = read(choice.technicalArtifact);
69
+ if (!testSource && !codeSource)
70
+ return null;
71
+ return {
72
+ requirementId: choice.requirementId,
73
+ testArtifact: choice.testArtifact,
74
+ testExcerpt: testSource ? (0, Precedents_1.excerpt)(testSource) : "",
75
+ technicalArtifact: choice.technicalArtifact,
76
+ technicalExcerpt: codeSource ? (0, Precedents_1.excerpt)(codeSource) : "",
77
+ };
22
78
  }
23
79
  }
24
80
  exports.GenerateAgentPromptUseCase = GenerateAgentPromptUseCase;
@@ -1 +1 @@
1
- {"version":3,"file":"GenerateAgentPromptUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GenerateAgentPromptUseCase.ts"],"names":[],"mappings":";;;AACA,uDAAsF;AACtF,qDAAuD;AAEvD,MAAa,0BAA0B;IACjB;IAApB,YAAoB,UAAoC;QAApC,eAAU,GAAV,UAAU,CAA0B;IAAG,CAAC;IAErD,OAAO,CAAC,GAAsB,EAAE,UAAkB,EAAE,OAAsB,EAAE;QACjF,MAAM,WAAW,GAAG,IAAA,4BAAe,EAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QACjD,MAAM,cAAc,GAAG,WAAW;YAChC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC;YAC1D,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAElF,OAAO,yBAAW,CAAC,KAAK,CAAC,GAAG,EAAE;YAC5B,GAAG,IAAI;YACP,cAAc;YACd,cAAc;SACf,CAAC,CAAC;IACL,CAAC;CACF;AAhBD,gEAgBC"}
1
+ {"version":3,"file":"GenerateAgentPromptUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GenerateAgentPromptUseCase.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST_DRAFT_STATUS = exports.ALLOWED_STATUS = exports.RICH_HEADER = exports.LEGACY_HEADER = exports.ValidateProjectUseCase = void 0;
4
4
  const ValidationReport_1 = require("../domain/ValidationReport");
5
+ const SpecSections_1 = require("../domain/SpecSections");
5
6
  const TraceabilityFormat_1 = require("../domain/TraceabilityFormat");
6
7
  Object.defineProperty(exports, "ALLOWED_STATUS", { enumerable: true, get: function () { return TraceabilityFormat_1.ALLOWED_STATUS; } });
7
8
  Object.defineProperty(exports, "LEGACY_HEADER", { enumerable: true, get: function () { return TraceabilityFormat_1.LEGACY_HEADER; } });
@@ -53,8 +54,30 @@ class ValidateProjectUseCase {
53
54
  }
54
55
  const strictTdd = opts.strictTdd === true;
55
56
  const seenScenarios = new Set();
57
+ const seenRequirements = new Set();
56
58
  for (const cells of (0, TraceabilityFormat_1.parseMatrixRows)(traceContent)) {
57
59
  const { requirementId, scenarioId, testArtifact, status } = (0, TraceabilityFormat_1.readRowFields)(cells, mode);
60
+ // A requirement id is the primary key of this table: `done`, `req link`
61
+ // and `plan` all address a row by it, and every writer allocates a fresh
62
+ // one. Two rows under one id is not a broken link, it is a broken table —
63
+ // `req link REQ-003` then writes *both*, so one requirement's test
64
+ // artifact silently becomes another's, and the matrix asserts a proof
65
+ // that was never run. Three cold adoptions reached that state through the
66
+ // tool's own commands while every gate stayed green.
67
+ if (requirementId && requirementId !== "-") {
68
+ if (seenRequirements.has(requirementId)) {
69
+ report.addError("duplicate_requirement_id", `Duplicate Requirement ID in traceability.md: ${requirementId}`, {
70
+ target: requirementId,
71
+ fixLines: [
72
+ "A requirement id addresses exactly one row — `req link` and `done` write every",
73
+ `row that matches, so two ${requirementId} rows corrupt each other.`,
74
+ "Renumber the later row to the next free id, or delete it if it is a leftover",
75
+ "proposal from `adopt` that you have since replaced.",
76
+ ],
77
+ });
78
+ }
79
+ seenRequirements.add(requirementId);
80
+ }
58
81
  if (requirementId)
59
82
  requirements.add(requirementId);
60
83
  if (scenarioId && scenarioId !== "-") {
@@ -93,6 +116,37 @@ class ValidateProjectUseCase {
93
116
  report.addError("strict_tdd_violation", `[TDD-3] Requirement ${reqId} found in spec.md but has no row in traceability.md`, { target: "TDD-3" });
94
117
  }
95
118
  }
119
+ // The other direction. `req add` used to write a matrix row and no
120
+ // prose, so a requirement could exist as a table entry with no text
121
+ // anywhere — and the harness prompt then asked an agent to implement
122
+ // something the prompt could not describe.
123
+ //
124
+ // A mention in prose is not a section: TDD-3 above matches `REQ-014`
125
+ // wherever it appears, which is right for "is this row missing", and
126
+ // wrong here. This asks for a `## REQ-014` heading.
127
+ const declared = new Set((0, SpecSections_1.requirementSections)(opts.specContent));
128
+ for (const reqId of requirements) {
129
+ // Same scope as TDD-3 above: `REQ-` ids only. A matrix may also carry
130
+ // `NFR-` rows, which live in their own section of spec.md and are not
131
+ // what the harness prompt asks an agent to implement.
132
+ if (!/^REQ-\d+/.test(reqId))
133
+ continue;
134
+ if (declared.has(reqId))
135
+ continue;
136
+ // A warning, not an error, and deliberately so. ADR-0026 commits to the
137
+ // 0.9 line warning about checks that become mandatory in 1.0, because a
138
+ // green-to-red flip in a minor release is how a tool gets removed from
139
+ // a pipeline. Every project whose matrix predates `req add` writing
140
+ // prose would go red on upgrade over text nobody asked them for.
141
+ report.addWarning("requirement_without_prose", `${reqId} has a row in traceability.md but no requirement text in spec.md. ` +
142
+ `This becomes an error in 1.0 (ADR-0026).`, {
143
+ target: reqId,
144
+ file: "spec.md",
145
+ fix: `Write its prose — \`specgate req add\` does it for you, and \`## ${reqId} — ` +
146
+ `<title>\` by hand works too. Until then the harness prompt cannot tell an ` +
147
+ `agent what ${reqId} requires.`,
148
+ });
149
+ }
96
150
  }
97
151
  return { report, mode, requirements };
98
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ValidateProjectUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/ValidateProjectUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValidateProjectUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/ValidateProjectUseCase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * The adversarial verification step (D3).
4
+ *
5
+ * ## What it is, and what the advisory reviewer is not
6
+ *
7
+ * The harness already has a reviewer: an advisory agent that reads the work and
8
+ * returns prose, which feeds the next prompt. It is useful and it is *opinion*.
9
+ *
10
+ * An adversary does something a reviewer cannot: it writes a **test**, and the
11
+ * test either fails or it does not. Where a reviewer says "this looks like it
12
+ * mishandles an empty list", an adversary writes the empty-list case and runs
13
+ * it. One is an argument, the other is evidence.
14
+ *
15
+ * ## The line this must not cross
16
+ *
17
+ * **The gate stays the only judge.** A green run stays green even when the
18
+ * probe fails, and that is deliberate rather than timid: an adversary can
19
+ * always write a test the requirement never promised to satisfy — asserting a
20
+ * behaviour nobody specified — and a failing probe would then block work that
21
+ * is correct. Letting it decide would turn the loop into a committee, which is
22
+ * the same reason the reviewer is advisory.
23
+ *
24
+ * What a failing probe *is*: a recorded finding, on the run and in the report,
25
+ * with the test it wrote. A human decides whether it found a defect or invented
26
+ * a requirement.
27
+ *
28
+ * ## Why the probe is discarded
29
+ *
30
+ * The branch must contain the implementer's work and nothing else, or a reviewer
31
+ * cannot tell who wrote what. The probe is preserved in the finding, so nothing
32
+ * is lost — it just does not arrive as a commit somebody has to untangle.
33
+ */
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.NO_PROBE = void 0;
36
+ exports.shouldProbe = shouldProbe;
37
+ exports.probeFinding = probeFinding;
38
+ exports.NO_PROBE = Object.freeze({
39
+ ran: false,
40
+ broke: false,
41
+ detail: "",
42
+ wrote: Object.freeze([]),
43
+ });
44
+ /**
45
+ * Should the adversary run for this attempt?
46
+ *
47
+ * Only on a green gate, and only once per requirement: probing an
48
+ * implementation that already failed tells you nothing you did not know, and
49
+ * probing every retry multiplies the cost of the one thing in the loop that is
50
+ * pure insurance.
51
+ */
52
+ function shouldProbe(opts) {
53
+ return Boolean(opts.profile) && opts.gatePassed && !opts.alreadyProbed;
54
+ }
55
+ /**
56
+ * The finding a failing probe produces, as a diagnostic.
57
+ *
58
+ * Severity is a warning and never an error. The wording matters: it has to say
59
+ * what happened without implying the requirement is wrong, because the probe
60
+ * may have asserted something nobody promised.
61
+ */
62
+ function probeFinding(requirement, outcome) {
63
+ return {
64
+ severity: "warning",
65
+ code: "adversarial_probe_failed",
66
+ message: `The gate passed for ${requirement}, and an adversarial probe then made ` +
67
+ `the project's tests fail. That is either a defect the scenario does not ` +
68
+ `cover, or a test asserting something ${requirement} never promised.`,
69
+ target: outcome.wrote.join(", ") || requirement,
70
+ fix: `Read the probe in the run record. If it found a real gap, add a ` +
71
+ `scenario for it; if it invented a requirement, ignore it — the gate is ` +
72
+ `still the judge.`,
73
+ };
74
+ }
75
+ //# sourceMappingURL=AdversarialProbe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdversarialProbe.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/AdversarialProbe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AA4BH,kCAMC;AASD,oCAcC;AA5CY,QAAA,QAAQ,GAAiB,MAAM,CAAC,MAAM,CAAC;IAClD,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAsB;CAC9C,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,IAI3B;IACC,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACzE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,WAAmB,EAAE,OAAqB;IACrE,OAAO;QACL,QAAQ,EAAE,SAAkB;QAC5B,IAAI,EAAE,0BAA0B;QAChC,OAAO,EACL,uBAAuB,WAAW,uCAAuC;YACzE,0EAA0E;YAC1E,wCAAwC,WAAW,kBAAkB;QACvE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW;QAC/C,GAAG,EACD,kEAAkE;YAClE,yEAAyE;YACzE,kBAAkB;KACrB,CAAC;AACJ,CAAC"}