@encore-os/eos-spec 0.16.0 → 0.18.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.
- package/dist/commands/close-out.js +48 -2
- package/dist/commands/close-out.js.map +1 -1
- package/dist/commands/doctor.js +14 -5
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/index-spec.js +22 -4
- package/dist/commands/index-spec.js.map +1 -1
- package/dist/commands/next.d.ts +6 -0
- package/dist/commands/next.js +11 -1
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/reconcile.js +6 -2
- package/dist/commands/reconcile.js.map +1 -1
- package/dist/commands/scorecard.js +51 -0
- package/dist/commands/scorecard.js.map +1 -1
- package/dist/commands/signoff.js +12 -1
- package/dist/commands/signoff.js.map +1 -1
- package/dist/commands/status-drift.d.ts +2 -0
- package/dist/commands/status-drift.js +35 -0
- package/dist/commands/status-drift.js.map +1 -0
- package/dist/commands/verify-acs.d.ts +25 -1
- package/dist/commands/verify-acs.js +118 -36
- package/dist/commands/verify-acs.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/body-requirements.d.ts +30 -0
- package/dist/lib/body-requirements.js +56 -0
- package/dist/lib/body-requirements.js.map +1 -0
- package/dist/lib/closeout-core.d.ts +15 -0
- package/dist/lib/closeout-core.js +42 -5
- package/dist/lib/closeout-core.js.map +1 -1
- package/dist/lib/config.d.ts +24 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/doctor-core.d.ts +17 -2
- package/dist/lib/doctor-core.js +50 -12
- package/dist/lib/doctor-core.js.map +1 -1
- package/dist/lib/frontmatter.d.ts +15 -0
- package/dist/lib/frontmatter.js +87 -3
- package/dist/lib/frontmatter.js.map +1 -1
- package/dist/lib/reconcile-core.d.ts +1 -1
- package/dist/lib/reconcile-core.js +10 -2
- package/dist/lib/reconcile-core.js.map +1 -1
- package/dist/lib/rtm-scorecard-run.d.ts +38 -0
- package/dist/lib/rtm-scorecard-run.js +70 -0
- package/dist/lib/rtm-scorecard-run.js.map +1 -0
- package/dist/lib/rtm-scorecard.d.ts +146 -0
- package/dist/lib/rtm-scorecard.js +194 -0
- package/dist/lib/rtm-scorecard.js.map +1 -0
- package/dist/lib/spec-pure.d.ts +38 -0
- package/dist/lib/spec-pure.js +162 -17
- package/dist/lib/spec-pure.js.map +1 -1
- package/dist/lib/specs.d.ts +20 -0
- package/dist/lib/specs.js +37 -1
- package/dist/lib/specs.js.map +1 -1
- package/dist/lib/status-drift-run.d.ts +9 -0
- package/dist/lib/status-drift-run.js +73 -0
- package/dist/lib/status-drift-run.js.map +1 -0
- package/dist/lib/status-drift.d.ts +43 -0
- package/dist/lib/status-drift.js +79 -0
- package/dist/lib/status-drift.js.map +1 -0
- package/dist/lib/verifies-backlinks.d.ts +13 -0
- package/dist/lib/verifies-backlinks.js +33 -0
- package/dist/lib/verifies-backlinks.js.map +1 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/pure.d.ts +2 -0
- package/dist/pure.js +6 -0
- package/dist/pure.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
2
|
import { type LaneDef } from '../lib/config.js';
|
|
3
|
+
import { type FileStat } from '../lib/verify-core.js';
|
|
3
4
|
export type Section = 'acceptance_criteria' | 'user_stories' | 'requirements';
|
|
4
5
|
export type Item = {
|
|
5
6
|
section: Section;
|
|
6
7
|
id: string;
|
|
7
8
|
status: string;
|
|
9
|
+
location: 'frontmatter' | 'body';
|
|
8
10
|
};
|
|
9
|
-
/** Flatten a spec's
|
|
11
|
+
/** Flatten a spec's AC/US/FR into a uniform item list (id + current status + where it lives).
|
|
12
|
+
* Frontmatter items first, then body-format US/FR (`- **US-N** [status]`). On an id clash the
|
|
13
|
+
* BODY wins for US/FR: the body carries the id'd `[status]` token, whereas frontmatter
|
|
14
|
+
* `user_stories:` in the encoreos corpus are prose strings normalizeUserStories already skips.
|
|
15
|
+
* ACs are frontmatter-only in both conventions, so no AC clash arises. */
|
|
10
16
|
export declare function resolveItems(text: string): Item[];
|
|
17
|
+
/** Apply proven-item promotions to a spec's text. Frontmatter items flip status + get
|
|
18
|
+
* verified_by/verified_at stamps; body items flip their `[status]` token. Pure + order-
|
|
19
|
+
* independent (each writer is id-scoped). Returns the new text + count actually flipped. */
|
|
20
|
+
export declare function applyPromotions(text: string, proven: Array<{
|
|
21
|
+
section: Section;
|
|
22
|
+
id: string;
|
|
23
|
+
location: 'frontmatter' | 'body';
|
|
24
|
+
files: string[];
|
|
25
|
+
}>, date: string): {
|
|
26
|
+
text: string;
|
|
27
|
+
written: number;
|
|
28
|
+
};
|
|
11
29
|
/** Split backing test files into their Vitest lane ('root' + any config-driven
|
|
12
30
|
* `verify_lanes` prefix, keyed by lane) vs. genuinely deferred (no lane claims it). */
|
|
13
31
|
export declare function partitionBackingFilesWithLanes(files: string[], laneDefs: LaneDef[]): {
|
|
@@ -20,4 +38,10 @@ export declare function partitionBackingFiles(files: string[]): {
|
|
|
20
38
|
rootVitest: string[];
|
|
21
39
|
deferred: string[];
|
|
22
40
|
};
|
|
41
|
+
/** Parse a Playwright `--reporter=json` output file into rel-path (from `repoRoot`) →
|
|
42
|
+
* {passed,failed,skipped}. Playwright's JSON nests `suites → specs → tests → results`,
|
|
43
|
+
* with the source file on each suite (relative to the lane `cwd`/testDir, or absolute);
|
|
44
|
+
* re-relativize every key against `repoRoot` so it matches the `@verifies` backlink
|
|
45
|
+
* paths. A `timedOut`/`interrupted` result counts as a failure (P2 e2e lane). */
|
|
46
|
+
export declare function parsePlaywrightJsonReport(repoRoot: string, laneCwd: string, outFile: string): Map<string, FileStat>;
|
|
23
47
|
export declare function registerVerifyAcs(program: Command): void;
|
|
@@ -1,27 +1,71 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import { readFileSync, readdirSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
|
-
import { join, relative } from 'node:path';
|
|
4
|
+
import { isAbsolute, join, relative } from 'node:path';
|
|
5
5
|
import { resolveDiscoveryPaths, resolveVerifyLanes } from '../lib/config.js';
|
|
6
|
-
import { readFrontmatter, setRequirementStatus } from '../lib/frontmatter.js';
|
|
6
|
+
import { readFrontmatter, setRequirementStatus, stampRequirementVerification } from '../lib/frontmatter.js';
|
|
7
|
+
import { findBodyRequirements, setBodyRequirementStatus } from '../lib/body-requirements.js';
|
|
8
|
+
import { parseVerifiesBacklinks } from '../lib/verifies-backlinks.js';
|
|
7
9
|
import { emit, getGlobalOptions } from '../lib/output.js';
|
|
8
10
|
import { withEventLog } from '../lib/with-event-log.js';
|
|
9
11
|
import { getRepoRoot, isProtectedBranch } from '../lib/repo.js';
|
|
10
12
|
import { findSpec } from '../lib/specs.js';
|
|
11
13
|
import { verdictFor } from '../lib/verify-core.js';
|
|
12
14
|
import { normalizeAcceptanceCriteria, normalizeRequirements, normalizeUserStories } from '../lib/requirements.js';
|
|
13
|
-
/** Flatten a spec's
|
|
15
|
+
/** Flatten a spec's AC/US/FR into a uniform item list (id + current status + where it lives).
|
|
16
|
+
* Frontmatter items first, then body-format US/FR (`- **US-N** [status]`). On an id clash the
|
|
17
|
+
* BODY wins for US/FR: the body carries the id'd `[status]` token, whereas frontmatter
|
|
18
|
+
* `user_stories:` in the encoreos corpus are prose strings normalizeUserStories already skips.
|
|
19
|
+
* ACs are frontmatter-only in both conventions, so no AC clash arises. */
|
|
14
20
|
export function resolveItems(text) {
|
|
15
21
|
const fm = readFrontmatter(text);
|
|
16
22
|
const out = [];
|
|
17
23
|
for (const ac of normalizeAcceptanceCriteria(fm.acceptance_criteria).acs)
|
|
18
|
-
out.push({ section: 'acceptance_criteria', id: ac.id, status: ac.status });
|
|
24
|
+
out.push({ section: 'acceptance_criteria', id: ac.id, status: ac.status, location: 'frontmatter' });
|
|
19
25
|
for (const us of normalizeUserStories(fm.user_stories).uss)
|
|
20
|
-
out.push({
|
|
26
|
+
out.push({
|
|
27
|
+
section: 'user_stories',
|
|
28
|
+
id: us.id,
|
|
29
|
+
status: us.status ?? 'planned',
|
|
30
|
+
location: 'frontmatter',
|
|
31
|
+
});
|
|
21
32
|
for (const fr of normalizeRequirements(fm.requirements).frs)
|
|
22
|
-
out.push({ section: 'requirements', id: fr.id, status: fr.status });
|
|
33
|
+
out.push({ section: 'requirements', id: fr.id, status: fr.status, location: 'frontmatter' });
|
|
34
|
+
for (const b of findBodyRequirements(text)) {
|
|
35
|
+
const dupIdx = out.findIndex((it) => it.section === b.section && it.id === b.id);
|
|
36
|
+
const item = { section: b.section, id: b.id, status: b.status, location: 'body' };
|
|
37
|
+
if (dupIdx >= 0)
|
|
38
|
+
out[dupIdx] = item;
|
|
39
|
+
else
|
|
40
|
+
out.push(item);
|
|
41
|
+
}
|
|
23
42
|
return out;
|
|
24
43
|
}
|
|
44
|
+
/** Apply proven-item promotions to a spec's text. Frontmatter items flip status + get
|
|
45
|
+
* verified_by/verified_at stamps; body items flip their `[status]` token. Pure + order-
|
|
46
|
+
* independent (each writer is id-scoped). Returns the new text + count actually flipped. */
|
|
47
|
+
export function applyPromotions(text, proven, date) {
|
|
48
|
+
let next = text;
|
|
49
|
+
let written = 0;
|
|
50
|
+
for (const p of proven) {
|
|
51
|
+
if (p.location === 'body') {
|
|
52
|
+
const after = setBodyRequirementStatus(next, p.id, 'verified');
|
|
53
|
+
if (after !== next) {
|
|
54
|
+
written++;
|
|
55
|
+
next = after;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
let after = setRequirementStatus(next, p.section, p.id, 'verified');
|
|
60
|
+
after = stampRequirementVerification(after, p.section, p.id, { files: p.files, date });
|
|
61
|
+
if (after !== next) {
|
|
62
|
+
written++;
|
|
63
|
+
next = after;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { text: next, written };
|
|
68
|
+
}
|
|
25
69
|
const TEST_FILE_RE = /\.(test|spec)\.tsx?$/;
|
|
26
70
|
/** Split backing test files into their Vitest lane ('root' + any config-driven
|
|
27
71
|
* `verify_lanes` prefix, keyed by lane) vs. genuinely deferred (no lane claims it). */
|
|
@@ -76,6 +120,44 @@ function parseVitestJsonReport(repoRoot, outFile) {
|
|
|
76
120
|
}
|
|
77
121
|
return stats;
|
|
78
122
|
}
|
|
123
|
+
/** Parse a Playwright `--reporter=json` output file into rel-path (from `repoRoot`) →
|
|
124
|
+
* {passed,failed,skipped}. Playwright's JSON nests `suites → specs → tests → results`,
|
|
125
|
+
* with the source file on each suite (relative to the lane `cwd`/testDir, or absolute);
|
|
126
|
+
* re-relativize every key against `repoRoot` so it matches the `@verifies` backlink
|
|
127
|
+
* paths. A `timedOut`/`interrupted` result counts as a failure (P2 e2e lane). */
|
|
128
|
+
export function parsePlaywrightJsonReport(repoRoot, laneCwd, outFile) {
|
|
129
|
+
const stats = new Map();
|
|
130
|
+
let report;
|
|
131
|
+
try {
|
|
132
|
+
report = JSON.parse(readFileSync(outFile, 'utf8'));
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return stats;
|
|
136
|
+
}
|
|
137
|
+
const walk = (suites) => {
|
|
138
|
+
for (const s of suites ?? []) {
|
|
139
|
+
if (s.file) {
|
|
140
|
+
const abs = isAbsolute(s.file) ? s.file : join(laneCwd, s.file);
|
|
141
|
+
const key = relative(repoRoot, abs);
|
|
142
|
+
const fs = stats.get(key) ?? { passed: 0, failed: 0, skipped: 0 };
|
|
143
|
+
for (const spec of s.specs ?? [])
|
|
144
|
+
for (const t of spec.tests ?? [])
|
|
145
|
+
for (const r of t.results ?? []) {
|
|
146
|
+
if (r.status === 'passed')
|
|
147
|
+
fs.passed++;
|
|
148
|
+
else if (r.status === 'failed' || r.status === 'timedOut' || r.status === 'interrupted')
|
|
149
|
+
fs.failed++;
|
|
150
|
+
else
|
|
151
|
+
fs.skipped++;
|
|
152
|
+
}
|
|
153
|
+
stats.set(key, fs);
|
|
154
|
+
}
|
|
155
|
+
walk(s.suites);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
walk(report.suites);
|
|
159
|
+
return stats;
|
|
160
|
+
}
|
|
79
161
|
/** Run root-Vitest files, returning rel-path → {passed,failed,skipped}. */
|
|
80
162
|
function runRootVitest(repoRoot, relFiles) {
|
|
81
163
|
if (relFiles.length === 0)
|
|
@@ -92,17 +174,32 @@ function runRootVitest(repoRoot, relFiles) {
|
|
|
92
174
|
}
|
|
93
175
|
return parseVitestJsonReport(repoRoot, outFile);
|
|
94
176
|
}
|
|
95
|
-
/** Run one config-driven lane's backing files
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* Vitest
|
|
100
|
-
|
|
177
|
+
/** Run one config-driven lane's backing files in `lane.cwd`, returning the same
|
|
178
|
+
* rel-path (from `repoRoot`) → FileStat shape as `runRootVitest`. `relFiles` are
|
|
179
|
+
* repo-relative and re-relativized into the lane's `cwd` for the invocation (the
|
|
180
|
+
* runner resolves file args against its own `cwd`). Dispatches on `lane.reporter`:
|
|
181
|
+
* Vitest (default) requests JSON via `--outputFile=`; Playwright via the
|
|
182
|
+
* `PLAYWRIGHT_JSON_OUTPUT_NAME` env, each with its matching parser (P2 e2e lane). */
|
|
183
|
+
function runLane(repoRoot, lane, relFiles) {
|
|
101
184
|
if (relFiles.length === 0)
|
|
102
185
|
return new Map();
|
|
103
186
|
const laneCwd = join(repoRoot, lane.cwd);
|
|
104
187
|
const laneFiles = relFiles.map((f) => relative(laneCwd, join(repoRoot, f)));
|
|
105
188
|
const outFile = join(tmpdir(), `eos-verify-acs-lane-${process.pid}-${lane.prefix.replace(/[^a-zA-Z0-9]/g, '_')}.json`);
|
|
189
|
+
if ((lane.reporter ?? 'vitest') === 'playwright') {
|
|
190
|
+
const [cmd, ...cmdArgs] = (lane.command ?? 'bunx playwright test').split(/\s+/);
|
|
191
|
+
try {
|
|
192
|
+
execFileSync(cmd, [...cmdArgs, ...laneFiles, '--reporter=json'], {
|
|
193
|
+
cwd: laneCwd,
|
|
194
|
+
stdio: ['ignore', 'ignore', 'inherit'],
|
|
195
|
+
env: { ...process.env, PLAYWRIGHT_JSON_OUTPUT_NAME: outFile },
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
/* nonzero exit = a failing test; the JSON report still carries the per-file outcome */
|
|
200
|
+
}
|
|
201
|
+
return parsePlaywrightJsonReport(repoRoot, laneCwd, outFile);
|
|
202
|
+
}
|
|
106
203
|
const [cmd, ...cmdArgs] = (lane.command ?? 'bunx vitest run').split(/\s+/);
|
|
107
204
|
try {
|
|
108
205
|
execFileSync(cmd, [...cmdArgs, ...laneFiles, '--reporter=json', `--outputFile=${outFile}`], {
|
|
@@ -149,7 +246,7 @@ function backlinkFilesByItem(repoRoot, specId, roots) {
|
|
|
149
246
|
walk(p);
|
|
150
247
|
}
|
|
151
248
|
else if (TEST_FILE.test(e.name)) {
|
|
152
|
-
for (const id of
|
|
249
|
+
for (const id of parseVerifiesBacklinks(readFileSync(p, 'utf8'), specId)) {
|
|
153
250
|
if (!map.has(id))
|
|
154
251
|
map.set(id, new Set());
|
|
155
252
|
map.get(id).add(relative(repoRoot, p));
|
|
@@ -161,16 +258,6 @@ function backlinkFilesByItem(repoRoot, specId, roots) {
|
|
|
161
258
|
walk(join(repoRoot, root));
|
|
162
259
|
return map;
|
|
163
260
|
}
|
|
164
|
-
function parseBacklinks(text, specId) {
|
|
165
|
-
const ids = [];
|
|
166
|
-
const esc = specId.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
167
|
-
const re = new RegExp(`@verifies\\s+${esc}\\s+((?:(?:AC|US|FR)-\\d+[,\\s]*)+)`, 'g');
|
|
168
|
-
let m;
|
|
169
|
-
while ((m = re.exec(text)) !== null)
|
|
170
|
-
for (const id of m[1].match(/(?:AC|US|FR)-\d+/g) ?? [])
|
|
171
|
-
ids.push(id);
|
|
172
|
-
return ids;
|
|
173
|
-
}
|
|
174
261
|
export function registerVerifyAcs(program) {
|
|
175
262
|
program
|
|
176
263
|
.command('verify-acs')
|
|
@@ -198,7 +285,7 @@ export function registerVerifyAcs(program) {
|
|
|
198
285
|
const { lanes: allLanes } = partitionBackingFilesWithLanes(allFiles, laneDefs);
|
|
199
286
|
const stats = runRootVitest(repoRoot, allLanes.get('root') ?? []);
|
|
200
287
|
for (const lane of laneDefs) {
|
|
201
|
-
mergeLaneStats(stats,
|
|
288
|
+
mergeLaneStats(stats, runLane(repoRoot, lane, allLanes.get(lane.prefix) ?? []));
|
|
202
289
|
}
|
|
203
290
|
const results = items.map((it) => {
|
|
204
291
|
const files = [...(backlinkFiles.get(it.id) ?? [])];
|
|
@@ -238,18 +325,12 @@ export function registerVerifyAcs(program) {
|
|
|
238
325
|
text: 'verify-acs: refusing to --write on a protected branch (main); run on a feature branch',
|
|
239
326
|
exitCode: 2,
|
|
240
327
|
});
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
if (after !== next) {
|
|
246
|
-
written++;
|
|
247
|
-
next = after;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
328
|
+
const toPromote = results.filter((r) => r.proven && r.status !== 'verified');
|
|
329
|
+
const stampDate = new Date().toISOString().slice(0, 10);
|
|
330
|
+
const applied = applyPromotions(text, toPromote, stampDate);
|
|
331
|
+
written = applied.written;
|
|
251
332
|
if (written > 0)
|
|
252
|
-
writeFileSync(spec.path,
|
|
333
|
+
writeFileSync(spec.path, applied.text);
|
|
253
334
|
}
|
|
254
335
|
const proven = results.filter((r) => r.proven).length;
|
|
255
336
|
const laneGaps = results.filter((r) => r.laneUnavailable).length;
|
|
@@ -261,9 +342,10 @@ export function registerVerifyAcs(program) {
|
|
|
261
342
|
total: results.length,
|
|
262
343
|
laneUnavailable: laneGaps,
|
|
263
344
|
written,
|
|
264
|
-
results: results.map(({ section, id, proven, laneUnavailable, reason }) => ({
|
|
345
|
+
results: results.map(({ section, id, location, proven, laneUnavailable, reason }) => ({
|
|
265
346
|
section,
|
|
266
347
|
id,
|
|
348
|
+
location,
|
|
267
349
|
proven,
|
|
268
350
|
laneUnavailable,
|
|
269
351
|
reason,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-acs.js","sourceRoot":"","sources":["../../src/commands/verify-acs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAe,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAgB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAiB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAKlH,4FAA4F;AAC5F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,GAAG,GAAW,EAAE,CAAC;IACvB,KAAK,MAAM,EAAE,IAAI,2BAA2B,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,GAAG;QACtE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,KAAK,MAAM,EAAE,IAAI,oBAAoB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG;QACxD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAG,EAA0B,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IAC5G,KAAK,MAAM,EAAE,IAAI,qBAAqB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG;QACzD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C;wFACwF;AACxF,MAAM,UAAU,8BAA8B,CAC5C,KAAe,EACf,QAAmB;IAEnB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;gBACpE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED;uFACuF;AACvF,MAAM,UAAU,qBAAqB,CAAC,KAAe;IACnD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,8BAA8B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC3D,CAAC;AAID;;;;0EAI0E;AAC1E,SAAS,qBAAqB,CAAC,QAAgB,EAAE,OAAe;IAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,IAAI,MAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAa,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACzD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAAE,CAAC,CAAC,MAAM,EAAE,CAAC;;gBACtC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,2EAA2E;AAC3E,SAAS,aAAa,CAAC,QAAgB,EAAE,QAAkB;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,OAAO,EAAE,CAAC,EAAE;YACjG,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,uFAAuF;IACzF,CAAC;IACD,OAAO,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;;8EAI8E;AAC9E,SAAS,aAAa,CAAC,QAAgB,EAAE,IAAa,EAAE,QAAkB;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,IAAI,CAClB,MAAM,EAAE,EACR,uBAAuB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CACvF,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,YAAY,CAAC,GAAI,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,OAAO,EAAE,CAAC,EAAE;YAC3F,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,uFAAuF;IACzF,CAAC;IACD,OAAO,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;;kFAIkF;AAClF,SAAS,cAAc,CAAC,IAA2B,EAAE,IAA2B;IAC9E,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,yCAAyC,CAAC,CAAC;QAC1G,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED;uFACuF;AACvF,SAAS,mBAAmB,CAAC,QAAgB,EAAE,MAAc,EAAE,KAAe;IAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,MAAM,SAAS,GAAG,sBAAsB,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,CAAC,GAAW,EAAQ,EAAE;QACjC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,KAAK,MAAM,EAAE,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;oBACjE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,MAAc;IAClD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,gBAAgB,GAAG,qCAAqC,EAAE,GAAG,CAAC,CAAC;IACrF,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI;QAAE,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3G,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CACV,4HAA4H,CAC7H;SACA,cAAc,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,SAAS,EAAE,oFAAoF,EAAE,KAAK,CAAC;SAC9G,MAAM,CAAC,WAAW,EAAE,2EAA2E,EAAE,KAAK,CAAC;SACvG,MAAM,CACL,YAAY,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAc,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YACP,IAAI,CAAC,MAAM,EAAE;gBACX,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC1C,IAAI,EAAE,oBAAoB,OAAO,CAAC,IAAI,YAAY;gBAClD,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;QACL,MAAM,IAAI,GAAG,YAAY,CAAC,IAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,EAAE,qBAAqB,EAAE,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAK,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,8BAA8B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM;gBAC1B,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;oBACtB,CAAC,CAAC,4BAA4B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACpD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACf,gFAAgF;YAChF,4EAA4E;YAC5E,kFAAkF;YAClF,8DAA8D;YAC9D,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC;YACnG,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;QAC7F,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,gFAAgF;YAChF,6EAA6E;YAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAChG,IAAI,KAAK,CAAC,MAAM;gBACd,IAAI,CAAC,MAAM,EAAE;oBACX,EAAE,EAAE,KAAK;oBACT,IAAI,EAAE,EAAE,IAAI,EAAE,IAAK,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC/B,IAAI,EAAE,eAAe,KAAK,CAAC,MAAM,gDAAgD;oBACjF,QAAQ,EAAE,CAAC;iBACZ,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,iBAAiB,CAAC,QAAQ,CAAC;gBAC7B,IAAI,CAAC,MAAM,EAAE;oBACX,EAAE,EAAE,KAAK;oBACT,IAAI,EAAE,EAAE,IAAI,EAAE,IAAK,CAAC,EAAE,EAAE;oBACxB,IAAI,EAAE,uFAAuF;oBAC7F,QAAQ,EAAE,CAAC;iBACZ,CAAC,CAAC;YACL,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACxC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBACtE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACnB,OAAO,EAAE,CAAC;wBACV,IAAI,GAAG,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,OAAO,GAAG,CAAC;gBAAE,aAAa,CAAC,IAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE;YACX,EAAE,EAAE,IAAI;YACR,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAK,CAAC,EAAE;gBACd,MAAM;gBACN,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,eAAe,EAAE,QAAQ;gBACzB,OAAO;gBACP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC1E,OAAO;oBACP,EAAE;oBACF,MAAM;oBACN,eAAe;oBACf,MAAM;iBACP,CAAC,CAAC;aACJ;YACD,IAAI,EACF,eAAe,IAAK,CAAC,EAAE,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,UAAU,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,WAAW,CAAC,CAAC,CAAC,2BAA2B,IAAI;gBAC3L,OAAO;qBACJ,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CACrH;qBACA,IAAI,CAAC,IAAI,CAAC;SAChB,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"verify-acs.js","sourceRoot":"","sources":["../../src/commands/verify-acs.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ import { registerRun } from './commands/run.js';
|
|
|
33
33
|
import { registerReadinessRollup } from './commands/rollup.js';
|
|
34
34
|
import { registerScorecard } from './commands/scorecard.js';
|
|
35
35
|
import { registerSignoff } from './commands/signoff.js';
|
|
36
|
+
import { registerStatusDrift } from './commands/status-drift.js';
|
|
36
37
|
import { registerWalkthrough } from './commands/walkthrough.js';
|
|
37
38
|
import { registerStatus } from './commands/status.js';
|
|
38
39
|
import { registerTasks } from './commands/tasks.js';
|
|
@@ -151,6 +152,7 @@ registerRun(program);
|
|
|
151
152
|
registerSignoff(program);
|
|
152
153
|
registerWalkthrough(program);
|
|
153
154
|
registerVerifyAcs(program);
|
|
155
|
+
registerStatusDrift(program);
|
|
154
156
|
registerGenTests(program);
|
|
155
157
|
registerAudit(program);
|
|
156
158
|
registerConformance(program);
|
|
@@ -184,6 +186,7 @@ Examples:
|
|
|
184
186
|
$ eos-spec readiness-rollup --save # Ranked platform readiness rollup across all cores
|
|
185
187
|
$ eos-spec delta validate --spec CL-15-EN-01 # Validate change delta section (compound enhancement ID)
|
|
186
188
|
$ eos-spec verify-rollout # Run rollout verification checks
|
|
189
|
+
$ eos-spec status-drift --core hr # Read-only AC-coverage drift buckets (promotes nothing)
|
|
187
190
|
|
|
188
191
|
Documentation:
|
|
189
192
|
specs/_templates/SPEC_GUIDE.md # Spec authoring decision tree
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, fs-free helpers for BODY-format tracked requirements — the `- **US-N** [status] …`
|
|
3
|
+
* / `- **FR-N** [status] …` list items some consumers (encoreos) author in the markdown body
|
|
4
|
+
* rather than in frontmatter `user_stories:`/`requirements:`. The engine's frontmatter path
|
|
5
|
+
* (setRequirementStatus / normalizeUserStories) cannot see or promote these, so `verify-acs`
|
|
6
|
+
* uses these leaves to read + promote them. On the /pure graph: no node:* imports.
|
|
7
|
+
*
|
|
8
|
+
* The `**` bold anchor is optional but the US|FR alternation means `- **NFR-…**` never
|
|
9
|
+
* matches — NFR / success criteria are a separate, consumer-owned model.
|
|
10
|
+
*/
|
|
11
|
+
export type BodyRequirement = {
|
|
12
|
+
section: 'user_stories' | 'requirements';
|
|
13
|
+
id: string;
|
|
14
|
+
status: string;
|
|
15
|
+
/** 0-based index into the FULL text's lines (setBodyRequirementStatus flips this line). */
|
|
16
|
+
line: number;
|
|
17
|
+
};
|
|
18
|
+
/** Parse one line into {id, kind, status}, or null when it is not a body requirement. */
|
|
19
|
+
export declare function matchBodyRequirement(line: string): {
|
|
20
|
+
id: string;
|
|
21
|
+
kind: 'US' | 'FR';
|
|
22
|
+
status: string;
|
|
23
|
+
} | null;
|
|
24
|
+
/** Scan a spec's BODY for tracked US/FR items. `kind:'US'` → section 'user_stories';
|
|
25
|
+
* 'FR' → 'requirements'. Line indices are into `text.split('\n')`. */
|
|
26
|
+
export declare function findBodyRequirements(text: string): BodyRequirement[];
|
|
27
|
+
/** Idempotently flip a body requirement's `[planned|in_progress]` token to `[verified]` on the
|
|
28
|
+
* line for `id`. Returns text unchanged when the item is absent or already at a non-open
|
|
29
|
+
* status. Only the first matching line is flipped (ids are unique per spec). */
|
|
30
|
+
export declare function setBodyRequirementStatus(text: string, id: string, status: 'verified'): string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, fs-free helpers for BODY-format tracked requirements — the `- **US-N** [status] …`
|
|
3
|
+
* / `- **FR-N** [status] …` list items some consumers (encoreos) author in the markdown body
|
|
4
|
+
* rather than in frontmatter `user_stories:`/`requirements:`. The engine's frontmatter path
|
|
5
|
+
* (setRequirementStatus / normalizeUserStories) cannot see or promote these, so `verify-acs`
|
|
6
|
+
* uses these leaves to read + promote them. On the /pure graph: no node:* imports.
|
|
7
|
+
*
|
|
8
|
+
* The `**` bold anchor is optional but the US|FR alternation means `- **NFR-…**` never
|
|
9
|
+
* matches — NFR / success criteria are a separate, consumer-owned model.
|
|
10
|
+
*/
|
|
11
|
+
const BODY_REQUIREMENT_RE = /^\s*-\s+\*{0,2}((US|FR)-\d+)\*{0,2}\s+\[([a-z_]+)\]/;
|
|
12
|
+
const FRONTMATTER_RE = /^---\r?\n[\s\S]*?\r?\n---/;
|
|
13
|
+
/** Parse one line into {id, kind, status}, or null when it is not a body requirement. */
|
|
14
|
+
export function matchBodyRequirement(line) {
|
|
15
|
+
const m = BODY_REQUIREMENT_RE.exec(line);
|
|
16
|
+
return m ? { id: m[1], kind: m[2], status: m[3] } : null;
|
|
17
|
+
}
|
|
18
|
+
/** The 0-based index of the first BODY line (line after the frontmatter block), or 0 when
|
|
19
|
+
* there is no frontmatter. Body-requirement lines are invalid YAML, but scanning only the
|
|
20
|
+
* body keeps the reader honest about where tracked items may live. */
|
|
21
|
+
function firstBodyLine(text) {
|
|
22
|
+
const m = FRONTMATTER_RE.exec(text);
|
|
23
|
+
if (!m)
|
|
24
|
+
return 0;
|
|
25
|
+
return text.slice(0, m[0].length).split('\n').length - 1;
|
|
26
|
+
}
|
|
27
|
+
/** Scan a spec's BODY for tracked US/FR items. `kind:'US'` → section 'user_stories';
|
|
28
|
+
* 'FR' → 'requirements'. Line indices are into `text.split('\n')`. */
|
|
29
|
+
export function findBodyRequirements(text) {
|
|
30
|
+
const lines = text.split('\n');
|
|
31
|
+
const start = firstBodyLine(text);
|
|
32
|
+
const out = [];
|
|
33
|
+
for (let i = start; i < lines.length; i++) {
|
|
34
|
+
const r = matchBodyRequirement(lines[i]);
|
|
35
|
+
if (r)
|
|
36
|
+
out.push({ section: r.kind === 'US' ? 'user_stories' : 'requirements', id: r.id, status: r.status, line: i });
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/** Idempotently flip a body requirement's `[planned|in_progress]` token to `[verified]` on the
|
|
41
|
+
* line for `id`. Returns text unchanged when the item is absent or already at a non-open
|
|
42
|
+
* status. Only the first matching line is flipped (ids are unique per spec). */
|
|
43
|
+
export function setBodyRequirementStatus(text, id, status) {
|
|
44
|
+
const lines = text.split('\n');
|
|
45
|
+
const start = firstBodyLine(text);
|
|
46
|
+
const escId = id.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
47
|
+
const idLineRe = new RegExp(`^(\\s*-\\s+\\*{0,2}${escId}\\*{0,2}\\s+)\\[(?:planned|in_progress)\\]`);
|
|
48
|
+
for (let i = start; i < lines.length; i++) {
|
|
49
|
+
if (idLineRe.test(lines[i])) {
|
|
50
|
+
lines[i] = lines[i].replace(idLineRe, `$1[${status}]`);
|
|
51
|
+
return lines.join('\n');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return text;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=body-requirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-requirements.js","sourceRoot":"","sources":["../../src/lib/body-requirements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAClF,MAAM,cAAc,GAAG,2BAA2B,CAAC;AAUnD,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED;;uEAEuE;AACvE,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED;uEACuE;AACvE,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,EAAU,EAAE,MAAkB;IACnF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,sBAAsB,KAAK,4CAA4C,CAAC,CAAC;IACrG,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -35,6 +35,13 @@ export type CloseoutRow = {
|
|
|
35
35
|
* 'complete' decision (e.g. builder's 'implemented'), the decision verbatim for a
|
|
36
36
|
* nudge, or null when nothing was written. */
|
|
37
37
|
writtenStatus: string | null;
|
|
38
|
+
/** The terminal `pipeline_status` value this run WOULD mint (#75) — set whenever the
|
|
39
|
+
* decision is 'complete' and `--pipeline` opted in, INDEPENDENT of write, so a --dry-run
|
|
40
|
+
* previews it. Null when not opted in / not a complete decision. */
|
|
41
|
+
wouldMintPipelineStatus: string | null;
|
|
42
|
+
/** The terminal `pipeline_status` value ACTUALLY written this run (null in a dry-run, or
|
|
43
|
+
* when not opted in). Equals {@link wouldMintPipelineStatus} on a real, applied run. */
|
|
44
|
+
writtenPipelineStatus: string | null;
|
|
38
45
|
/** True only when this run actually wrote a new `status:` to the spec file. */
|
|
39
46
|
written: boolean;
|
|
40
47
|
/** The reconcile divergence row (pipeline_status recompute) computed as step 1. */
|
|
@@ -46,6 +53,14 @@ export type CloseoutSpecOptions = CloseoutOptions & {
|
|
|
46
53
|
/** The status to write for a verified-complete spec. Absent ⇒ 'complete' (the engine's
|
|
47
54
|
* canonical terminal); a consumer passes its own terminal (e.g. 'implemented'), P3a. */
|
|
48
55
|
terminalStatus?: string;
|
|
56
|
+
/** #75: the repo's opt-in terminal `pipeline_status` value (`close_out.pipeline_terminal`).
|
|
57
|
+
* Passed WHENEVER configured so step-1 reconcile's pin-guard preserves an already-minted
|
|
58
|
+
* terminal on a re-close. Absent ⇒ no pipeline_status terminal semantics. */
|
|
59
|
+
pipelineTerminal?: string;
|
|
60
|
+
/** #75: mint `pipeline_status = pipelineTerminal` on a verified-complete decision (set by
|
|
61
|
+
* `close-out --pipeline`). Requires `pipelineTerminal`. Off ⇒ close-out writes only `status:`
|
|
62
|
+
* (unchanged default behavior). */
|
|
63
|
+
mintPipelineTerminal?: boolean;
|
|
49
64
|
};
|
|
50
65
|
/**
|
|
51
66
|
* Close out a single spec: reconcile, decide, and (when `write`) materialize the
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { isCompleteStatus, isTerminalStatus } from './blockers.js';
|
|
2
3
|
import { decideCloseout } from './closeout-predicate.js';
|
|
3
|
-
import { readFrontmatter, setStatus } from './frontmatter.js';
|
|
4
|
+
import { readFrontmatter, setPipelineStatus, setStatus } from './frontmatter.js';
|
|
4
5
|
import { reconcileSpec } from './reconcile-core.js';
|
|
5
6
|
/**
|
|
6
7
|
* Close out a single spec: reconcile, decide, and (when `write`) materialize the
|
|
@@ -11,24 +12,58 @@ export function closeOutSpec(repoRoot, spec, opts) {
|
|
|
11
12
|
const { write, ...decisionOpts } = opts;
|
|
12
13
|
// Step 1 — reconcile. In a real run this writes the artifact-computed
|
|
13
14
|
// `pipeline_status` back; in a dry-run nothing is written, but we still capture the
|
|
14
|
-
// computed stage and feed it to the gate below so dry-run == apply.
|
|
15
|
-
|
|
15
|
+
// computed stage and feed it to the gate below so dry-run == apply. The pin-guard
|
|
16
|
+
// (opts.pipelineTerminal) preserves an already-minted ship terminal on a re-close (#75).
|
|
17
|
+
const reconcile = reconcileSpec(repoRoot, spec, write, undefined, opts.pipelineTerminal);
|
|
16
18
|
// Step 2 — decide. Read the (possibly just-reconciled) frontmatter and overlay the
|
|
17
19
|
// artifact-computed stage so the gate keys on reality, not a stale/lagging value.
|
|
18
20
|
const text = readFileSync(spec.path, 'utf8');
|
|
19
21
|
const fm = readFrontmatter(text);
|
|
20
22
|
const effectiveFm = { ...fm, pipeline_status: reconcile.computed ?? fm.pipeline_status };
|
|
21
|
-
|
|
23
|
+
// The pure predicate's never-downgrade guard only knows complete/implemented/✅ +
|
|
24
|
+
// archived/superseded/… — a CUSTOM configured terminal (e.g. 'shipped') slips past it,
|
|
25
|
+
// so a re-close would re-evaluate the ACs and misreport a 'complete' decision for a
|
|
26
|
+
// no-op. Recognize the configured terminal here (the core owns the terminal mapping),
|
|
27
|
+
// leaving the pure predicate terminal-agnostic.
|
|
28
|
+
const terminalStatus = opts.terminalStatus ?? 'complete';
|
|
29
|
+
const st = typeof effectiveFm.status === 'string' ? effectiveFm.status.trim() : '';
|
|
30
|
+
const atCustomTerminal = st !== '' &&
|
|
31
|
+
st.toLowerCase() === terminalStatus.toLowerCase() &&
|
|
32
|
+
!isCompleteStatus(st) &&
|
|
33
|
+
!isTerminalStatus(st, effectiveFm.superseded_by);
|
|
34
|
+
const decision = atCustomTerminal
|
|
35
|
+
? { nextStatus: null, reason: `already at terminal status (status: ${effectiveFm.status}); never downgrade` }
|
|
36
|
+
: decideCloseout(effectiveFm, decisionOpts);
|
|
37
|
+
// #75: the terminal-pipeline-status mint INTENT — computed independent of `write` so a
|
|
38
|
+
// `--dry-run` previews it exactly as it previews the `status` decision (dry-run == apply).
|
|
39
|
+
// It fires on a verified-complete decision when `--pipeline` opted in and the repo declared
|
|
40
|
+
// `close_out.pipeline_terminal`. A downstream that keys off pipeline_status (e.g. the encoreos
|
|
41
|
+
// epic-close rollup, which reads `pipeline_status ~ /^complete/i`) then sees the ship signal
|
|
42
|
+
// without a hand-edit.
|
|
43
|
+
const wouldMintPipelineStatus = decision.nextStatus === 'complete' && opts.mintPipelineTerminal && opts.pipelineTerminal
|
|
44
|
+
? opts.pipelineTerminal
|
|
45
|
+
: null;
|
|
22
46
|
// Step 3 — promote. The engine OWNS the verified status write; it happens only when
|
|
23
47
|
// the gate returned a status AND --write (non-dry-run) was requested.
|
|
24
48
|
let written = false;
|
|
25
49
|
let writtenStatus = null;
|
|
50
|
+
let writtenPipelineStatus = null;
|
|
26
51
|
if (write && decision.nextStatus) {
|
|
27
52
|
// A 'complete' decision writes the CONFIGURED terminal status (default 'complete';
|
|
28
53
|
// e.g. builder's 'implemented') — the engine owns the terminal write so a consumer
|
|
29
54
|
// needs no post-hoc CI rewrite (P3a). A nudge writes the decision's status verbatim.
|
|
30
55
|
const target = decision.nextStatus === 'complete' ? (opts.terminalStatus ?? 'complete') : decision.nextStatus;
|
|
31
|
-
|
|
56
|
+
let next = setStatus(text, target);
|
|
57
|
+
// Mint the terminal pipeline_status onto the already-reconciled `text` (step 1 healed
|
|
58
|
+
// it down to the computed stage), so the terminal lands ABOVE that stage; reconcile's
|
|
59
|
+
// pin-guard keeps it on every later pass.
|
|
60
|
+
if (wouldMintPipelineStatus) {
|
|
61
|
+
const pipelined = setPipelineStatus(next, wouldMintPipelineStatus);
|
|
62
|
+
if (pipelined !== next) {
|
|
63
|
+
next = pipelined;
|
|
64
|
+
writtenPipelineStatus = wouldMintPipelineStatus;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
32
67
|
if (next !== text) {
|
|
33
68
|
writeFileSync(spec.path, next, 'utf8');
|
|
34
69
|
written = true;
|
|
@@ -41,6 +76,8 @@ export function closeOutSpec(repoRoot, spec, opts) {
|
|
|
41
76
|
decision,
|
|
42
77
|
status: decision.nextStatus,
|
|
43
78
|
writtenStatus,
|
|
79
|
+
wouldMintPipelineStatus,
|
|
80
|
+
writtenPipelineStatus,
|
|
44
81
|
written,
|
|
45
82
|
reconcile,
|
|
46
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closeout-core.js","sourceRoot":"","sources":["../../src/lib/closeout-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAA+C,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"closeout-core.js","sourceRoot":"","sources":["../../src/lib/closeout-core.ts"],"names":[],"mappings":"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"}
|