@specship/specship-win32-arm64 0.25.0 → 0.28.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/bin/specship.cmd +31 -1
- package/lib/dist/activation/cheatsheet.d.ts +17 -1
- package/lib/dist/activation/cheatsheet.d.ts.map +1 -1
- package/lib/dist/activation/cheatsheet.js +47 -3
- package/lib/dist/activation/cheatsheet.js.map +1 -1
- package/lib/dist/activation/hook-output.d.ts +80 -0
- package/lib/dist/activation/hook-output.d.ts.map +1 -0
- package/lib/dist/activation/hook-output.js +103 -0
- package/lib/dist/activation/hook-output.js.map +1 -0
- package/lib/dist/activation/search-intercept.d.ts +60 -29
- package/lib/dist/activation/search-intercept.d.ts.map +1 -1
- package/lib/dist/activation/search-intercept.js +159 -55
- package/lib/dist/activation/search-intercept.js.map +1 -1
- package/lib/dist/activation/steering.d.ts +8 -10
- package/lib/dist/activation/steering.d.ts.map +1 -1
- package/lib/dist/activation/steering.js +21 -6
- package/lib/dist/activation/steering.js.map +1 -1
- package/lib/dist/behaviour/behaviour-surface.d.ts +47 -0
- package/lib/dist/behaviour/behaviour-surface.d.ts.map +1 -1
- package/lib/dist/behaviour/behaviour-surface.js +108 -2
- package/lib/dist/behaviour/behaviour-surface.js.map +1 -1
- package/lib/dist/bin/node-version-check.d.ts +22 -7
- package/lib/dist/bin/node-version-check.d.ts.map +1 -1
- package/lib/dist/bin/node-version-check.js +39 -9
- package/lib/dist/bin/node-version-check.js.map +1 -1
- package/lib/dist/bin/specship.js +762 -81
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/commands/specship/learn.md +22 -0
- package/lib/dist/commands/specship/spec.md +12 -0
- package/lib/dist/db/sqlite-adapter.d.ts +7 -5
- package/lib/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/lib/dist/db/sqlite-adapter.js +11 -9
- package/lib/dist/db/sqlite-adapter.js.map +1 -1
- package/lib/dist/enforce/changed-files.d.ts +11 -0
- package/lib/dist/enforce/changed-files.d.ts.map +1 -1
- package/lib/dist/enforce/changed-files.js +42 -0
- package/lib/dist/enforce/changed-files.js.map +1 -1
- package/lib/dist/enforce/enforce.d.ts +25 -1
- package/lib/dist/enforce/enforce.d.ts.map +1 -1
- package/lib/dist/enforce/enforce.js +58 -3
- package/lib/dist/enforce/enforce.js.map +1 -1
- package/lib/dist/enforce/mutation.d.ts +46 -0
- package/lib/dist/enforce/mutation.d.ts.map +1 -0
- package/lib/dist/enforce/mutation.js +104 -0
- package/lib/dist/enforce/mutation.js.map +1 -0
- package/lib/dist/enforce/suppressions.d.ts +33 -0
- package/lib/dist/enforce/suppressions.d.ts.map +1 -0
- package/lib/dist/enforce/suppressions.js +159 -0
- package/lib/dist/enforce/suppressions.js.map +1 -0
- package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.js +16 -2
- package/lib/dist/extraction/specs/markdown-spec-extractor.js.map +1 -1
- package/lib/dist/graph/spec-coverage.d.ts +57 -1
- package/lib/dist/graph/spec-coverage.d.ts.map +1 -1
- package/lib/dist/graph/spec-coverage.js +129 -5
- package/lib/dist/graph/spec-coverage.js.map +1 -1
- package/lib/dist/health/smoke-check.js +2 -2
- package/lib/dist/health/smoke-check.js.map +1 -1
- package/lib/dist/index.d.ts +8 -3
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +65 -9
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/gemini-commands.d.ts +107 -0
- package/lib/dist/installer/gemini-commands.d.ts.map +1 -0
- package/lib/dist/installer/gemini-commands.js +264 -0
- package/lib/dist/installer/gemini-commands.js.map +1 -0
- package/lib/dist/installer/index.d.ts +23 -1
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +22 -3
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/install-defaults.d.ts +19 -0
- package/lib/dist/installer/install-defaults.d.ts.map +1 -1
- package/lib/dist/installer/install-defaults.js +28 -0
- package/lib/dist/installer/install-defaults.js.map +1 -1
- package/lib/dist/installer/instructions-template.d.ts +22 -0
- package/lib/dist/installer/instructions-template.d.ts.map +1 -1
- package/lib/dist/installer/instructions-template.js +37 -1
- package/lib/dist/installer/instructions-template.js.map +1 -1
- package/lib/dist/installer/targets/claude.d.ts +4 -0
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +8 -25
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/installer/targets/gemini.d.ts +85 -12
- package/lib/dist/installer/targets/gemini.d.ts.map +1 -1
- package/lib/dist/installer/targets/gemini.js +527 -30
- package/lib/dist/installer/targets/gemini.js.map +1 -1
- package/lib/dist/installer/targets/shared.d.ts +13 -0
- package/lib/dist/installer/targets/shared.d.ts.map +1 -1
- package/lib/dist/installer/targets/shared.js +18 -0
- package/lib/dist/installer/targets/shared.js.map +1 -1
- package/lib/dist/installer/targets/types.d.ts +12 -0
- package/lib/dist/installer/targets/types.d.ts.map +1 -1
- package/lib/dist/jira/auto-publish.d.ts +71 -4
- package/lib/dist/jira/auto-publish.d.ts.map +1 -1
- package/lib/dist/jira/auto-publish.js +186 -17
- package/lib/dist/jira/auto-publish.js.map +1 -1
- package/lib/dist/jira/reconcile.d.ts +24 -1
- package/lib/dist/jira/reconcile.d.ts.map +1 -1
- package/lib/dist/jira/reconcile.js +46 -2
- package/lib/dist/jira/reconcile.js.map +1 -1
- package/lib/dist/jira/repo-config.d.ts +9 -0
- package/lib/dist/jira/repo-config.d.ts.map +1 -1
- package/lib/dist/jira/repo-config.js +11 -0
- package/lib/dist/jira/repo-config.js.map +1 -1
- package/lib/dist/jira/types.d.ts +7 -0
- package/lib/dist/jira/types.d.ts.map +1 -1
- package/lib/dist/jira/types.js.map +1 -1
- package/lib/dist/knowledge/enforce.d.ts +75 -0
- package/lib/dist/knowledge/enforce.d.ts.map +1 -0
- package/lib/dist/knowledge/enforce.js +250 -0
- package/lib/dist/knowledge/enforce.js.map +1 -0
- package/lib/dist/knowledge/facts.d.ts +33 -0
- package/lib/dist/knowledge/facts.d.ts.map +1 -0
- package/lib/dist/knowledge/facts.js +117 -0
- package/lib/dist/knowledge/facts.js.map +1 -0
- package/lib/dist/knowledge/proposals.d.ts +88 -0
- package/lib/dist/knowledge/proposals.d.ts.map +1 -0
- package/lib/dist/knowledge/proposals.js +360 -0
- package/lib/dist/knowledge/proposals.js.map +1 -0
- package/lib/dist/knowledge/stale.d.ts +64 -0
- package/lib/dist/knowledge/stale.d.ts.map +1 -0
- package/lib/dist/knowledge/stale.js +174 -0
- package/lib/dist/knowledge/stale.js.map +1 -0
- package/lib/dist/mcp/gemini-session.d.ts +50 -0
- package/lib/dist/mcp/gemini-session.d.ts.map +1 -0
- package/lib/dist/mcp/gemini-session.js +159 -0
- package/lib/dist/mcp/gemini-session.js.map +1 -0
- package/lib/dist/mcp/jira-tools.d.ts.map +1 -1
- package/lib/dist/mcp/jira-tools.js +25 -0
- package/lib/dist/mcp/jira-tools.js.map +1 -1
- package/lib/dist/mcp/model-context.d.ts +22 -9
- package/lib/dist/mcp/model-context.d.ts.map +1 -1
- package/lib/dist/mcp/model-context.js +35 -13
- package/lib/dist/mcp/model-context.js.map +1 -1
- package/lib/dist/mcp/proxy.js +1 -1
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +16 -15
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +67 -1
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/session.js +1 -1
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/spec-tools.d.ts +9 -1
- package/lib/dist/mcp/spec-tools.d.ts.map +1 -1
- package/lib/dist/mcp/spec-tools.js +69 -21
- package/lib/dist/mcp/spec-tools.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +37 -1
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +120 -9
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/pulse/pulse.d.ts +93 -0
- package/lib/dist/pulse/pulse.d.ts.map +1 -0
- package/lib/dist/pulse/pulse.js +401 -0
- package/lib/dist/pulse/pulse.js.map +1 -0
- package/lib/dist/reflect/apply.d.ts.map +1 -1
- package/lib/dist/reflect/apply.js +38 -3
- package/lib/dist/reflect/apply.js.map +1 -1
- package/lib/dist/reflect/auto-sweep.d.ts +26 -0
- package/lib/dist/reflect/auto-sweep.d.ts.map +1 -0
- package/lib/dist/reflect/auto-sweep.js +90 -0
- package/lib/dist/reflect/auto-sweep.js.map +1 -0
- package/lib/dist/reflect/cli.d.ts +62 -0
- package/lib/dist/reflect/cli.d.ts.map +1 -0
- package/lib/dist/reflect/cli.js +163 -0
- package/lib/dist/reflect/cli.js.map +1 -0
- package/lib/dist/reflect/miner.d.ts.map +1 -1
- package/lib/dist/reflect/miner.js +119 -0
- package/lib/dist/reflect/miner.js.map +1 -1
- package/lib/dist/reflect/sweep.d.ts +1 -0
- package/lib/dist/reflect/sweep.d.ts.map +1 -1
- package/lib/dist/reflect/sweep.js +62 -13
- package/lib/dist/reflect/sweep.js.map +1 -1
- package/lib/dist/reflect/targets.d.ts +2 -0
- package/lib/dist/reflect/targets.d.ts.map +1 -1
- package/lib/dist/reflect/targets.js +33 -0
- package/lib/dist/reflect/targets.js.map +1 -1
- package/lib/dist/reflect/types.d.ts +19 -2
- package/lib/dist/reflect/types.d.ts.map +1 -1
- package/lib/dist/resolution/test-title-links.d.ts.map +1 -1
- package/lib/dist/resolution/test-title-links.js +3 -14
- package/lib/dist/resolution/test-title-links.js.map +1 -1
- package/lib/dist/server/routes/claude.js +15 -7
- package/lib/dist/server/routes/knowledge.js +118 -0
- package/lib/dist/server/server.js +2 -0
- package/lib/dist/spec-lint/lint.d.ts +1 -1
- package/lib/dist/spec-lint/lint.d.ts.map +1 -1
- package/lib/dist/spec-lint/lint.js +63 -2
- package/lib/dist/spec-lint/lint.js.map +1 -1
- package/lib/dist/spec-quality/criterion-ids.d.ts +13 -0
- package/lib/dist/spec-quality/criterion-ids.d.ts.map +1 -0
- package/lib/dist/spec-quality/criterion-ids.js +38 -0
- package/lib/dist/spec-quality/criterion-ids.js.map +1 -0
- package/lib/dist/spec-quality/evidence-kind.d.ts +54 -0
- package/lib/dist/spec-quality/evidence-kind.d.ts.map +1 -0
- package/lib/dist/spec-quality/evidence-kind.js +183 -0
- package/lib/dist/spec-quality/evidence-kind.js.map +1 -0
- package/lib/dist/spec-quality/link-persist.d.ts +65 -0
- package/lib/dist/spec-quality/link-persist.d.ts.map +1 -0
- package/lib/dist/spec-quality/link-persist.js +249 -0
- package/lib/dist/spec-quality/link-persist.js.map +1 -0
- package/lib/dist/spec-quality/plan-scope.d.ts +38 -0
- package/lib/dist/spec-quality/plan-scope.d.ts.map +1 -0
- package/lib/dist/spec-quality/plan-scope.js +129 -0
- package/lib/dist/spec-quality/plan-scope.js.map +1 -0
- package/lib/dist/spec-quality/postcheck.d.ts +85 -0
- package/lib/dist/spec-quality/postcheck.d.ts.map +1 -0
- package/lib/dist/spec-quality/postcheck.js +390 -0
- package/lib/dist/spec-quality/postcheck.js.map +1 -0
- package/lib/dist/spec-quality/readiness.d.ts +72 -0
- package/lib/dist/spec-quality/readiness.d.ts.map +1 -0
- package/lib/dist/spec-quality/readiness.js +226 -0
- package/lib/dist/spec-quality/readiness.js.map +1 -0
- package/lib/dist/workflows/agents/claude.d.ts +16 -0
- package/lib/dist/workflows/agents/claude.d.ts.map +1 -0
- package/lib/dist/workflows/agents/claude.js +82 -0
- package/lib/dist/workflows/agents/claude.js.map +1 -0
- package/lib/dist/workflows/agents/gemini.d.ts +21 -0
- package/lib/dist/workflows/agents/gemini.d.ts.map +1 -0
- package/lib/dist/workflows/agents/gemini.js +124 -0
- package/lib/dist/workflows/agents/gemini.js.map +1 -0
- package/lib/dist/workflows/agents/index.d.ts +28 -0
- package/lib/dist/workflows/agents/index.d.ts.map +1 -0
- package/lib/dist/workflows/agents/index.js +104 -0
- package/lib/dist/workflows/agents/index.js.map +1 -0
- package/lib/dist/workflows/agents/types.d.ts +55 -0
- package/lib/dist/workflows/agents/types.d.ts.map +1 -0
- package/lib/dist/workflows/agents/types.js +46 -0
- package/lib/dist/workflows/agents/types.js.map +1 -0
- package/lib/dist/workflows/batch.d.ts +63 -0
- package/lib/dist/workflows/batch.d.ts.map +1 -0
- package/lib/dist/workflows/batch.js +151 -0
- package/lib/dist/workflows/batch.js.map +1 -0
- package/lib/dist/workflows/defaults/claude-design-implement.yaml +3 -4
- package/lib/dist/workflows/defaults/spec-author.yaml +11 -9
- package/lib/dist/workflows/defaults/spec-implement-mixed.yaml +21 -436
- package/lib/dist/workflows/defaults/spec-implement.yaml +465 -46
- package/lib/dist/workflows/discovery.d.ts +13 -0
- package/lib/dist/workflows/discovery.d.ts.map +1 -1
- package/lib/dist/workflows/discovery.js +79 -17
- package/lib/dist/workflows/discovery.js.map +1 -1
- package/lib/dist/workflows/executor.d.ts +18 -0
- package/lib/dist/workflows/executor.d.ts.map +1 -1
- package/lib/dist/workflows/executor.js +130 -33
- package/lib/dist/workflows/executor.js.map +1 -1
- package/lib/dist/workflows/gc.d.ts +50 -0
- package/lib/dist/workflows/gc.d.ts.map +1 -0
- package/lib/dist/workflows/gc.js +120 -0
- package/lib/dist/workflows/gc.js.map +1 -0
- package/lib/dist/workflows/merge-queue.d.ts +64 -0
- package/lib/dist/workflows/merge-queue.d.ts.map +1 -0
- package/lib/dist/workflows/merge-queue.js +162 -0
- package/lib/dist/workflows/merge-queue.js.map +1 -0
- package/lib/dist/workflows/runners/approval.d.ts +1 -1
- package/lib/dist/workflows/runners/approval.d.ts.map +1 -1
- package/lib/dist/workflows/runners/approval.js +11 -2
- package/lib/dist/workflows/runners/approval.js.map +1 -1
- package/lib/dist/workflows/runners/bash.d.ts +15 -0
- package/lib/dist/workflows/runners/bash.d.ts.map +1 -1
- package/lib/dist/workflows/runners/bash.js +50 -1
- package/lib/dist/workflows/runners/bash.js.map +1 -1
- package/lib/dist/workflows/runners/prompt.d.ts +16 -41
- package/lib/dist/workflows/runners/prompt.d.ts.map +1 -1
- package/lib/dist/workflows/runners/prompt.js +55 -120
- package/lib/dist/workflows/runners/prompt.js.map +1 -1
- package/lib/dist/workflows/runners/types.d.ts +12 -0
- package/lib/dist/workflows/runners/types.d.ts.map +1 -1
- package/lib/dist/workflows/schemas/workflow.d.ts +17 -0
- package/lib/dist/workflows/schemas/workflow.d.ts.map +1 -1
- package/lib/dist/workflows/schemas/workflow.js +27 -0
- package/lib/dist/workflows/schemas/workflow.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +2 -2
- package/package.json +5 -3
- package/node.exe +0 -4
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Suppression-comment scan (REQ-QGATE-004).
|
|
4
|
+
*
|
|
5
|
+
* Agents under pressure silence lint/type rules instead of fixing code — the
|
|
6
|
+
* implement workflows forbid it in prose, but prose isn't enforcement. This
|
|
7
|
+
* module detects suppression markers INTRODUCED by a change: a pure function
|
|
8
|
+
* over unified diff text (A2), so the workflows' gate, `specship check`, and
|
|
9
|
+
* tests all share one implementation.
|
|
10
|
+
*
|
|
11
|
+
* Ratchet semantics (A1): only added lines count, and an added line whose
|
|
12
|
+
* exact content also appears among the diff's removed lines is a move, not an
|
|
13
|
+
* introduction. Pre-existing suppressions are out of scope.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.scanDisableComments = scanDisableComments;
|
|
17
|
+
exports.formatSuppressionFinding = formatSuppressionFinding;
|
|
18
|
+
/** File families a linter actually honors each marker in (precision guard). */
|
|
19
|
+
const JS_EXT = new Set(['ts', 'tsx', 'mts', 'cts', 'js', 'jsx', 'mjs', 'cjs', 'svelte', 'vue', 'astro']);
|
|
20
|
+
const PY_EXT = new Set(['py', 'pyi']);
|
|
21
|
+
/**
|
|
22
|
+
* Marker families. Precision rules (A2): a marker only counts in a file type
|
|
23
|
+
* its linter reads (`exts`) AND in comment position (`pos` must match the
|
|
24
|
+
* line up to and including the marker) — a mention in prose, a YAML/markdown
|
|
25
|
+
* doc, or a string literal is not a suppression. The first dogfood run of
|
|
26
|
+
* this scanner flagged its own documentation; that false-positive class is
|
|
27
|
+
* what these guards remove.
|
|
28
|
+
*/
|
|
29
|
+
// A directive is only honored at the START of its comment (eslint, tsc and
|
|
30
|
+
// biome all require this), so the regexes anchor there — a prose mention
|
|
31
|
+
// later in a comment is not a suppression.
|
|
32
|
+
const MARKERS = [
|
|
33
|
+
{ marker: 'eslint-disable', re: /^\s*eslint-disable(?:-next-line|-line)?\b/, exts: JS_EXT },
|
|
34
|
+
{ marker: '@ts-expect-error', re: /^\s*@ts-expect-error\b/, exts: JS_EXT },
|
|
35
|
+
{ marker: '@ts-ignore', re: /^\s*@ts-ignore\b/, exts: JS_EXT },
|
|
36
|
+
{ marker: 'biome-ignore', re: /^\s*biome-ignore\b/, exts: JS_EXT },
|
|
37
|
+
{ marker: 'type: ignore', re: /#\s*type:\s*ignore\b/, exts: PY_EXT },
|
|
38
|
+
{ marker: 'noqa', re: /#\s*noqa\b/, exts: PY_EXT },
|
|
39
|
+
];
|
|
40
|
+
function fileExt(file) {
|
|
41
|
+
const dot = file.lastIndexOf('.');
|
|
42
|
+
return dot === -1 ? '' : file.slice(dot + 1).toLowerCase();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The comment part of a line, or null when the line has none. Line-local
|
|
46
|
+
* heuristic: a `//`, `/*` (JS families) or `#` (Python) opener counts only
|
|
47
|
+
* when every quote character before it is balanced — an opener inside a
|
|
48
|
+
* string literal is content, not a comment. Multi-line strings/comments are
|
|
49
|
+
* out of reach for a diff-line scanner; linters need the marker on its own
|
|
50
|
+
* statement line anyway, so line-local is where the real suppressions are.
|
|
51
|
+
*/
|
|
52
|
+
function commentPart(line, js) {
|
|
53
|
+
const openerAt = (idx) => {
|
|
54
|
+
const before = line.slice(0, idx);
|
|
55
|
+
for (const q of ["'", '"', '`']) {
|
|
56
|
+
if ((before.split(q).length - 1) % 2 === 1)
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
};
|
|
61
|
+
const openers = js ? ['//', '/*'] : ['#'];
|
|
62
|
+
let best = -1;
|
|
63
|
+
for (const o of openers) {
|
|
64
|
+
let i = line.indexOf(o);
|
|
65
|
+
while (i !== -1) {
|
|
66
|
+
if (openerAt(i)) {
|
|
67
|
+
best = best === -1 ? i : Math.min(best, i);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
i = line.indexOf(o, i + 1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return best === -1 ? null : line.slice(best);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A suppression is "justified" when it carries an inline explanation in the
|
|
77
|
+
* family's own syntax: eslint's ` -- reason`, biome-ignore's `: reason`.
|
|
78
|
+
* Justified suppressions are still findings — the label exists so a reviewer
|
|
79
|
+
* can triage, not so the gate waves them through.
|
|
80
|
+
*/
|
|
81
|
+
function isJustified(marker, line) {
|
|
82
|
+
if (marker === 'eslint-disable')
|
|
83
|
+
return /--\s*\S/.test(line.slice(line.indexOf('eslint-disable')));
|
|
84
|
+
if (marker === 'biome-ignore')
|
|
85
|
+
return /biome-ignore\s+\S+\s*:\s*\S/.test(line);
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
function matchMarker(line, file) {
|
|
89
|
+
const ext = fileExt(file);
|
|
90
|
+
for (const { marker, re, exts } of MARKERS) {
|
|
91
|
+
if (!exts.has(ext))
|
|
92
|
+
continue;
|
|
93
|
+
const comment = commentPart(line, exts === JS_EXT);
|
|
94
|
+
if (comment === null)
|
|
95
|
+
continue;
|
|
96
|
+
// Strip the opener so the start-anchored directive regexes see the
|
|
97
|
+
// comment TEXT (`// @ts-ignore` → ` @ts-ignore`); Python regexes carry
|
|
98
|
+
// their own `#` anchor and test the raw comment.
|
|
99
|
+
const text = exts === JS_EXT ? comment.replace(/^(?:\/\/+|\/\*+)/, '') : comment;
|
|
100
|
+
if (re.test(text))
|
|
101
|
+
return marker;
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Scan unified diff text for suppression markers on added lines (A1, A2).
|
|
107
|
+
* Pure: input diff text, output findings — no git, no filesystem.
|
|
108
|
+
*/
|
|
109
|
+
function scanDisableComments(diffText) {
|
|
110
|
+
const lines = diffText.split('\n');
|
|
111
|
+
// First pass: collect removed-line content so moves don't count (A1).
|
|
112
|
+
const removed = new Set();
|
|
113
|
+
for (const l of lines) {
|
|
114
|
+
if (l.startsWith('-') && !l.startsWith('---'))
|
|
115
|
+
removed.add(l.slice(1).trim());
|
|
116
|
+
}
|
|
117
|
+
const findings = [];
|
|
118
|
+
let file = null;
|
|
119
|
+
let newLine = 0; // 1-indexed line number in the new file for the NEXT line
|
|
120
|
+
for (const l of lines) {
|
|
121
|
+
if (l.startsWith('+++ ')) {
|
|
122
|
+
const p = l.slice(4).trim();
|
|
123
|
+
file = p === '/dev/null' ? null : p.replace(/^b\//, '');
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const hunk = /^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(l);
|
|
127
|
+
if (hunk) {
|
|
128
|
+
newLine = parseInt(hunk[1] ?? '0', 10);
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (l.startsWith('-') && !l.startsWith('---'))
|
|
132
|
+
continue; // old-file only
|
|
133
|
+
if (l.startsWith('+')) {
|
|
134
|
+
const content = l.slice(1);
|
|
135
|
+
const marker = file ? matchMarker(content, file) : null;
|
|
136
|
+
if (marker && file && !removed.has(content.trim())) {
|
|
137
|
+
findings.push({
|
|
138
|
+
file,
|
|
139
|
+
line: newLine,
|
|
140
|
+
marker,
|
|
141
|
+
justified: isJustified(marker, content),
|
|
142
|
+
text: content.trim(),
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
newLine++;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
// Context line (or anything else inside a hunk body) advances the counter
|
|
149
|
+
// only when we're inside a hunk; headers between hunks reset it anyway.
|
|
150
|
+
if (newLine > 0 && !l.startsWith('diff ') && !l.startsWith('--- '))
|
|
151
|
+
newLine++;
|
|
152
|
+
}
|
|
153
|
+
return findings;
|
|
154
|
+
}
|
|
155
|
+
/** Render a finding as one gate-report line. */
|
|
156
|
+
function formatSuppressionFinding(f) {
|
|
157
|
+
return `${f.file}:${f.line} introduces ${f.marker}${f.justified ? ' (justified)' : ''} — ${f.text}`;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=suppressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/enforce/suppressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-spec-extractor.d.ts","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAE,oBAAoB,EAAqB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown-spec-extractor.d.ts","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAE,oBAAoB,EAAqB,MAAM,SAAS,CAAC;AA4BlE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAaD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK5C,OAAO,IAAI,oBAAoB;IAsZ/B,kEAAkE;IAClE,OAAO,CAAC,WAAW;IAKnB,mEAAmE;IACnE,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,aAAa;IA4GrB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,YAAY;IAgEpB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA6DxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,yBAAyB;IAajC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAyD5B"}
|
|
@@ -50,7 +50,13 @@ const IMPL_REF = /^[-*]\s+([^\s:]+)\s*:\s*([A-Za-z0-9_$.]+)\s*$/;
|
|
|
50
50
|
/** Pattern: a Markdown list bullet (`- foo` / `* foo`, indentation tolerant). */
|
|
51
51
|
const BULLET = /^\s*[-*]\s+(.*\S)\s*$/;
|
|
52
52
|
/** The four recognized domain-fact `type` values (REQ-DOMAIN-001). */
|
|
53
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Recognized domain-fact types. `external` (REQ-KNOW-001) is a fact about a
|
|
55
|
+
* third-party tool or library, pinned to the dependency version it was
|
|
56
|
+
* verified against; its provenance (`dependency` / `version` / `source`) is
|
|
57
|
+
* checked by the spec lint, not here, so a fact missing it still indexes.
|
|
58
|
+
*/
|
|
59
|
+
const DOMAIN_TYPES = new Set(['term', 'rule', 'decision', 'constraint', 'external']);
|
|
54
60
|
/**
|
|
55
61
|
* Derive an acceptance criterion's parent requirement from its id suffix
|
|
56
62
|
* (REQ-ACCEPTANCE-001.A2). The convention is `<REQ-ID>.A<N>` — `REQ-AUTH-001.A2`
|
|
@@ -471,13 +477,21 @@ class MarkdownSpecExtractor {
|
|
|
471
477
|
const type = meta.type;
|
|
472
478
|
if (typeof type === 'string' && !DOMAIN_TYPES.has(type)) {
|
|
473
479
|
errors.push({
|
|
474
|
-
message: `Domain fact "${id}" has unknown type "${type}" (expected one of:
|
|
480
|
+
message: `Domain fact "${id}" has unknown type "${type}" (expected one of: ${[...DOMAIN_TYPES].join(', ')})`,
|
|
475
481
|
filePath: this.filePath,
|
|
476
482
|
line: 1,
|
|
477
483
|
severity: 'warning',
|
|
478
484
|
code: 'spec_unknown_domain_type',
|
|
479
485
|
});
|
|
480
486
|
}
|
|
487
|
+
// An external fact's `version` is the dependency version it was verified
|
|
488
|
+
// against (REQ-KNOW-001), not the document revision — `version` is a known
|
|
489
|
+
// frontmatter key, so carry it into metadata (as a string) where the rest of
|
|
490
|
+
// the fact's provenance lives. The spec revision then falls back to 1
|
|
491
|
+
// unless it was a plain integer.
|
|
492
|
+
if (type === 'external' && frontmatter.version !== undefined) {
|
|
493
|
+
meta.version = String(frontmatter.version);
|
|
494
|
+
}
|
|
481
495
|
// Title: frontmatter `title`, else the first heading, else the id.
|
|
482
496
|
let title = typeof frontmatter.title === 'string' && frontmatter.title.length > 0
|
|
483
497
|
? frontmatter.title
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-spec-extractor.js","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"markdown-spec-extractor.js","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AAuCH,0DAGC;AAQD,oEAEC;AAlDD,mCAAoC;AAIpC;;;;;GAKG;AACH,MAAM,UAAU,GAAG,8CAA8C,CAAC;AAElE,6CAA6C;AAC7C,MAAM,OAAO,GAAG,uBAAuB,CAAC;AAExC,2EAA2E;AAC3E,MAAM,QAAQ,GAAG,+CAA+C,CAAC;AAEjE,iFAAiF;AACjF,MAAM,MAAM,GAAG,uBAAuB,CAAC;AAEvC,sEAAsE;AACtE;;;;;GAKG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AAErF;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,EAAU;IAChD,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,4BAA4B,CAAC,KAAa;IACxD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,aAAqB;IAC1C,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IACzD,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACjD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAa,qBAAqB;IACxB,QAAQ,CAAS;IACjB,MAAM,CAAS;IAEvB,YAAY,QAAgB,EAAE,MAAc;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,2EAA2E;QAC3E,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,uBAAuB;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,6EAA6E;QAC7E,8EAA8E;QAC9E,gFAAgF;QAChF,+EAA+E;QAC/E,gEAAgE;QAChE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,KAAK,GAAW,EAAE,CAAC;QACzB,MAAM,cAAc,GAAwB,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,4BAA4B;QAC5B,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QA+B/E,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,MAAM,iBAAiB,GAAuB,EAAE,CAAC;QACjD,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;QACvB,4EAA4E;QAC5E,qEAAqE;QACrE,IAAI,aAAa,GAAkB,IAAI,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,wEAAwE;oBACxE,iEAAiE;oBACjE,MAAM,CAAC,IAAI,CAAC;wBACV,OAAO,EAAE,qBAAqB,SAAS,gBAAgB,aAAa,GAAG,CAAC,wBAAwB;wBAChG,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,aAAa,GAAG,CAAC;wBACvB,QAAQ,EAAE,SAAS;wBACnB,IAAI,EAAE,kBAAkB;qBACzB,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC/B,aAAa,GAAG,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrC,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,sEAAsE;oBACtE,mEAAmE;oBACnE,IAAI,4BAA4B,CAAC,KAAK,CAAC;wBAAE,SAAS;oBAClD,uEAAuE;oBACvE,2BAA2B;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,OAAO,EAAE,YAAY,KAAK,sEAAsE;wBAChG,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,CAAC,GAAG,CAAC;wBACX,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,iBAAiB;qBACxB,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,eAAe,CAAC,IAAI,CAAC;oBACnB,EAAE,EAAE,SAAS;oBACb,KAAK;oBACL,KAAK;oBACL,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY;oBAC9B,cAAc,EAAE,CAAC;iBAClB,CAAC,CAAC;gBACH,aAAa,GAAG,SAAS,CAAC;gBAC1B,SAAS,GAAG,IAAI,CAAC;gBACjB,aAAa,GAAG,CAAC,CAAC,CAAC;gBACnB,SAAS;YACX,CAAC;YAED,0EAA0E;YAC1E,2EAA2E;YAC3E,yEAAyE;YACzE,0CAA0C;YAC1C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtC,MAAM,cAAc,GAAa,EAAE,CAAC;oBACpC,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;oBAC3B,IAAI,WAAW,GAAG,KAAK,CAAC;oBACxB,IAAI,MAAM,GAAG,CAAC,CAAC;oBACf,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;4BAAE,MAAM;wBACpD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;4BAAE,MAAM;wBAEvD,iEAAiE;wBACjE,gEAAgE;wBAChE,mEAAmE;wBACnE,qDAAqD;wBACrD,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;4BACrC,WAAW,GAAG,IAAI,CAAC;4BACnB,IAAI,iBAAiB,GAAG,CAAC;gCAAE,iBAAiB,GAAG,CAAC,CAAC;4BACjD,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC1B,MAAM,GAAG,CAAC,CAAC;4BACX,SAAS;wBACX,CAAC;wBACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACtB,mEAAmE;4BACnE,wDAAwD;4BACxD,IAAI,CAAC,WAAW;gCAAE,MAAM;4BACxB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC1B,MAAM,GAAG,CAAC,CAAC;4BACX,SAAS;wBACX,CAAC;wBACD,gEAAgE;wBAChE,oCAAoC;wBACpC,IAAI,WAAW;4BAAE,MAAM;wBACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;wBACxB,MAAM,GAAG,CAAC,CAAC;oBACb,CAAC;oBACD,iBAAiB,CAAC,IAAI,CAAC;wBACrB,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;wBAC5B,SAAS,EAAE,CAAC,GAAG,CAAC;wBAChB,OAAO,EAAE,MAAM,GAAG,CAAC;wBACnB,sBAAsB,EAAE,aAAa;wBACrC,cAAc;wBACd,kBAAkB,EAAE,iBAAiB,GAAG,CAAC;qBAC1C,CAAC,CAAC;oBACH,SAAS,GAAG,IAAI,CAAC;oBACjB,aAAa,GAAG,CAAC,CAAC,CAAC;oBACnB,CAAC,GAAG,MAAM,CAAC,CAAC,mCAAmC;oBAC/C,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,6EAA6E;QAC7E,yEAAyE;QACzE,6EAA6E;QAC7E,+EAA+E;QAC/E,0EAA0E;QAC1E,MAAM,aAAa,GACjB,OAAO,WAAW,CAAC,EAAE,KAAK,QAAQ,IAAI,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;YAC7D,CAAC,CAAC,WAAW,CAAC,EAAE;YAChB,CAAC,CAAC,SAAS,CAAC;QAEhB,+CAA+C;QAC/C,iFAAiF;QACjF,gFAAgF;QAChF,8BAA8B;QAC9B,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAChF,CAAC;QACF,MAAM,eAAe,GACnB,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElE,MAAM,KAAK,GAAG,aAAa,IAAI,eAAe,EAAE,EAAE,CAAC;QAEnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,qCAAqC;YACrC,IAAI,YAAoB,CAAC;YACzB,IAAI,YAAoB,CAAC;YACzB,IAAI,UAAkB,CAAC;YACvB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,yEAAyE;gBACzE,0EAA0E;gBAC1E,0EAA0E;gBAC1E,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;gBACxD,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC;gBACzC,YAAY,GAAG,eAAe,CAAC,cAAc,GAAG,CAAC,CAAC;gBAClD,UAAU;oBACR,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,2EAA2E;gBAC3E,0EAA0E;gBAC1E,4BAA4B;gBAC5B,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBACxC,YAAY,GAAG,gBAAgB,GAAG,CAAC,CAAC;gBACpC,YAAY,GAAG,gBAAgB,CAAC;gBAChC,UAAU;oBACR,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5E,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,MAAM,QAAQ,GACZ,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBACnE,CAAC,CAAC,WAAW,CAAC,KAAK;gBACnB,CAAC,CAAC,eAAe,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,SAAS;gBACnB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;gBAC1B,OAAO,EAAE,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1E,KAAK,EAAE,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC5E,QAAQ,EAAE,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACrF,QAAQ,EACN,WAAW,CAAC,QAAQ,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ;oBAC9D,CAAC,CAAE,WAAW,CAAC,QAAoC;oBACnD,CAAC,CAAC,SAAS;gBACf,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,qEAAqE;YACrE,wDAAwD;YACxD,yEAAyE;YACzE,0EAA0E;YAC1E,cAAc,CAAC,IAAI,CACjB,GAAG,IAAI,CAAC,yBAAyB,CAC/B,KAAK,EACL,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,EACrC,YAAY,GAAG,CAAC,EAChB,MAAM,CACP,CACF,CAAC;QACJ,CAAC;QAED,uDAAuD;QACvD,wEAAwE;QACxE,wCAAwC;QACxC,qEAAqE;QACrE,iCAAiC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YACpC,2EAA2E;YAC3E,wEAAwE;YACxE,IAAI,OAAO,KAAK,eAAe;gBAAE,SAAS;YAE1C,mEAAmE;YACnE,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtD,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;oBAClC,MAAM;gBACR,CAAC;YACH,CAAC;YAED,6CAA6C;YAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAEzC,6DAA6D;YAC7D,IAAI,QAAQ,GAAuB,KAAK,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC3D,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;oBACtB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,uEAAuE;YACvE,0EAA0E;YAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;YAE/D,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI;gBACJ,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI;gBACJ,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,WAAW;gBACpB,QAAQ;gBACR,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;gBACvB,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,kEAAkE;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAC/C,OAAO,CAAC,EAAE,EACV,SAAS,EACT,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE,wCAAwC;YACpE,MAAM,CACP,CAAC;YACF,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QACrC,CAAC;QAED,yEAAyE;QACzE,uEAAuE;QACvE,kEAAkE;QAClE,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,YAAY,IAAI,EAAE,CAAC,sBAAsB,IAAI,KAAK,CAAC;YAEpE,0EAA0E;YAC1E,iEAAiE;YACjE,IACE,YAAY;gBACZ,EAAE,CAAC,sBAAsB;gBACzB,YAAY,KAAK,EAAE,CAAC,sBAAsB,EAC1C,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,wBAAwB,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,sBAAsB,qBAAqB,YAAY,gBAAgB;oBACpI,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,EAAE,CAAC,SAAS;oBAClB,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,iCAAiC;iBACxC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;YAC3E,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,YAAY;gBAClB,KAAK;gBACL,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,QAAQ;gBACR,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,yEAAyE;YACzE,0EAA0E;YAC1E,0DAA0D;YAC1D,IAAI,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,cAAc,CAAC,IAAI,CACjB,GAAG,IAAI,CAAC,yBAAyB,CAC/B,EAAE,CAAC,EAAE,EACL,EAAE,CAAC,cAAc,EACjB,EAAE,CAAC,kBAAkB,EACrB,MAAM,EACN,UAAU,CACX,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,KAAK;YACL,cAAc;YACd,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC/B,CAAC;IACJ,CAAC;IAED,kEAAkE;IAC1D,WAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC;IAC3C,CAAC;IAED,mEAAmE;IAC3D,YAAY;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACK,aAAa,CAAC,KAAa;QACjC,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,EAAE,GACN,OAAO,WAAW,CAAC,EAAE,KAAK,QAAQ,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACpE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,0DAA0D;YAC1D,OAAO;gBACL,KAAK,EAAE,EAAE;gBACT,cAAc,EAAE,EAAE;gBAClB,MAAM;gBACN,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GACR,WAAW,CAAC,QAAQ,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ;YAC9D,CAAC,CAAE,WAAW,CAAC,QAAoC;YACnD,CAAC,CAAC,EAAE,CAAC;QAET,6EAA6E;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,IAAI,uBAAuB,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC5G,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,0BAA0B;aACjC,CAAC,CAAC;QACL,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,6EAA6E;QAC7E,sEAAsE;QACtE,iCAAiC;QACjC,IAAI,IAAI,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,mEAAmE;QACnE,IAAI,KAAK,GACP,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACnE,CAAC,CAAC,WAAW,CAAC,KAAK;YACnB,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACd,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7D,4EAA4E;QAC5E,yEAAyE;QACzE,sEAAsE;QACtE,2EAA2E;QAC3E,0EAA0E;QAC1E,kEAAkE;QAClE,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,4BAA4B;QAC/E,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;;YACjD,OAAO,IAAI,CAAC,UAAU,CAAC;QAE5B,MAAM,IAAI,GAAS;YACjB,EAAE;YACF,IAAI,EAAE,QAAQ;YACd,KAAK;YACL,IAAI;YACJ,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,IAAI,CAAC,QAAQ;YACzB,SAAS,EAAE,gBAAgB,GAAG,CAAC;YAC/B,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;YACvB,OAAO,EAAE,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1E,KAAK,EAAE,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC5E,QAAQ,EAAE,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACrF,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,CAAC,IAAI,CAAC;YACb,cAAc,EAAE,EAAE;YAClB,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC/B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,YAAY,CAAC,KAAa;QAChC,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,IAAI,GACR,WAAW,CAAC,QAAQ,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ;YAC9D,CAAC,CAAE,WAAW,CAAC,QAAoC;YACnD,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAC1D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAClB,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,oDAAoD;YACpD,OAAO;gBACL,KAAK,EAAE,EAAE;gBACT,cAAc,EAAE,EAAE;gBAClB,MAAM;gBACN,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;aAC/B,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACd,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7D,MAAM,IAAI,GAAS;YACjB,EAAE,EAAE,SAAS,IAAI,EAAE;YACnB,IAAI,EAAE,OAAO;YACb,KAAK;YACL,IAAI;YACJ,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,IAAI,CAAC,QAAQ;YACzB,SAAS,EAAE,gBAAgB,GAAG,CAAC;YAC/B,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;YACvB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,CAAC,IAAI,CAAC;YACb,cAAc,EAAE,EAAE;YAClB,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC/B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,gBAAgB,CACtB,KAAe,EACf,MAAyB;QAEzB,MAAM,WAAW,GAA4B,EAAE,CAAC;QAEhD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YAC5D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;gBACtC,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,sDAAsD;gBAC/D,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,+BAA+B;aACtC,CAAC,CAAC;YACH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;QAC9C,CAAC;QAED,qEAAqE;QACrE,YAAY;QACZ,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,QAAQ,IAAI,CAAC;gBAAE,SAAS;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,2BAA2B;YAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;oBACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC;oBAAE,KAAK,GAAG,QAAQ,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;OAWG;IACK,yBAAyB,CAC/B,MAAc,EACd,SAAmB,EACnB,aAAqB,EACrB,MAAyB,EACzB,SAA+B,OAAO;QAEtC,OAAO;YACL,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/G,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;SACpG,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CACzB,MAAc,EACd,SAAmB,EACnB,OAAe,EACf,IAAkB,EAClB,aAAqB,EACrB,MAAyB,EACzB,SAA+B,OAAO;QAEtC,MAAM,GAAG,GAAwB,EAAE,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,SAAS;YAC5D,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,SAAS;YAE7D,4DAA4D;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,OAAO,KAAK,EAAE;oBAAE,SAAS;gBAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACP,mEAAmE;oBACnE,iEAAiE;oBACjE,2DAA2D;oBAC3D,8DAA8D;oBAC9D,qEAAqE;oBACrE,sEAAsE;oBACtE,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC;4BACV,OAAO,EAAE,GAAG,MAAM,KAAK,OAAO,YAAY,OAAO,iDAAiD;4BAClG,QAAQ,EAAE,IAAI,CAAC,QAAQ;4BACvB,IAAI,EAAE,aAAa,GAAG,CAAC;4BACvB,QAAQ,EAAE,SAAS;4BACnB,IAAI,EAAE,oBAAoB;yBAC3B,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS;oBAAE,SAAS;gBACrC,GAAG,CAAC,IAAI,CAAC;oBACP,MAAM;oBACN,cAAc,EAAE,OAAO;oBACvB,mBAAmB,EAAE,SAAS;oBAC9B,cAAc,EAAE,aAAa,CAAC,SAAS,CAAC;oBACxC,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;YACD,qEAAqE;YACrE,MAAM;QACR,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AApxBD,sDAoxBC;AAED;;;;GAIG;AACH,SAAS,0BAA0B,CAAC,IAAY;IAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,OAAO,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,KAAe,CAAC;IACpB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,KAAK,GAAG,KAAK;aACV,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,2BAA2B;aACnD,KAAK,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { Spec, SpecLink, SpecLinkState } from '../types';
|
|
14
14
|
import type { SpecQueries } from '../db/spec-queries';
|
|
15
|
+
import { type EvidenceKind } from '../spec-quality/evidence-kind';
|
|
15
16
|
/**
|
|
16
17
|
* Coverage verdict for one spec node.
|
|
17
18
|
*
|
|
@@ -35,6 +36,33 @@ export interface CriterionCoverage {
|
|
|
35
36
|
implementsLinks: LinkRollup;
|
|
36
37
|
testsLinks: LinkRollup;
|
|
37
38
|
verdict: CoverageVerdict;
|
|
39
|
+
/**
|
|
40
|
+
* The evidence kind this criterion requires (REQ-PIPETRUST-001) — declared
|
|
41
|
+
* inline or derived. Advisory alongside the verdict; never changes it.
|
|
42
|
+
*/
|
|
43
|
+
requiredKind: EvidenceKind;
|
|
44
|
+
/** Kinds actually provided by the criterion's usable `tests` links (REQ-PIPETRUST-003). */
|
|
45
|
+
presentKinds: EvidenceKind[];
|
|
46
|
+
/** True when `presentKinds` includes `requiredKind`. */
|
|
47
|
+
kindSatisfied: boolean;
|
|
48
|
+
}
|
|
49
|
+
/** Per-criterion evidence-kind result (REQ-PIPETRUST-003). */
|
|
50
|
+
export interface EvidenceKindResult {
|
|
51
|
+
requiredKind: EvidenceKind;
|
|
52
|
+
presentKinds: EvidenceKind[];
|
|
53
|
+
kindSatisfied: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface EvidenceKindOptions {
|
|
56
|
+
/** Implements links whose targets decide `linksUi` / `linksRoute`. */
|
|
57
|
+
implementsLinks?: SpecLink[];
|
|
58
|
+
/** Root that relative link target paths resolve against (default: cwd). */
|
|
59
|
+
projectRoot?: string;
|
|
60
|
+
/** Test-file classifier; defaults to reading the file. Injectable for caching. */
|
|
61
|
+
classify?: (absPath: string, relPath: string) => EvidenceKind;
|
|
62
|
+
}
|
|
63
|
+
export interface SpecCoverageOptions {
|
|
64
|
+
/** Project root for reading linked test files when classifying evidence kind. */
|
|
65
|
+
projectRoot?: string;
|
|
38
66
|
}
|
|
39
67
|
/** Coverage for one requirement plus each of its criteria. */
|
|
40
68
|
export interface RequirementCoverage extends CriterionCoverage {
|
|
@@ -57,6 +85,11 @@ export interface SpecCoverageReport {
|
|
|
57
85
|
criteriaVerified: number;
|
|
58
86
|
criteriaBroken: number;
|
|
59
87
|
};
|
|
88
|
+
/** Evidence-kind rollup (REQ-PIPETRUST-003) — kept out of `totals` so its shape is unchanged. */
|
|
89
|
+
evidence: {
|
|
90
|
+
/** Criteria (requirements with none count as one) lacking their required kind. */
|
|
91
|
+
criteriaMissingKind: number;
|
|
92
|
+
};
|
|
60
93
|
}
|
|
61
94
|
/**
|
|
62
95
|
* Verdict from `tests` links alone (REQ-VSTATE-006.A1 / .A3). Links flagged as
|
|
@@ -65,6 +98,17 @@ export interface SpecCoverageReport {
|
|
|
65
98
|
* one stays `untested`.
|
|
66
99
|
*/
|
|
67
100
|
export declare function verdictFor(testsLinks: SpecLink[]): CoverageVerdict;
|
|
101
|
+
/**
|
|
102
|
+
* Required vs present evidence kind for one criterion (REQ-PIPETRUST-003.A1).
|
|
103
|
+
*
|
|
104
|
+
* Required: {@link requiredEvidenceKind} over the criterion text, with
|
|
105
|
+
* `linksUi` / `linksRoute` read from the given implements links (a UI file
|
|
106
|
+
* extension, or a target node of kind `route`). Present: the kind of each
|
|
107
|
+
* usable `tests` link's target file — links flagged as non-test evidence are
|
|
108
|
+
* ignored, exactly as the verdict ignores them. Link state does not matter
|
|
109
|
+
* here: the verdict already says whether the tests pass.
|
|
110
|
+
*/
|
|
111
|
+
export declare function evidenceKindCoverage(criterionText: string, testsLinks: SpecLink[], opts?: EvidenceKindOptions): EvidenceKindResult;
|
|
68
112
|
/**
|
|
69
113
|
* Compute the coverage rollup for one spec, or for every requirement in the
|
|
70
114
|
* project when `specId` is omitted.
|
|
@@ -75,7 +119,19 @@ export declare function verdictFor(testsLinks: SpecLink[]): CoverageVerdict;
|
|
|
75
119
|
* no children and no links — returns an empty-but-valid report, never an error
|
|
76
120
|
* (REQ-VSTATE-006.A4).
|
|
77
121
|
*/
|
|
78
|
-
export declare function computeSpecCoverage(sq: SpecQueries, specId?: string): SpecCoverageReport;
|
|
122
|
+
export declare function computeSpecCoverage(sq: SpecQueries, specId?: string, options?: SpecCoverageOptions): SpecCoverageReport;
|
|
123
|
+
/**
|
|
124
|
+
* Every in-scope criterion lacking its required evidence kind — the list
|
|
125
|
+
* `specship coverage` flags, as `{ specId, requiredKind, presentKinds }`. A
|
|
126
|
+
* requirement with no criteria stands in as its own single criterion.
|
|
127
|
+
*/
|
|
128
|
+
export declare function criteriaMissingKind(report: SpecCoverageReport): CriterionCoverage[];
|
|
129
|
+
/**
|
|
130
|
+
* Exit code for `specship coverage --require-kinds` (REQ-PIPETRUST-003.A2):
|
|
131
|
+
* non-zero when any in-scope criterion lacks its required kind, else zero.
|
|
132
|
+
* Without the flag the command never fails on kinds.
|
|
133
|
+
*/
|
|
134
|
+
export declare function requireKindsExitCode(report: SpecCoverageReport, requireKinds: boolean): number;
|
|
79
135
|
/**
|
|
80
136
|
* The single coverage line the implement workflow's human gate rests on
|
|
81
137
|
* (REQ-VSTATE-005.A2). Rendered here, from the same report `getSpecCoverage`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-coverage.d.ts","sourceRoot":"","sources":["../../src/graph/spec-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE5E,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;CAChD;AAED,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,eAAe,EAAE,UAAU,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-coverage.d.ts","sourceRoot":"","sources":["../../src/graph/spec-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,51 @@
|
|
|
11
11
|
* (REQ-VSTATE-006.A3). This is the conflation the dashboard's
|
|
12
12
|
* implemented-counted-as-met display was built on.
|
|
13
13
|
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
14
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
48
|
exports.verdictFor = verdictFor;
|
|
49
|
+
exports.evidenceKindCoverage = evidenceKindCoverage;
|
|
16
50
|
exports.computeSpecCoverage = computeSpecCoverage;
|
|
51
|
+
exports.criteriaMissingKind = criteriaMissingKind;
|
|
52
|
+
exports.requireKindsExitCode = requireKindsExitCode;
|
|
17
53
|
exports.formatCoverageLine = formatCoverageLine;
|
|
18
54
|
const test_title_links_1 = require("../resolution/test-title-links");
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const evidence_kind_1 = require("../spec-quality/evidence-kind");
|
|
57
|
+
/** Matches behaviour-surface's `UI_FILE`: a direct link to one of these is UI code. */
|
|
58
|
+
const UI_FILE = /\.(tsx|jsx|vue|svelte|astro)$/i;
|
|
19
59
|
function rollup(links) {
|
|
20
60
|
const states = {};
|
|
21
61
|
for (const l of links)
|
|
@@ -50,16 +90,62 @@ function mergeVerdicts(verdicts) {
|
|
|
50
90
|
return 'verified';
|
|
51
91
|
return 'tested';
|
|
52
92
|
}
|
|
53
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Required vs present evidence kind for one criterion (REQ-PIPETRUST-003.A1).
|
|
95
|
+
*
|
|
96
|
+
* Required: {@link requiredEvidenceKind} over the criterion text, with
|
|
97
|
+
* `linksUi` / `linksRoute` read from the given implements links (a UI file
|
|
98
|
+
* extension, or a target node of kind `route`). Present: the kind of each
|
|
99
|
+
* usable `tests` link's target file — links flagged as non-test evidence are
|
|
100
|
+
* ignored, exactly as the verdict ignores them. Link state does not matter
|
|
101
|
+
* here: the verdict already says whether the tests pass.
|
|
102
|
+
*/
|
|
103
|
+
function evidenceKindCoverage(criterionText, testsLinks, opts = {}) {
|
|
104
|
+
const impl = opts.implementsLinks ?? [];
|
|
105
|
+
const requiredKind = (0, evidence_kind_1.requiredEvidenceKind)(criterionText, {
|
|
106
|
+
linksUi: impl.some((l) => UI_FILE.test(l.targetFilePath ?? '')),
|
|
107
|
+
linksRoute: impl.some((l) => l.targetNodeKind === 'route'),
|
|
108
|
+
});
|
|
109
|
+
const classify = opts.classify ?? ((abs) => (0, evidence_kind_1.classifyTestEvidence)(abs));
|
|
110
|
+
const present = new Set();
|
|
111
|
+
for (const l of testsLinks) {
|
|
112
|
+
if (l.kind !== 'tests' || (0, test_title_links_1.isNonTestEvidence)(l) || !l.targetFilePath)
|
|
113
|
+
continue;
|
|
114
|
+
const rel = l.targetFilePath;
|
|
115
|
+
const abs = path.isAbsolute(rel) || !opts.projectRoot ? rel : path.join(opts.projectRoot, rel);
|
|
116
|
+
present.add(classify(abs, rel));
|
|
117
|
+
}
|
|
118
|
+
const presentKinds = evidence_kind_1.EVIDENCE_KINDS.filter((k) => present.has(k));
|
|
119
|
+
return { requiredKind, presentKinds, kindSatisfied: present.has(requiredKind) };
|
|
120
|
+
}
|
|
121
|
+
/** Classify each test file once per report, keyed by absolute path. */
|
|
122
|
+
function cachedClassifier() {
|
|
123
|
+
const cache = new Map();
|
|
124
|
+
return (abs) => {
|
|
125
|
+
let k = cache.get(abs);
|
|
126
|
+
if (!k) {
|
|
127
|
+
k = (0, evidence_kind_1.classifyTestEvidence)(abs);
|
|
128
|
+
cache.set(abs, k);
|
|
129
|
+
}
|
|
130
|
+
return k;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function coverageOf(sq, spec, kindOpts) {
|
|
54
134
|
const links = sq.getLinksBySpec(spec.id);
|
|
55
135
|
const testsLinks = links.filter((l) => l.kind === 'tests');
|
|
136
|
+
const implementsLinks = links.filter((l) => l.kind === 'implements');
|
|
137
|
+
const kinds = evidenceKindCoverage(spec.body ?? spec.title, testsLinks, {
|
|
138
|
+
...kindOpts,
|
|
139
|
+
implementsLinks: [...(kindOpts.extraImplements ?? []), ...implementsLinks],
|
|
140
|
+
});
|
|
56
141
|
return {
|
|
57
142
|
specId: spec.id,
|
|
58
143
|
title: spec.title,
|
|
59
144
|
kind: spec.kind,
|
|
60
|
-
implementsLinks: rollup(
|
|
145
|
+
implementsLinks: rollup(implementsLinks),
|
|
61
146
|
testsLinks: rollup(testsLinks),
|
|
62
147
|
verdict: verdictFor(testsLinks),
|
|
148
|
+
...kinds,
|
|
63
149
|
};
|
|
64
150
|
}
|
|
65
151
|
/**
|
|
@@ -72,7 +158,11 @@ function coverageOf(sq, spec) {
|
|
|
72
158
|
* no children and no links — returns an empty-but-valid report, never an error
|
|
73
159
|
* (REQ-VSTATE-006.A4).
|
|
74
160
|
*/
|
|
75
|
-
function computeSpecCoverage(sq, specId) {
|
|
161
|
+
function computeSpecCoverage(sq, specId, options = {}) {
|
|
162
|
+
const kindOpts = {
|
|
163
|
+
projectRoot: options.projectRoot,
|
|
164
|
+
classify: cachedClassifier(),
|
|
165
|
+
};
|
|
76
166
|
let roots;
|
|
77
167
|
if (specId) {
|
|
78
168
|
const spec = sq.getSpecById(specId);
|
|
@@ -81,6 +171,7 @@ function computeSpecCoverage(sq, specId) {
|
|
|
81
171
|
specId,
|
|
82
172
|
requirements: [],
|
|
83
173
|
totals: { requirements: 0, criteria: 0, criteriaWithTests: 0, criteriaVerified: 0, criteriaBroken: 0 },
|
|
174
|
+
evidence: { criteriaMissingKind: 0 },
|
|
84
175
|
};
|
|
85
176
|
}
|
|
86
177
|
roots =
|
|
@@ -92,11 +183,14 @@ function computeSpecCoverage(sq, specId) {
|
|
|
92
183
|
roots = sq.getAllSpecs().filter((s) => s.kind === 'requirement');
|
|
93
184
|
}
|
|
94
185
|
const requirements = roots.map((req) => {
|
|
95
|
-
const own = coverageOf(sq, req);
|
|
186
|
+
const own = coverageOf(sq, req, kindOpts);
|
|
187
|
+
// A criterion inherits the requirement's direct implements links when
|
|
188
|
+
// deciding UI / route (REQ-PIPETRUST-001.A2 — "a requirement linked to…").
|
|
189
|
+
const reqImplements = sq.getLinksBySpec(req.id).filter((l) => l.kind === 'implements');
|
|
96
190
|
const criteria = sq
|
|
97
191
|
.getSpecsByParent(req.id)
|
|
98
192
|
.filter((c) => c.kind === 'acceptance')
|
|
99
|
-
.map((c) => coverageOf(sq, c));
|
|
193
|
+
.map((c) => coverageOf(sq, c, { ...kindOpts, extraImplements: reqImplements }));
|
|
100
194
|
const criteriaTotals = {
|
|
101
195
|
untested: 0,
|
|
102
196
|
tested: 0,
|
|
@@ -120,12 +214,16 @@ function computeSpecCoverage(sq, specId) {
|
|
|
120
214
|
return {
|
|
121
215
|
...own,
|
|
122
216
|
verdict: mergeVerdicts(criteria.length > 0 ? criteria.map((c) => c.verdict) : [own.verdict]),
|
|
217
|
+
// A requirement's kind is satisfied only when every criterion's is; with
|
|
218
|
+
// no criteria it is its own single criterion.
|
|
219
|
+
kindSatisfied: criteria.length > 0 ? criteria.every((c) => c.kindSatisfied) : own.kindSatisfied,
|
|
123
220
|
criteria,
|
|
124
221
|
criteriaTotals,
|
|
125
222
|
criteriaWithTests,
|
|
126
223
|
criteriaCount,
|
|
127
224
|
};
|
|
128
225
|
});
|
|
226
|
+
const criteriaMissingKind = requirements.reduce((n, r) => n + (r.criteria.length > 0 ? r.criteria.filter((c) => !c.kindSatisfied).length : r.kindSatisfied ? 0 : 1), 0);
|
|
129
227
|
return {
|
|
130
228
|
specId: specId ?? null,
|
|
131
229
|
requirements,
|
|
@@ -136,8 +234,34 @@ function computeSpecCoverage(sq, specId) {
|
|
|
136
234
|
criteriaVerified: requirements.reduce((n, r) => n + r.criteriaTotals.verified, 0),
|
|
137
235
|
criteriaBroken: requirements.reduce((n, r) => n + r.criteriaTotals.broken, 0),
|
|
138
236
|
},
|
|
237
|
+
evidence: { criteriaMissingKind },
|
|
139
238
|
};
|
|
140
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Every in-scope criterion lacking its required evidence kind — the list
|
|
242
|
+
* `specship coverage` flags, as `{ specId, requiredKind, presentKinds }`. A
|
|
243
|
+
* requirement with no criteria stands in as its own single criterion.
|
|
244
|
+
*/
|
|
245
|
+
function criteriaMissingKind(report) {
|
|
246
|
+
const out = [];
|
|
247
|
+
for (const r of report.requirements) {
|
|
248
|
+
if (r.criteria.length > 0)
|
|
249
|
+
out.push(...r.criteria.filter((c) => !c.kindSatisfied));
|
|
250
|
+
else if (!r.kindSatisfied)
|
|
251
|
+
out.push(r);
|
|
252
|
+
}
|
|
253
|
+
return out;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Exit code for `specship coverage --require-kinds` (REQ-PIPETRUST-003.A2):
|
|
257
|
+
* non-zero when any in-scope criterion lacks its required kind, else zero.
|
|
258
|
+
* Without the flag the command never fails on kinds.
|
|
259
|
+
*/
|
|
260
|
+
function requireKindsExitCode(report, requireKinds) {
|
|
261
|
+
if (!requireKinds)
|
|
262
|
+
return 0;
|
|
263
|
+
return criteriaMissingKind(report).length > 0 ? 1 : 0;
|
|
264
|
+
}
|
|
141
265
|
/**
|
|
142
266
|
* The single coverage line the implement workflow's human gate rests on
|
|
143
267
|
* (REQ-VSTATE-005.A2). Rendered here, from the same report `getSpecCoverage`
|