@rsaglobaltech/specgate 0.14.2 → 0.14.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,58 @@ The release process is in [`docs/release-process.md`](docs/release-process.md).
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.14.4] — 2026-10-08
12
+
13
+ ### Fixed
14
+
15
+ Found when the Golden State packs gained API and screen scenarios for 30
16
+ requirements already delivered:
17
+
18
+ - **A scenario added after delivery is no longer reported as done.** Linked
19
+ by mention, every row of a requirement got the tests that name the
20
+ requirement, so 52 new scenarios inherited the old tests and `status` said
21
+ 99/99 done. Once a requirement's tests name one of its scenario ids, each
22
+ scenario is proved only by the tests that name it. A scenario without one
23
+ is a `Draft` row — pending in `status`, `NEEDS_TEST` in `plan`, picked up by
24
+ the harness — while the requirement keeps its status. Delivering it again
25
+ judges those rows as Implemented, so an untested scenario still fails.
26
+ - **`plan` counts a row with no test as not done.**
27
+ - **`plan --json` is complete through a pipe.** It exited before stdout
28
+ drained, so a plan over 64 KB reached the harness cut at 65,536 bytes
29
+ ("plan produced invalid JSON").
30
+
31
+ ## [0.14.3] — 2026-10-08
32
+
33
+ ### Fixed
34
+
35
+ Found running the harness and upgrading packs on the Golden State
36
+ Reinforcing app with 0.14.2:
37
+
38
+ - **`specops sync` brings a pack's changes to the trace fields.** A pack that
39
+ added `depends_on` moved the lock to the new tag while every capability
40
+ spec answered "kept (local edits preserved)": the trace line is where the
41
+ pack's model links and the project's `status` meet, and the text merge kept
42
+ the local line. Trace lines are now merged field by field — what the pack
43
+ changed since the baseline takes the pack's value, everything else keeps
44
+ the project's.
45
+ - **`specops sync` regenerates a generated matrix** instead of merging it.
46
+ It rendered each pack into an empty directory, so a derived project got a
47
+ hand-kept matrix back and a "CONFLICT (no merge base)" on
48
+ `docs/specs/traceability.md`.
49
+ - **Domain catalogs are shared by every pack.** `aggregates.md`, `events.md`,
50
+ `commands.md`, `use-cases.md` and `domain-model.md` held the rows of the
51
+ last pack installed; a pack's rows now replace the rows with the same id
52
+ and join the rest.
53
+ - **`plan` lists every scenario of a requirement once,** and counts a
54
+ requirement done only when all of its scenarios are; it listed the last one
55
+ once per scenario and dropped the others. An artifact cell naming several
56
+ files is checked file by file.
57
+ - **The adoption baseline leaves the plan once delivered.** `test='npm test'`
58
+ and `artifact='existing codebase'` are a command and a description, not
59
+ files, so the baseline was planned — and handed to the harness — forever.
60
+ - **`pack lint` notes a requirement with no scenario.** Sixteen of
61
+ forty-six requirements shipped without one and lint said nothing.
62
+
11
63
  ## [0.14.2] — 2026-10-07
12
64
 
13
65
  ### Fixed
@@ -108,10 +108,11 @@ class GeneratePlanUseCase {
108
108
  const ids = items.map((it) => it.requirement);
109
109
  const declared = this.graphRepo.readDeclaredDependencies(projectDir);
110
110
  const graph = RequirementGraph_1.RequirementGraph.fromDependencies(ids, declared);
111
- const byId = new Map(items.map((it) => [it.requirement, it]));
111
+ // A requirement with several scenarios has several items: it is done when
112
+ // all of them are, and the order keeps every one of them, once.
112
113
  const isDone = (id) => {
113
- const item = byId.get(id);
114
- return Boolean(item) && item?.category === "DONE";
114
+ const its = items.filter((it) => it.requirement === id);
115
+ return its.length > 0 && its.every((it) => it.category === "DONE");
115
116
  };
116
117
  for (const item of items) {
117
118
  const deps = graph.dependsOn[item.requirement] || [];
@@ -119,10 +120,14 @@ class GeneratePlanUseCase {
119
120
  item.blocked_by = deps.filter((dep) => !isDone(dep));
120
121
  }
121
122
  const ordered = [];
123
+ const placed = new Set();
122
124
  for (const id of graph.order) {
123
- const item = byId.get(id);
124
- if (item)
125
- ordered.push(item);
125
+ if (placed.has(id))
126
+ continue;
127
+ placed.add(id);
128
+ for (const item of items)
129
+ if (item.requirement === id)
130
+ ordered.push(item);
126
131
  }
127
132
  for (const item of items) {
128
133
  if (!ordered.includes(item))
@@ -1 +1 @@
1
- {"version":3,"file":"GeneratePlanUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GeneratePlanUseCase.ts"],"names":[],"mappings":";;;AACA,+DAAiG;AACjG,iEAA8D;AAS9D,MAAa,mBAAmB;IAEpB;IACA;IACA;IAHV,YACU,SAAkC,EAClC,YAA8D,EAC9D,SAAsC;QAFtC,cAAS,GAAT,SAAS,CAAyB;QAClC,iBAAY,GAAZ,YAAY,CAAkD;QAC9D,cAAS,GAAT,SAAS,CAA6B;IAC7C,CAAC;IAEG,OAAO,CAAC,UAAkB;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE;oBACP,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,CAAC;oBACP,aAAa,EAAE,CAAC;oBAChB,UAAU,EAAE,CAAC;oBACb,oBAAoB,EAAE,CAAC;oBACvB,mBAAmB,EAAE,CAAC;oBACtB,gBAAgB,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;iBACX;gBACD,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,kBAAkB,GAAe,EAAE,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,iCAAe,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3F,IAAI,IAAI,EAAE,CAAC;gBACT,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,iCAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpD,OAAO;YACL,KAAK;YACL,OAAO;YACP,SAAS,EAAE,UAAU;SACtB,CAAC;IACJ,CAAC;IAEO,qBAAqB,CAAC,OAAe;QAC3C,MAAM,IAAI,GAAmB,EAAE,CAAC;QAChC,IAAI,IAAI,GAA6B,IAAI,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;gBACnD,IAAI,GAAG,MAAM,CAAC;gBACd,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBAC5C,IAAI,GAAG,QAAQ,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI;oBACJ,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;oBACrB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;oBACpB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;oBACrB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;oBACjB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;oBACjB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;oBACnB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC3B,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;oBACtB,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;iBAClB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI;oBACJ,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;oBAC5C,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;oBACpB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;oBACrB,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC3B,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB,CAAC,KAAe;QACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,iBAAiB,CAAC,KAAiB,EAAE,UAAkB;QAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,mCAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAmB,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;QACpD,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAlID,kDAkIC"}
1
+ {"version":3,"file":"GeneratePlanUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GeneratePlanUseCase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * The domain catalogs a pack writes — `docs/specs/aggregates.md`,
4
+ * `events.md`, `commands.md`, `use-cases.md`, `domain-model.md` — are shared
5
+ * by every pack a project installs. Writing each one whole made the last pack
6
+ * installed win: a project with six packs listed one pack's aggregates.
7
+ * Found building a real product from six packs (golden_app, finding #22).
8
+ *
9
+ * The fix is to treat a catalog as tables of rows keyed by their first
10
+ * column. A pack's rows replace rows with the same id and join the rest;
11
+ * rows other packs wrote stay. Pure: strings in, string out.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.CATALOG_DOCS = void 0;
15
+ exports.mergeCatalog = mergeCatalog;
16
+ const ROW = /^\|.*\|\s*$/;
17
+ const SEPARATOR = /^\|(\s*:?-{3,}:?\s*\|)+\s*$/;
18
+ function tablesIn(lines) {
19
+ const tables = [];
20
+ for (let i = 0; i + 1 < lines.length; i += 1) {
21
+ if (!ROW.test(lines[i]) || !SEPARATOR.test(lines[i + 1]))
22
+ continue;
23
+ let end = i + 2;
24
+ while (end < lines.length && ROW.test(lines[end]))
25
+ end += 1;
26
+ tables.push({ start: i, end, rows: lines.slice(i + 2, end) });
27
+ i = end - 1;
28
+ }
29
+ return tables;
30
+ }
31
+ function idOf(row) {
32
+ return row.split("|")[1]?.trim() ?? "";
33
+ }
34
+ /** `AGG-2` before `AGG-10`. */
35
+ function byId(a, b) {
36
+ return idOf(a).localeCompare(idOf(b), undefined, { numeric: true });
37
+ }
38
+ /**
39
+ * `fresh` (what this pack renders) with every table's rows merged into the
40
+ * matching table of `existing` (what the project has). Tables are matched by
41
+ * position and header; when the two documents do not have the same tables,
42
+ * `fresh` is returned unchanged, because guessing would be worse.
43
+ */
44
+ function mergeCatalog(existing, fresh) {
45
+ if (existing === null || existing === fresh)
46
+ return fresh;
47
+ const oldLines = existing.replace(/\r\n/g, "\n").split("\n");
48
+ const newLines = fresh.split("\n");
49
+ const oldTables = tablesIn(oldLines);
50
+ const newTables = tablesIn(newLines);
51
+ if (oldTables.length !== newTables.length ||
52
+ oldTables.some((t, i) => oldLines[t.start] !== newLines[newTables[i].start])) {
53
+ return fresh;
54
+ }
55
+ // Splice from the last table backwards so earlier indexes stay valid.
56
+ for (let i = newTables.length - 1; i >= 0; i -= 1) {
57
+ const mine = newTables[i];
58
+ const ids = new Set(mine.rows.map(idOf).filter((id) => id && id !== "-"));
59
+ const kept = oldTables[i].rows.filter((r) => !ids.has(idOf(r)));
60
+ const rows = [...kept, ...mine.rows].sort(byId);
61
+ newLines.splice(mine.start + 2, mine.rows.length, ...rows);
62
+ }
63
+ return newLines.join("\n");
64
+ }
65
+ /** Where `expand` writes the catalogs every pack in a project shares. */
66
+ exports.CATALOG_DOCS = [
67
+ "docs/specs/domain-model.md",
68
+ "docs/specs/use-cases.md",
69
+ "docs/specs/commands.md",
70
+ "docs/specs/events.md",
71
+ "docs/specs/aggregates.md",
72
+ ];
73
+ //# sourceMappingURL=CatalogMerge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CatalogMerge.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/CatalogMerge.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ exports.requirementsIn = requirementsIn;
41
41
  exports.deriveRows = deriveRows;
42
42
  exports.renderDerivedMatrix = renderDerivedMatrix;
43
43
  exports.setTraceFields = setTraceFields;
44
+ exports.renderTraceComment = renderTraceComment;
44
45
  exports.rowKey = rowKey;
45
46
  exports.diffRows = diffRows;
46
47
  exports.rowsOf = rowsOf;
@@ -119,18 +120,63 @@ function linkByMention(trace, id, sources) {
119
120
  trace.artifact = code.join(", ");
120
121
  }
121
122
  }
123
+ /**
124
+ * One row per tagged scenario, each with the tests that prove *it*.
125
+ *
126
+ * A requirement linked by mention gave every one of its rows the tests that
127
+ * name the requirement, so a scenario added after delivery inherited the old
128
+ * tests and the gate stayed green. Found when a pack gave 30 delivered
129
+ * requirements API and screen scenarios: `status` said 99/99 done with 52 of
130
+ * them untested (golden_app finding #32).
131
+ *
132
+ * Once any test names one of the requirement's scenario ids, the project
133
+ * links by scenario for that requirement, and each row gets the tests that
134
+ * name its scenario — none, if none do. Calibrated per requirement, not per
135
+ * project or file: a requirement whose tests name only the requirement keeps
136
+ * linking that way, and a `test=` written in the trace is never overridden.
137
+ *
138
+ * Such a row is `Draft`, whatever the requirement's status: the scenario has
139
+ * not been started. The requirement keeps its status — what was delivered
140
+ * stays delivered — and the project stays valid, so the work can be done in
141
+ * PRs against a green branch. Nothing is let off: delivering the requirement
142
+ * again (`done`, the harness) judges its Draft rows as Implemented, and an
143
+ * untested scenario fails that gate.
144
+ */
145
+ function scenarioVariants(trace, scenarios, sources, explicitTest) {
146
+ if (scenarios.length === 0)
147
+ return [trace];
148
+ const naming = scenarios.map((s) => s.scn === "-"
149
+ ? []
150
+ : sources.tests
151
+ .filter((f) => mentions(f.source, s.scn))
152
+ .map((f) => f.path)
153
+ .sort());
154
+ const byScenario = !explicitTest && naming.some((n) => n.length > 0);
155
+ return scenarios.map((s, i) => {
156
+ const row = { ...trace, scn: s.scn, feature: s.feature };
157
+ if (byScenario) {
158
+ if (naming[i].length > 0)
159
+ row.test = naming[i].join(", ");
160
+ else {
161
+ delete row.test;
162
+ if (row.status && row.status !== "Deprecated")
163
+ row.status = "Draft";
164
+ }
165
+ }
166
+ return row;
167
+ });
168
+ }
122
169
  /** The matrix rows the sources imply. */
123
170
  function deriveRows(sources) {
124
171
  const rows = [];
125
172
  for (const req of requirementsIn(sources.spec)) {
126
173
  const trace = { ...req.trace };
174
+ const explicitTest = Boolean(trace.test);
127
175
  if (!trace.uc && req.title)
128
176
  trace.uc = req.title;
129
177
  linkByMention(trace, req.id, sources);
130
178
  const scenarios = trace.scn || trace.feature ? [] : taggedScenarios(sources.features, req.id);
131
- const variants = scenarios.length > 0
132
- ? scenarios.map((s) => ({ ...trace, scn: s.scn, feature: s.feature }))
133
- : [trace];
179
+ const variants = scenarioVariants(trace, scenarios, sources, explicitTest);
134
180
  for (const t of variants) {
135
181
  const row = TraceabilityMatrix_1.TraceabilityMatrix.traceRow({ id: req.id, trace: t });
136
182
  if (t.depends)
@@ -153,6 +199,7 @@ function deriveRows(sources) {
153
199
  if (!req.id || fromSpec.has(req.id))
154
200
  continue;
155
201
  const trace = { ...(req.trace || {}) };
202
+ const explicitTest = Boolean(trace.test);
156
203
  // Archived requirements link the same way: by being named.
157
204
  linkByMention(trace, req.id, sources);
158
205
  // And by their tagged scenarios, one row each, as spec.md requirements
@@ -160,9 +207,7 @@ function deriveRows(sources) {
160
207
  // requirement installed from a pack — or archived from a change — never
161
208
  // showed the scenarios that demonstrate it.
162
209
  const scenarios = trace.scn || trace.feature ? [] : taggedScenarios(sources.features, req.id);
163
- const variants = scenarios.length > 0
164
- ? scenarios.map((sc) => ({ ...trace, scn: sc.scn, feature: sc.feature }))
165
- : [trace];
210
+ const variants = scenarioVariants(trace, scenarios, sources, explicitTest);
166
211
  for (const t of variants) {
167
212
  const row = TraceabilityMatrix_1.TraceabilityMatrix.traceRow({ ...req, trace: t });
168
213
  if (t.depends)
@@ -1 +1 @@
1
- {"version":3,"file":"DerivedMatrix.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/DerivedMatrix.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;;;AAYH,0CAEC;AAqCD,wCAoBC;AA0CD,gCAsDC;AAGD,kDAMC;AAUD,wCA2CC;AA4DD,wBAEC;AAGD,4BAMC;AAGD,wBAGC;AAUD,gDAEC;AAED,8CAkDC;AAhXD,6DAA0D;AAC1D,6DAAwF;AACxF,6CAA4D;AAC5D,+CAAmD;AAEnD,oFAAoF;AACvE,QAAA,cAAc,GACzB,uEAAuE;IACvE,iDAAiD,CAAC;AAEpD,SAAgB,eAAe,CAAC,OAAkC;IAChE,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AACjE,CAAC;AA+BD,8EAA8E;AAC9E,kDAAkD;AAClD,MAAM,eAAe,GAAG,yEAAyE,CAAC;AAClG,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAE7C,0EAA0E;AAC1E,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;SAC7B,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;SACtB,KAAK,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,SAAS;QACrD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1B,IAAI,KAAK,GAA2B,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM;YAC9D,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9B,KAAK,GAAG,IAAA,8BAAiB,EAAC,KAAK,CAAC,CAAC,CAAC,CAA2B,CAAC;gBAC9D,MAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kEAAkE;AAClE,SAAS,QAAQ,CAAC,MAAc,EAAE,EAAU;IAC1C,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,IAAI,MAAM,CAAC,mBAAmB,OAAO,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,oFAAoF;AACpF,SAAS,eAAe,CACtB,QAAmC,EACnC,EAAU;IAEV,MAAM,GAAG,GAA4C,EAAE,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAA,gCAAkB,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBAAE,SAAS;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oEAAoE;AACpE,SAAS,aAAa,CAAC,KAA6B,EAAE,EAAU,EAAE,OAA0B;IAC1F,MAAM,KAAK,GAAG,CAAC,KAAgC,EAAE,EAAE,CACjD,KAAK;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;IACZ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,SAAgB,UAAU,CAAC,OAA0B;IACnD,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAA2B,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK;YAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QACjD,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9F,MAAM,QAAQ,GACZ,SAAS,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEd,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,GAAG,GAAQ,uCAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,CAAC,OAAO;gBAAE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5E,IAAI,CAAC,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAC7B,EAAE,CAAC;QACF,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAA,sBAAS,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC9C,MAAM,KAAK,GAA2B,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YAC/D,2DAA2D;YAC3D,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACtC,uEAAuE;YACvE,mEAAmE;YACnE,wEAAwE;YACxE,4CAA4C;YAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9F,MAAM,QAAQ,GACZ,SAAS,CAAC,MAAM,GAAG,CAAC;gBAClB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAQ,uCAAkB,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC,CAAC,OAAO;oBAAE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5E,IAAI,CAAC,CAAC,OAAO;oBAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uCAAuC;AACvC,SAAgB,mBAAmB,CAAC,IAAW,EAAE,WAAoB;IACnE,MAAM,IAAI,GAAG,IAAA,8CAAyB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAC1D,uBAAuB,EACvB,wBAAwB,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACjE,CAAC;IACF,OAAO,GAAG,sBAAc,KAAK,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,gFAAgF;AAEhF;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,IAAY,EACZ,KAAa,EACb,MAA8B;IAE9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;SAC7B,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;SACtB,KAAK,CAAC,IAAI,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,CAAC;YACZ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM;QAC9D,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,EAAE,GAAG,CAAC,CAAC;YACP,MAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,IAAA,8BAAiB,EAAC,KAAK,CAAC,EAAE,CAAC,CAA4B,CAAC;IAC1F,MAAM,MAAM,GAA2B,EAAE,GAAG,OAAO,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;;YAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACd,IAAI,QAAQ,KAAK,IAAI;YAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;YACtC,KAAK,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IAC5B,CAAC;SAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,qEAAqE;AACrE,MAAM,SAAS,GAAG;IAChB,QAAQ;IACR,KAAK;IACL,SAAS;IACT,MAAM;IACN,UAAU;IACV,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC;AAEF,SAAS,kBAAkB,CAAC,KAA6B;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,2EAA2E;QAC3E,wEAAwE;QACxE,wDAAwD;QACxD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,OAAO,mBAAmB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAClD,CAAC;AAED,gFAAgF;AAEhF,MAAM,OAAO,GAAG;IACd,aAAa;IACb,YAAY;IACZ,aAAa;IACb,SAAS;IACT,gBAAgB;IAChB,WAAW;IACX,OAAO;IACP,mBAAmB;IACnB,cAAc;IACd,QAAQ;CACT,CAAC;AAEF,SAAS,IAAI,CAAC,CAAU;IACtB,MAAM,CAAC,GACL,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;SACzB,IAAI,EAAE,IAAI,GAAG,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,gEAAgE;AAChE,SAAgB,MAAM,CAAC,GAAQ;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,+EAA+E;AAC/E,SAAgB,QAAQ,CAAC,QAAe,EAAE,MAAa;IACrD,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,uEAAuE;AACvE,SAAgB,MAAM,CAAC,aAAqB;IAC1C,MAAM,MAAM,GAAG,IAAA,0CAAqB,EAAC,aAAa,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,+EAA+E;AAC/E,SAAgB,kBAAkB,CAAC,CAAS;IAC1C,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,iBAAiB,CAC/B,GAAuB,EACvB,IAAW,EACX,OAA0B;IAE1B,MAAM,OAAO,GAAG,UAAU,CAAC;QACzB,GAAG,OAAO;QACV,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,IAAI;KACtC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,wEAAwE;QACxE,0DAA0D;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,wBAAwB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C;aAC5G,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,OAAO;gBACL,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,mCAAmC,GAAG,CAAC,EAAE,gCAAgC;aAChG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,MAAc,EAAE,KAAc,EAAE,EAAE;QAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACzB,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAChC,CAAC;IACD,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC7B,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACxB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpB,GAAG,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACrC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,sCAAsC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"DerivedMatrix.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/DerivedMatrix.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,15 @@ class RequirementPlan {
12
12
  return false;
13
13
  return !RequirementPlan.PLACEHOLDER_RE.test(stripped);
14
14
  }
15
+ /** `src/a.ts`, `a.test.js, b.test.js` — not `npm test` or `existing codebase`. */
16
+ static looksLikePath(value) {
17
+ const parts = value
18
+ .replace(/`/g, "")
19
+ .split(",")
20
+ .map((p) => p.trim())
21
+ .filter(Boolean);
22
+ return parts.length > 0 && parts.every((p) => !/\s/.test(p) && /[/.]/.test(p));
23
+ }
15
24
  static classifyRow(row, fileChecker) {
16
25
  const reqId = row.requirement || "";
17
26
  if (!/^REQ-\d+/.test(reqId))
@@ -19,9 +28,15 @@ class RequirementPlan {
19
28
  const featureExists = fileChecker(row.featureFile || "");
20
29
  const techDeclared = RequirementPlan.isMeaningful(row.technicalArtifact);
21
30
  const testDeclared = RequirementPlan.isMeaningful(row.testArtifact);
22
- const techExists = techDeclared && fileChecker(row.technicalArtifact || "");
23
- const testExists = testDeclared && fileChecker(row.testArtifact || "");
24
31
  const isDone = RequirementPlan.DONE_STATUSES.has(row.status || "");
32
+ // `adopt` records its baseline as `test='npm test'` and `artifact='existing
33
+ // codebase'` — a command and a description, not files. Once the
34
+ // requirement is delivered (`done` ran the gate), such a value is not
35
+ // missing evidence; without this the baseline was planned, and handed to
36
+ // the harness, as work forever (golden_app finding #29).
37
+ const present = (value) => fileChecker(value) || (isDone && !RequirementPlan.looksLikePath(value));
38
+ const techExists = techDeclared && present(row.technicalArtifact || "");
39
+ const testExists = testDeclared && present(row.testArtifact || "");
25
40
  let category;
26
41
  if (!featureExists)
27
42
  category = "NEEDS_FEATURE";
@@ -31,6 +46,10 @@ class RequirementPlan {
31
46
  category = "NEEDS_EVERYTHING";
32
47
  else if (testDeclared && !testExists)
33
48
  category = "NEEDS_TEST";
49
+ // A scenario with no test is not done, whatever the requirement's status:
50
+ // it is how a scenario added after delivery shows up (golden_app #32).
51
+ else if (!testDeclared)
52
+ category = "NEEDS_TEST";
34
53
  else if (techDeclared && !techExists)
35
54
  category = "NEEDS_IMPLEMENTATION";
36
55
  else if (!isDone)
@@ -1 +1 @@
1
- {"version":3,"file":"RequirementPlan.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/RequirementPlan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequirementPlan.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/RequirementPlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * Reconciling a file that carries `csda:trace` comments.
4
+ *
5
+ * A trace comment is one line holding fields with two owners: the pack writes
6
+ * the model links (`uc`, `cmd`, `agg`, `evt`, `context`, `depends`, `kind`),
7
+ * and the project writes its progress (`status` from `done`, `test` and
8
+ * `artifact` from `req link`). Merged as text, that line is where both sides
9
+ * change, so sync either conflicted on it or — when the pack's template text
10
+ * had not moved — kept the local line and silently dropped what the pack
11
+ * changed. Found building a real product from packs (golden_app, finding
12
+ * #24): a pack added `depends_on`, `sync` moved the lock to the new tag, and
13
+ * no requirement ever saw the dependency.
14
+ *
15
+ * So the trace lines are taken out of the text merge and merged field by
16
+ * field: a field the pack changed since the baseline takes the pack's value;
17
+ * every other field keeps the project's. The rest of the file goes through
18
+ * the ordinary three-way merge. Pure, like `reconcile`.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.PACK_TRACE_KEYS = void 0;
22
+ exports.maskTraces = maskTraces;
23
+ exports.mergeTraceFields = mergeTraceFields;
24
+ exports.reconcileTraced = reconcileTraced;
25
+ const SpecParser_1 = require("./SpecParser");
26
+ const DerivedMatrix_1 = require("./DerivedMatrix");
27
+ const Reconciliation_1 = require("./Reconciliation");
28
+ const HEADING = /^#{1,6}\s+(?:Requirement:\s*)?(REQ-[A-Za-z0-9.]+)?/;
29
+ const TRACE = /<!--\s*csda:trace\b.*?-->/;
30
+ const MASK = "<!-- csda:trace -->";
31
+ /** The fields a pack writes into a trace comment; the rest belong to the project. */
32
+ exports.PACK_TRACE_KEYS = new Set([
33
+ "uc",
34
+ "cmd",
35
+ "qry",
36
+ "agg",
37
+ "evt",
38
+ "context",
39
+ "depends",
40
+ "kind",
41
+ ]);
42
+ function hasTrace(text) {
43
+ return text !== null && TRACE.test(text);
44
+ }
45
+ /** Each trace line replaced by a bare marker, so the text merge never sees fields. */
46
+ function maskTraces(text) {
47
+ return text
48
+ .split("\n")
49
+ .map((line) => line.replace(TRACE, MASK))
50
+ .join("\n");
51
+ }
52
+ /** Requirement id → its first trace line, as written. */
53
+ function traceLines(text) {
54
+ const out = new Map();
55
+ if (text === null)
56
+ return out;
57
+ let current = null;
58
+ for (const line of text.split("\n")) {
59
+ const h = HEADING.exec(line.trim());
60
+ if (h) {
61
+ current = h[1] || null;
62
+ continue;
63
+ }
64
+ const t = TRACE.exec(line);
65
+ if (t && current && !out.has(current))
66
+ out.set(current, t[0]);
67
+ }
68
+ return out;
69
+ }
70
+ function fieldsOf(line) {
71
+ return line === undefined ? undefined : (0, SpecParser_1.parseTraceComment)(line);
72
+ }
73
+ function sameFields(a, b) {
74
+ const ka = Object.keys(a);
75
+ return ka.length === Object.keys(b).length && ka.every((k) => a[k] === b[k]);
76
+ }
77
+ /**
78
+ * One requirement's fields after the pack moved from `base` to `incoming`
79
+ * while the project held `local`. With no base, only the pack's own keys are
80
+ * taken from `incoming`, since there is nothing to say what the pack changed.
81
+ */
82
+ function mergeTraceFields(base, local, incoming) {
83
+ if (local === undefined)
84
+ return { ...(incoming || {}) };
85
+ const out = { ...local };
86
+ const theirs = incoming || {};
87
+ if (base === undefined) {
88
+ for (const [k, v] of Object.entries(theirs))
89
+ if (exports.PACK_TRACE_KEYS.has(k))
90
+ out[k] = v;
91
+ return out;
92
+ }
93
+ for (const k of new Set([...Object.keys(base), ...Object.keys(theirs)])) {
94
+ if (theirs[k] === base[k])
95
+ continue;
96
+ if (theirs[k] === undefined)
97
+ delete out[k];
98
+ else
99
+ out[k] = theirs[k];
100
+ }
101
+ return out;
102
+ }
103
+ /** Put the merged trace lines back where the masked text has markers. */
104
+ function rehydrate(masked, baseLines, localLines, incomingLines, baseKnown) {
105
+ const lines = masked.split("\n");
106
+ let current = null;
107
+ const placed = new Set();
108
+ const out = [];
109
+ for (const line of lines) {
110
+ const h = HEADING.exec(line.trim());
111
+ if (h)
112
+ current = h[1] || null;
113
+ if (!line.includes(MASK) || !current || placed.has(current)) {
114
+ out.push(line);
115
+ continue;
116
+ }
117
+ placed.add(current);
118
+ const local = localLines.get(current);
119
+ const incoming = incomingLines.get(current);
120
+ const fields = mergeTraceFields(baseKnown ? fieldsOf(baseLines.get(current)) || {} : undefined, fieldsOf(local), fieldsOf(incoming));
121
+ // Keep a line as it was written when its fields did not change, so a
122
+ // sync that changes nothing leaves no diff.
123
+ const verbatim = [local, incoming].find((l) => l !== undefined && sameFields(fieldsOf(l), fields));
124
+ const rendered = verbatim ?? (0, DerivedMatrix_1.renderTraceComment)(fields);
125
+ if (rendered !== null)
126
+ out.push(line.replace(MASK, rendered));
127
+ }
128
+ return out.join("\n");
129
+ }
130
+ /**
131
+ * `reconcile`, with `csda:trace` lines merged field by field. Files without
132
+ * trace comments, `--force`, and genuine text conflicts take the plain path.
133
+ */
134
+ function reconcileTraced(base, local, incoming, opts, merge) {
135
+ if (local === null || opts.force || !(hasTrace(local) || hasTrace(incoming))) {
136
+ return (0, Reconciliation_1.reconcile)(base, local, incoming, opts, merge);
137
+ }
138
+ if (local === incoming)
139
+ return (0, Reconciliation_1.reconcile)(base, local, incoming, opts, merge);
140
+ const maskedLocal = maskTraces(local);
141
+ const maskedIncoming = maskTraces(incoming);
142
+ const maskedBase = base === null ? null : maskTraces(base);
143
+ // No baseline and only trace fields differ: the pack's own keys are safe to
144
+ // take; refusing would leave the project on the old model forever.
145
+ const text = maskedBase === null && maskedLocal === maskedIncoming
146
+ ? { outcome: "kept", write: null, baselineContent: null }
147
+ : (0, Reconciliation_1.reconcile)(maskedBase, maskedLocal, maskedIncoming, opts, merge);
148
+ if (Reconciliation_1.CONFLICT_OUTCOMES.has(text.outcome))
149
+ return (0, Reconciliation_1.reconcile)(base, local, incoming, opts, merge);
150
+ const final = rehydrate(text.write ?? maskedLocal, traceLines(base), traceLines(local), traceLines(incoming), base !== null);
151
+ if (final === local) {
152
+ return {
153
+ outcome: text.outcome === "kept" ? "kept" : "unchanged",
154
+ write: null,
155
+ baselineContent: incoming,
156
+ };
157
+ }
158
+ const outcome = text.outcome === "updated" ? "updated" : "merged";
159
+ return { outcome, write: final, baselineContent: incoming };
160
+ }
161
+ //# sourceMappingURL=TraceMerge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceMerge.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/TraceMerge.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,7 @@ const manifest_1 = require("../../../specops/manifest");
58
58
  const command_1 = require("../../../lib/command");
59
59
  const project_root_1 = require("../../../lib/project-root");
60
60
  const derived_writes_1 = require("../../../lib/derived-writes");
61
+ const CatalogMerge_1 = require("../../../../packages/core/src/domain/CatalogMerge");
61
62
  const MatrixCommand_1 = require("../spec/MatrixCommand");
62
63
  const PACKAGE_VERSION = (() => {
63
64
  try {
@@ -300,8 +301,12 @@ function renderDomainDocs(pack, projectDir, dryRun) {
300
301
  ].join("\n"),
301
302
  ],
302
303
  ]);
304
+ // Shared by every pack in the project: this pack's rows join the rows other
305
+ // packs wrote instead of replacing the file (golden_app finding #22).
303
306
  for (const [target, content] of docs.entries()) {
304
- (0, DiskPackRepository_1.writeFile)((0, DiskPackRepository_1.safeResolve)(projectDir, target), content, dryRun);
307
+ const file = (0, DiskPackRepository_1.safeResolve)(projectDir, target);
308
+ const existing = fs.existsSync(file) ? fs.readFileSync(file, "utf8") : null;
309
+ (0, DiskPackRepository_1.writeFile)(file, (0, CatalogMerge_1.mergeCatalog)(existing, content), dryRun);
305
310
  }
306
311
  }
307
312
  /**