@rsaglobaltech/specgate 1.0.0-rc.1 → 1.0.0-rc.2

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 (30) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/packages/core/src/domain/ChangeLayers.js +6 -2
  3. package/dist/packages/core/src/domain/ChangeLayers.js.map +1 -1
  4. package/dist/packages/core/src/domain/WorkspaceStory.js +176 -0
  5. package/dist/packages/core/src/domain/WorkspaceStory.js.map +1 -0
  6. package/dist/scripts/change/instructions.js +8 -0
  7. package/dist/scripts/change/instructions.js.map +1 -1
  8. package/dist/scripts/cli/commands/change/ChangeCommand.js +57 -1
  9. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  10. package/dist/scripts/cli/commands/project/InitProjectCommand.js +9 -14
  11. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  12. package/dist/scripts/cli/commands/spec/DoneCommand.js +22 -0
  13. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  14. package/dist/scripts/cli/commands/spec/StatusCommand.js +73 -0
  15. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  16. package/dist/scripts/cli/commands/spec/StudioCommand.js +6 -6
  17. package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -1
  18. package/dist/scripts/cli/commands/workspace/WorkspaceCommand.js +170 -43
  19. package/dist/scripts/cli/commands/workspace/WorkspaceCommand.js.map +1 -1
  20. package/dist/scripts/harness/prompt.js +50 -1
  21. package/dist/scripts/harness/prompt.js.map +1 -1
  22. package/dist/scripts/lib/surface.js +1 -1
  23. package/dist/scripts/lib/surface.js.map +1 -1
  24. package/dist/scripts/lib/workspace-draft.js +146 -0
  25. package/dist/scripts/lib/workspace-draft.js.map +1 -0
  26. package/dist/scripts/lib/workspace-live.js +9 -26
  27. package/dist/scripts/lib/workspace-live.js.map +1 -1
  28. package/dist/scripts/lib/workspace.js +219 -6
  29. package/dist/scripts/lib/workspace.js.map +1 -1
  30. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,27 @@ The release process is in [`docs/release-process.md`](docs/release-process.md).
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.0.0-rc.2] — 2026-10-30
13
+
14
+ After the first microservices run of truck-flote (five repositories, one story across three of them, nine requirements delivered in parallel): the workspace takes the client's brief and drafts its stories, a story's intent and criteria reach every repository, the story is built in the order of its dependencies, and `init --yes` adopts the folder it is run in.
15
+
16
+ ### Breaking
17
+
18
+ - **`specgate init --yes` adopts a folder that already has code** (REQ-249, modified): it scaffolded a separate project inside it (`my-spec-driven-app/`), so a scripted `init` in a repository made a second one. `--yes` now only skips the questions; `--new`, `--out`, `--config`, `--multi-stack` and `--forja` still scaffold.
19
+
20
+ ### Fixed
21
+
22
+ - **`change validate` reports what `change approve` refuses** (REQ-350): a layered change validated, then approval refused it for requirements with no kind. Validation now fails with `change_not_approvable` for each finding approval would block on.
23
+ - **The agent writing a change's requirements is told what they need** (REQ-351): `kind=`, `actor=`, and a feature file of its own.
24
+ - **Two requirements naming one feature file are reported** (REQ-352): `change validate` and `change archive` refuse with `change_feature_shared`; archiving would have kept only one's scenarios.
25
+ - **A delivered requirement ticks its tasks** (REQ-353): `done`, which the harness runs, ticks the tasks of the open change that name the requirement.
26
+ - **`change --help` describes the three layers** (REQ-354), and docs/migrating-to-1.0.md says how to install a candidate just published (`--prefer-online`) and how to move a forja project to it.
27
+ - **The workspace takes the client's brief** (REQ-339..341): `specgate workspace draft` puts a root `brief.md` below a front matter that names the brief's stories and their repositories, `workspace draft <story> --agent "<cmd>"` drafts a story's intent and criteria from the brief, confined to the story, and `specgate status` in a workspace repository shows the workspace and the next step instead of failing on a missing matrix.
28
+ - **Every repository receives the story** (REQ-342..344): `workspace propose` takes a drafted story, copies its intent and criteria into each sub-change's `discover.md` and names the story's other repositories and how to write `depends=` and `api=`; `workspace check` warns `workspace_story_diverged` when a repository's criteria are not the story's; each harness is told the story's other parts.
29
+ - **A story is built in dependency order** (REQ-345): `workspace harness run --story` starts a repository whose part waits on another's undelivered requirement after that repository has finished; the dry run shows the levels.
30
+ - **The live view and the story's cost** (REQ-346, REQ-347): every JSON document of the studio says `charset=utf-8`, and a story's cost counts its archived parts.
31
+ - **Short repository names, and the logs ignored** (REQ-348, REQ-349): `workspace init` names `truck-flote-fleet` as `fleet`, prints name, path and role in their own columns, and ignores `.specgate/workspace-runs/`.
32
+
12
33
  ## [1.0.0-rc.1] — 2026-10-30
13
34
 
14
35
  The first candidate of the 1.0 line, for teams of several repositories and roles: a change in three layers with their owners, a workspace of repositories with stories across them and its own live view, approvals per layer and harness packages per role, the backlog following the phases, the two gaps measured, principles, drift and API contracts checked, and `specgate migrate 1.0` to move a 0.27 project. Published under the npm dist-tag `next`; `latest` stays 0.27. See [Migrating to 1.0](docs/migrating-to-1.0.md).
@@ -190,8 +190,12 @@ function acceptanceCriteria(discover) {
190
190
  }
191
191
  return out;
192
192
  }
193
- /** Words of how, in a layer about what: the brief's list plus the architecture's. */
194
- const DISCOVER_TECHNICAL = new RegExp(`${BriefCards_1.TECHNICAL.source}|\\b(api|apis|endpoints?|database|base de datos|sql|http|json|microservices?|microservicios?|queue|cola de mensajes|controllers?|tables?|tablas?)\\b`, "i");
193
+ /**
194
+ * Words of how, in a layer about what: the brief's list plus the architecture's.
195
+ * Not "table": a client reads "a table of their shipments"; storage is caught
196
+ * by database, SQL and the brief's own list.
197
+ */
198
+ const DISCOVER_TECHNICAL = new RegExp(`${BriefCards_1.TECHNICAL.source}|\\b(api|apis|endpoints?|database|base de datos|sql|http|json|microservices?|microservicios?|queue|cola de mensajes|controllers?)\\b`, "i");
195
199
  /** REST in capitals only: "the rest of the week" is plain English. */
196
200
  const DISCOVER_REST = /\bREST(?:ful)?\b/;
197
201
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ChangeLayers.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/ChangeLayers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChangeLayers.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/ChangeLayers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ /**
3
+ * A workspace story as text: the stories a workspace brief names, the
4
+ * sections of a `story.md`, and the names a workspace gives its repositories
5
+ * (REQ-339..348). Pure; reading and writing the files is `scripts/lib`.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.CRITERIA = exports.INTENT = void 0;
9
+ exports.briefFrontMatter = briefFrontMatter;
10
+ exports.briefText = briefText;
11
+ exports.briefStories = briefStories;
12
+ exports.workspaceBriefTemplate = workspaceBriefTemplate;
13
+ exports.section = section;
14
+ exports.criteriaLines = criteriaLines;
15
+ exports.storyTemplate = storyTemplate;
16
+ exports.shortNames = shortNames;
17
+ const FRONT = /^---\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/;
18
+ /** The YAML between a brief's leading `---` lines, or null. */
19
+ function briefFrontMatter(text) {
20
+ const m = FRONT.exec(text);
21
+ return m ? m[1] : null;
22
+ }
23
+ /** Everything after the front matter. */
24
+ function briefText(text) {
25
+ const m = FRONT.exec(text);
26
+ return (m ? text.slice(m[0].length) : text).replace(/^(?:[ \t]*\r?\n)+/, "");
27
+ }
28
+ /** `a, b, [c, d]` split on the commas outside brackets. */
29
+ function topLevel(s) {
30
+ const out = [];
31
+ let depth = 0;
32
+ let cur = "";
33
+ for (const ch of s) {
34
+ if (ch === "[")
35
+ depth += 1;
36
+ if (ch === "]")
37
+ depth -= 1;
38
+ if (ch === "," && depth === 0) {
39
+ out.push(cur);
40
+ cur = "";
41
+ }
42
+ else
43
+ cur += ch;
44
+ }
45
+ if (cur.trim())
46
+ out.push(cur);
47
+ return out.map((x) => x.trim()).filter(Boolean);
48
+ }
49
+ const unquote = (s) => s.trim().replace(/^(["'])(.*)\1$/, "$2");
50
+ /**
51
+ * The stories of a workspace brief's front matter (REQ-339):
52
+ *
53
+ * stories:
54
+ * - { id: follow-shipment, title: El cliente sigue su envío, repos: [fleet, tracking] }
55
+ */
56
+ function briefStories(frontMatter) {
57
+ if (!frontMatter)
58
+ return [];
59
+ const lines = frontMatter.split(/\r?\n/);
60
+ const start = lines.findIndex((l) => /^stories:/.test(l));
61
+ if (start < 0)
62
+ return [];
63
+ const out = [];
64
+ for (const line of lines.slice(start + 1)) {
65
+ if (/^\S/.test(line))
66
+ break;
67
+ const m = /^\s*-\s*\{(.*)\}\s*$/.exec(line);
68
+ if (!m)
69
+ continue;
70
+ const fields = {};
71
+ for (const part of topLevel(m[1])) {
72
+ const kv = /^([a-z_]+)\s*:\s*(.*)$/.exec(part);
73
+ if (kv)
74
+ fields[kv[1]] = kv[2].trim();
75
+ }
76
+ const id = unquote(fields.id || "");
77
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(id))
78
+ continue;
79
+ const repos = /^\[(.*)\]$/.exec(fields.repos || "");
80
+ out.push({
81
+ id,
82
+ title: unquote(fields.title || "") || id.replace(/-/g, " "),
83
+ repos: repos
84
+ ? repos[1]
85
+ .split(",")
86
+ .map((r) => unquote(r))
87
+ .filter(Boolean)
88
+ : [],
89
+ });
90
+ }
91
+ return out;
92
+ }
93
+ /** The front matter `workspace draft` writes above a client's brief. */
94
+ function workspaceBriefTemplate(product, repos) {
95
+ return [
96
+ "---",
97
+ `product: ${product}`,
98
+ "# The business stories of the brief, each split across the repositories it",
99
+ "# touches: `specgate workspace draft <id>` drafts one, `workspace propose <id>`",
100
+ "# opens its change in each repository (REQ-339).",
101
+ `# e.g. - { id: follow-shipment, title: The client follows a shipment, repos: [${repos.slice(0, 2).join(", ")}] }`,
102
+ "stories: []",
103
+ "---",
104
+ "",
105
+ ].join("\n");
106
+ }
107
+ /** A `##` section of a Markdown text, without its comments, or "". */
108
+ function section(md, heading) {
109
+ const lines = md.split(/\r?\n/);
110
+ const at = lines.findIndex((l) => /^##\s/.test(l) && heading.test(l));
111
+ if (at < 0)
112
+ return "";
113
+ const body = [];
114
+ for (const l of lines.slice(at + 1)) {
115
+ if (/^##\s/.test(l))
116
+ break;
117
+ body.push(l);
118
+ }
119
+ return body
120
+ .join("\n")
121
+ .replace(/<!--[\s\S]*?-->/g, "")
122
+ .trim();
123
+ }
124
+ exports.INTENT = /intent|intenci[oó]n|context/i;
125
+ exports.CRITERIA = /acceptance criteria|criterios de aceptaci[oó]n|akzeptanzkriterien/i;
126
+ /** A story's (or a Discover's) `AC-n` lines, as written. */
127
+ function criteriaLines(md) {
128
+ return section(md, exports.CRITERIA)
129
+ .split(/\r?\n/)
130
+ .map((l) => l.trim())
131
+ .filter((l) => /^[-*]\s*AC-\d+\s*[:—–-]\s*\S/.test(l))
132
+ .map((l) => l.replace(/^[-*]\s*/, "").replace(/\s+/g, " "));
133
+ }
134
+ /** The `story.md` `workspace draft <id>` writes for a person, or an agent, to fill. */
135
+ function storyTemplate(title, repos) {
136
+ return [
137
+ `# Story: ${title}`,
138
+ "",
139
+ "## Intent",
140
+ "",
141
+ "<!-- The business story, in the words of whoever asked for it: who needs what, and why. It stays as it is while each repository's change works out the how. -->",
142
+ "",
143
+ "## Acceptance criteria",
144
+ "",
145
+ "<!-- One line each, numbered: every repository's design answers the ones it touches. -->",
146
+ "- AC-1:",
147
+ "",
148
+ "## Repositories",
149
+ "",
150
+ ...repos.map((r) => `- \`${r}\``),
151
+ "",
152
+ ].join("\n");
153
+ }
154
+ /**
155
+ * The names a workspace gives sibling folders: without the prefix they all
156
+ * share (`truck-flote-fleet`, `truck-flote-web` → `fleet`, `web`), so ids read
157
+ * `fleet:REQ-012` (REQ-348). Unchanged when stripping would leave a name empty
158
+ * or two names equal.
159
+ */
160
+ function shortNames(names) {
161
+ if (names.length < 2)
162
+ return names;
163
+ let prefix = names[0];
164
+ for (const n of names.slice(1)) {
165
+ while (prefix && !n.startsWith(prefix))
166
+ prefix = prefix.slice(0, -1);
167
+ }
168
+ const cut = prefix.lastIndexOf("-");
169
+ if (cut < 0)
170
+ return names;
171
+ const keep = prefix.slice(0, cut + 1);
172
+ const short = names.map((n) => n.slice(keep.length));
173
+ const valid = short.every((s) => /^[a-z][a-z0-9-]*$/.test(s));
174
+ return valid && new Set(short).size === short.length ? short : names;
175
+ }
176
+ //# sourceMappingURL=WorkspaceStory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceStory.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/WorkspaceStory.ts"],"names":[],"mappings":"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"}
@@ -109,8 +109,16 @@ const ARTIFACT_RULES = {
109
109
  design: DESIGN_RULES,
110
110
  tasks: TASKS_RULES,
111
111
  };
112
+ // REQ-351: what approval and the harness will ask of each requirement, said
113
+ // to whoever writes them — an agent left them out (truck-flote, MS-10, MS-9).
114
+ const LAYERED_DELTA_RULES = [
115
+ ...exports.DELTA_RULES,
116
+ "Every requirement's `<!-- specgate:trace … -->` carries `kind=` (functional, non-functional or business-rule) and `actor=` (who uses it): `change approve` refuses a requirement without them, and `change validate` says so (`change_not_approvable`).",
117
+ "Give each requirement a feature file of its own (`feature=features/<capability>/<REQ-NNN>.feature`): one feature file per requirement, or archiving replaces one's scenarios with another's (`change_feature_shared`).",
118
+ ];
112
119
  /** A layered change's own rules and templates for the layers it shares with 0.27. */
113
120
  const LAYERED_RULES = {
121
+ specs: LAYERED_DELTA_RULES,
114
122
  design: LAYERED_DESIGN_RULES,
115
123
  tasks: LAYERED_TASKS_RULES,
116
124
  };
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../scripts/change/instructions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../scripts/change/instructions.ts"],"names":[],"mappings":"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"}
@@ -148,7 +148,7 @@ function usage() {
148
148
  ` ${ui_1.c.bold}USAGE${ui_1.c.reset}\n` +
149
149
  ` ${ui_1.c.cyan}specgate change${ui_1.c.reset} <new|list|show|status|instructions|author|validate|impact|approve|note|archive> [options]\n\n` +
150
150
  ` ${ui_1.c.bold}SUBCOMMANDS${ui_1.c.reset}\n` +
151
- ` ${ui_1.c.green}new <id>${ui_1.c.reset} ${ui_1.c.dim}Scaffold a change folder (proposal, tasks, delta skeleton).${ui_1.c.reset}\n` +
151
+ ` ${ui_1.c.green}new <id>${ui_1.c.reset} ${ui_1.c.dim}Scaffold a change: discover, design, tasks and a delta (--schema spec-driven keeps 0.27's layout).${ui_1.c.reset}\n` +
152
152
  ` ${ui_1.c.green}list${ui_1.c.reset} ${ui_1.c.dim}Active changes with task progress.${ui_1.c.reset}\n` +
153
153
  ` ${ui_1.c.green}show <id>${ui_1.c.reset} ${ui_1.c.dim}Proposal, deltas and what they touch.${ui_1.c.reset}\n` +
154
154
  ` ${ui_1.c.green}status [id]${ui_1.c.reset} ${ui_1.c.dim}Which artefact to write next.${ui_1.c.reset}\n` +
@@ -958,6 +958,55 @@ function storyRewritten(projectDir, changeId) {
958
958
  fix: `The business story stays put while the design changes: restore it (\`git checkout ${sha} -- ${rel(file)}\`), or have ${(0, ChangeLayers_1.layer)("discover").owner} agree the new story.`,
959
959
  });
960
960
  }
961
+ /**
962
+ * REQ-350: what `change approve` would refuse a layered change for, said by
963
+ * `change validate` first. A change that validated was refused at approval
964
+ * for a requirement with no kind (truck-flote, MS-10): one rule set, run twice.
965
+ */
966
+ function notApprovable(projectDir, id) {
967
+ let layeredChange = false;
968
+ try {
969
+ layeredChange = (0, ChangeWorkspace_1.readConfig)(projectDir, id).schema === ChangeLayers_1.LAYERED_SCHEMA;
970
+ }
971
+ catch {
972
+ return [];
973
+ }
974
+ if (!layeredChange)
975
+ return [];
976
+ return (0, change_review_1.approvalBlockers)(projectDir, id)
977
+ .filter((b) => b.code !== "draft_no_specs")
978
+ .map((b) => (0, diagnostics_1.error)("change_not_approvable", b.message, {
979
+ target: id,
980
+ fix: `Fix it before review: \`specgate change approve ${id}\` refuses the change until then.`,
981
+ }));
982
+ }
983
+ /**
984
+ * REQ-352: requirements of one change that name the same feature file.
985
+ * Archiving lays one feature file per requirement, so the second replaced the
986
+ * first's scenarios and `check` failed far from the cause (truck-flote, MS-9).
987
+ */
988
+ function sharedFeatureFiles(projectDir, id) {
989
+ const byFile = new Map();
990
+ for (const d of (0, ChangeWorkspace_1.listDeltas)(projectDir, id)) {
991
+ const delta = (0, SpecParser_1.parseDelta)(fs.readFileSync(d.file, "utf8"));
992
+ for (const r of [...delta.added, ...delta.modified]) {
993
+ const feature = (r.trace && r.trace.feature) || "";
994
+ if (!feature || !r.id)
995
+ continue;
996
+ byFile.set(feature, [...(byFile.get(feature) || []), r.id]);
997
+ }
998
+ }
999
+ const out = [];
1000
+ for (const [file, ids] of byFile) {
1001
+ if (ids.length < 2)
1002
+ continue;
1003
+ out.push((0, diagnostics_1.error)("change_feature_shared", `${ids.join(", ")} all name ${file}: archiving writes one feature file per requirement, so one would replace the others' scenarios.`, {
1004
+ target: id,
1005
+ fix: `Give each requirement a feature file of its own (feature=features/<capability>/${ids[0]}.feature, …).`,
1006
+ }));
1007
+ }
1008
+ return out;
1009
+ }
961
1010
  function cmdValidate(opts) {
962
1011
  const projectDir = (0, project_root_1.resolveProjectDir)(opts.projectDir);
963
1012
  const requested = opts.positional[0];
@@ -983,6 +1032,7 @@ function cmdValidate(opts) {
983
1032
  const rewritten = storyRewritten(projectDir, id);
984
1033
  if (rewritten)
985
1034
  result.diagnostics.push(rewritten);
1035
+ result.diagnostics.push(...sharedFeatureFiles(projectDir, id), ...notApprovable(projectDir, id));
986
1036
  const failed = opts.strict ? result.diagnostics.length > 0 : (0, diagnostics_1.hasErrors)(result.diagnostics);
987
1037
  // What each delta rewrites, as it reads now: on first sight, or on
988
1038
  // --rebased once the delta was rewritten over a requirement that moved (REQ-168).
@@ -1033,6 +1083,12 @@ function cmdArchive(opts) {
1033
1083
  }),
1034
1084
  ]);
1035
1085
  }
1086
+ // REQ-352: two requirements naming one feature file would lose scenarios.
1087
+ if (fs.existsSync((0, ChangeWorkspace_1.paths)(projectDir).change(changeId))) {
1088
+ const shared = sharedFeatureFiles(projectDir, changeId);
1089
+ if (shared.length)
1090
+ return fail(opts, nullShape, shared);
1091
+ }
1036
1092
  // A draft (a change opened from a brief) is archived only once its
1037
1093
  // checklist passes: reservas_app archived one with two findings open and
1038
1094
  // nothing said so (#57). `--force` archives anyway, as it does for tasks.