@intentset/verification 0.6.0 → 0.7.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/README.md +50 -0
- package/dist/adapters/common.d.ts +6 -0
- package/dist/adapters/common.d.ts.map +1 -1
- package/dist/adapters/common.js +2 -0
- package/dist/adapters/common.js.map +1 -1
- package/dist/adapters/playwright.d.ts +3 -0
- package/dist/adapters/playwright.d.ts.map +1 -0
- package/dist/adapters/playwright.js +78 -0
- package/dist/adapters/playwright.js.map +1 -0
- package/dist/binding.d.ts +31 -0
- package/dist/binding.d.ts.map +1 -0
- package/dist/binding.js +46 -0
- package/dist/binding.js.map +1 -0
- package/dist/classify.d.ts +35 -7
- package/dist/classify.d.ts.map +1 -1
- package/dist/classify.js +104 -14
- package/dist/classify.js.map +1 -1
- package/dist/fixture.d.ts +18 -2
- package/dist/fixture.d.ts.map +1 -1
- package/dist/fixture.js +23 -3
- package/dist/fixture.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/records.d.ts +8 -1
- package/dist/records.d.ts.map +1 -1
- package/dist/records.js +24 -1
- package/dist/records.js.map +1 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +4 -0
- package/dist/report.js.map +1 -1
- package/dist/stale.d.ts +65 -0
- package/dist/stale.d.ts.map +1 -0
- package/dist/stale.js +95 -0
- package/dist/stale.js.map +1 -0
- package/dist/subject.d.ts +92 -0
- package/dist/subject.d.ts.map +1 -0
- package/dist/subject.js +247 -0
- package/dist/subject.js.map +1 -0
- package/package.json +9 -2
- package/src/adapters/common.ts +8 -0
- package/src/adapters/playwright.ts +94 -0
- package/src/binding.ts +68 -0
- package/src/classify.ts +165 -14
- package/src/fixture.ts +36 -3
- package/src/index.ts +4 -0
- package/src/records.ts +40 -2
- package/src/report.ts +4 -0
- package/src/stale.ts +160 -0
- package/src/subject.ts +277 -0
package/dist/fixture.d.ts
CHANGED
|
@@ -12,9 +12,19 @@
|
|
|
12
12
|
* 4. Check locators against the tree's paths (documents and sources) only
|
|
13
13
|
* when the case supplies `sources`; a case without them has no tree to
|
|
14
14
|
* check against, and its locators are reported unresolved instead.
|
|
15
|
-
* 5.
|
|
15
|
+
* 5. Decide the binding (`resolveBinding`): the case's `.intentset/config.yaml`
|
|
16
|
+
* `evidence.binding`, else subject where the graph has slice claims, else
|
|
17
|
+
* commit with EVID004. Under subject binding the driver resolves what the
|
|
18
|
+
* architecture package knows (claimed files, import closures) over the
|
|
19
|
+
* tree of documents and sources into a `SubjectSource`, and every
|
|
20
|
+
* verification's subject is computed from it (`subjectsFor`).
|
|
21
|
+
* 6. The case's `changedSince`, when it has one, answers the question git
|
|
22
|
+
* would: the files changed between a record's commit and the snapshot.
|
|
23
|
+
* A commit it does not list is one that is not an ancestor.
|
|
24
|
+
* 7. The case's diagnostics are validation's plus the reader's plus the check's.
|
|
16
25
|
*/
|
|
17
|
-
import { type Diagnostic, type Graph, type Level } from "@intentset/core";
|
|
26
|
+
import { type Diagnostic, type EvidenceBinding, type Graph, type Level } from "@intentset/core";
|
|
27
|
+
import { type SubjectSource } from "./binding.ts";
|
|
18
28
|
import { type EvidenceCheck } from "./check.ts";
|
|
19
29
|
import type { EvidenceSnapshot } from "./classify.ts";
|
|
20
30
|
export declare const FIXTURE_EVIDENCE_PATH = "evidence.json";
|
|
@@ -33,6 +43,12 @@ export interface FixtureEvidenceInput {
|
|
|
33
43
|
documents: Iterable<string>;
|
|
34
44
|
/** Paths of the case's `sources`. */
|
|
35
45
|
sources: Iterable<string>;
|
|
46
|
+
/** `evidence.binding` of the case's configuration; null or absent when it states none. */
|
|
47
|
+
configuredBinding?: EvidenceBinding | null;
|
|
48
|
+
/** What the architecture package resolved over the tree; needed only when the binding in force is subject. */
|
|
49
|
+
subjectSource?: SubjectSource;
|
|
50
|
+
/** The case's `changedSince`: for a commit, the files changed between it and the snapshot. */
|
|
51
|
+
changedSince?: Readonly<Record<string, readonly string[]>>;
|
|
36
52
|
}
|
|
37
53
|
export interface FixtureEvidenceRun extends EvidenceCheck {
|
|
38
54
|
snapshot: EvidenceSnapshot;
|
package/dist/fixture.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../src/fixture.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../src/fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,KAAK,EAEV,KAAK,KAAK,EAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAkC,KAAK,aAAa,EAAe,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,yDAAyD;IACzD,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,mEAAmE;IACnE,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,8CAA8C;IAC9C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B,qCAAqC;IACrC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,8GAA8G;IAC9G,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,8FAA8F;IAC9F,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,sGAAsG;IACtG,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,kBAAkB,CA6BpF"}
|
package/dist/fixture.js
CHANGED
|
@@ -12,19 +12,39 @@
|
|
|
12
12
|
* 4. Check locators against the tree's paths (documents and sources) only
|
|
13
13
|
* when the case supplies `sources`; a case without them has no tree to
|
|
14
14
|
* check against, and its locators are reported unresolved instead.
|
|
15
|
-
* 5.
|
|
15
|
+
* 5. Decide the binding (`resolveBinding`): the case's `.intentset/config.yaml`
|
|
16
|
+
* `evidence.binding`, else subject where the graph has slice claims, else
|
|
17
|
+
* commit with EVID004. Under subject binding the driver resolves what the
|
|
18
|
+
* architecture package knows (claimed files, import closures) over the
|
|
19
|
+
* tree of documents and sources into a `SubjectSource`, and every
|
|
20
|
+
* verification's subject is computed from it (`subjectsFor`).
|
|
21
|
+
* 6. The case's `changedSince`, when it has one, answers the question git
|
|
22
|
+
* would: the files changed between a record's commit and the snapshot.
|
|
23
|
+
* A commit it does not list is one that is not an ancestor.
|
|
24
|
+
* 7. The case's diagnostics are validation's plus the reader's plus the check's.
|
|
16
25
|
*/
|
|
17
|
-
import { graphHash, sortDiagnostics } from "@intentset/core";
|
|
26
|
+
import { graphHash, sortDiagnostics, } from "@intentset/core";
|
|
27
|
+
import { hasSliceClaims, resolveBinding, subjectsFor } from "./binding.js";
|
|
18
28
|
import { checkEvidence } from "./check.js";
|
|
19
29
|
import { bindPlaceholders, FIXTURE_COMMIT, requestedScope } from "./placeholders.js";
|
|
20
30
|
import { readRunRecords } from "./records.js";
|
|
21
31
|
export const FIXTURE_EVIDENCE_PATH = "evidence.json";
|
|
22
32
|
export function checkFixtureEvidence(input) {
|
|
23
|
-
const
|
|
33
|
+
const decision = resolveBinding(input.configuredBinding ?? null, hasSliceClaims(input.graph));
|
|
34
|
+
const base = {
|
|
24
35
|
commit: FIXTURE_COMMIT,
|
|
25
36
|
graphHash: graphHash(input.graph),
|
|
26
37
|
scope: requestedScope(input.request),
|
|
27
38
|
};
|
|
39
|
+
const snapshot = { ...base, binding: decision.binding, bindingReason: decision.reason };
|
|
40
|
+
if (decision.binding === "subject" && input.subjectSource !== undefined) {
|
|
41
|
+
snapshot.subjects = subjectsFor(input.graph, input.subjectSource);
|
|
42
|
+
snapshot.covers = input.subjectSource.covers;
|
|
43
|
+
if (input.changedSince !== undefined) {
|
|
44
|
+
const changed = input.changedSince;
|
|
45
|
+
snapshot.changedSince = (commit) => changed[commit] ?? null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
28
48
|
const read = readRunRecords(bindPlaceholders(input.evidence, snapshot), FIXTURE_EVIDENCE_PATH);
|
|
29
49
|
const sources = [...input.sources];
|
|
30
50
|
const files = sources.length > 0 ? new Set([...input.documents, ...sources]) : undefined;
|
package/dist/fixture.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../src/fixture.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../src/fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAIL,SAAS,EAET,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAsB,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAsB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC;AA4BrD,MAAM,UAAU,oBAAoB,CAAC,KAA2B;IAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAqB;QAC7B,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;KACrC,CAAC;IACF,MAAM,QAAQ,GAAqB,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC1G,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAClE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;QAC7C,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;YACnC,QAAQ,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;QACjE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK;QACL,YAAY,EAAE,qBAAqB;KACpC,CAAC,CAAC;IACH,OAAO;QACL,GAAG,OAAO;QACV,QAAQ;QACR,WAAW,EAAE,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;KAC5E,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export * from "./adapters/common.ts";
|
|
8
8
|
export * from "./adapters/node-test.ts";
|
|
9
|
+
export * from "./adapters/playwright.ts";
|
|
9
10
|
export * from "./adapters/vitest.ts";
|
|
11
|
+
export * from "./binding.ts";
|
|
10
12
|
export * from "./check.ts";
|
|
11
13
|
export * from "./classify.ts";
|
|
12
14
|
export * from "./coverage.ts";
|
|
@@ -14,4 +16,6 @@ export * from "./fixture.ts";
|
|
|
14
16
|
export * from "./placeholders.ts";
|
|
15
17
|
export * from "./records.ts";
|
|
16
18
|
export * from "./report.ts";
|
|
19
|
+
export * from "./stale.ts";
|
|
20
|
+
export * from "./subject.ts";
|
|
17
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export * from "./adapters/common.js";
|
|
8
8
|
export * from "./adapters/node-test.js";
|
|
9
|
+
export * from "./adapters/playwright.js";
|
|
9
10
|
export * from "./adapters/vitest.js";
|
|
11
|
+
export * from "./binding.js";
|
|
10
12
|
export * from "./check.js";
|
|
11
13
|
export * from "./classify.js";
|
|
12
14
|
export * from "./coverage.js";
|
|
@@ -14,4 +16,6 @@ export * from "./fixture.js";
|
|
|
14
16
|
export * from "./placeholders.js";
|
|
15
17
|
export * from "./records.js";
|
|
16
18
|
export * from "./report.js";
|
|
19
|
+
export * from "./stale.js";
|
|
20
|
+
export * from "./subject.js";
|
|
17
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
package/dist/records.d.ts
CHANGED
|
@@ -12,12 +12,15 @@
|
|
|
12
12
|
import { type Diagnostic } from "@intentset/core";
|
|
13
13
|
export declare const RUN_RESULTS: readonly ["pass", "fail", "skip", "error"];
|
|
14
14
|
export type RunResult = (typeof RUN_RESULTS)[number];
|
|
15
|
+
/** What a record is bound to (Core §8): the subject the run checked, or the commit and graph hash it ran at. */
|
|
16
|
+
export declare const RUN_BINDINGS: readonly ["subject", "commit"];
|
|
17
|
+
export type RunBinding = (typeof RUN_BINDINGS)[number];
|
|
15
18
|
/** The literal a fixture writes for "the snapshot's commit" or "the snapshot's graph hash". */
|
|
16
19
|
export declare const CURRENT = "@current";
|
|
17
20
|
export interface RunScope {
|
|
18
21
|
/** The product's artifact ID. */
|
|
19
22
|
product: string;
|
|
20
|
-
/** The exact release label; v0.
|
|
23
|
+
/** The exact release label; v0.2 matches release labels exactly (Core §7). */
|
|
21
24
|
release: string;
|
|
22
25
|
}
|
|
23
26
|
export interface RunTool {
|
|
@@ -42,6 +45,10 @@ export interface RunRecord {
|
|
|
42
45
|
finishedAt: string;
|
|
43
46
|
result: RunResult;
|
|
44
47
|
uri: string;
|
|
48
|
+
/** Absent means commit binding, as every record written before the field existed. */
|
|
49
|
+
binding?: RunBinding;
|
|
50
|
+
/** SHA-256 of the subject the run checked (subject.ts); present on every subject-binding record. */
|
|
51
|
+
subjectHash?: string;
|
|
45
52
|
rationale?: string;
|
|
46
53
|
/** Namespaced extensions (`org.example/key`), preserved and never interpreted. */
|
|
47
54
|
extensions?: Record<string, unknown>;
|
package/dist/records.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../src/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAiB,KAAK,UAAU,EAA+B,MAAM,iBAAiB,CAAC;AAG9F,eAAO,MAAM,WAAW,YAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AACtE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,+FAA+F;AAC/F,eAAO,MAAM,OAAO,aAAa,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6EAA6E;AAC7E,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,wGAAwG;IACxG,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,QAAQ,CAAC;IAChB,uGAAuG;IACvG,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,6GAA6G;IAC7G,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAwBD,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAQ9D;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAMjE;AAED,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,8CAA8C;IAC9C,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAwC1E"}
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../src/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAiB,KAAK,UAAU,EAA+B,MAAM,iBAAiB,CAAC;AAG9F,eAAO,MAAM,WAAW,YAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AACtE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,gHAAgH;AAChH,eAAO,MAAM,YAAY,YAAI,SAAS,EAAE,QAAQ,CAAU,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,+FAA+F;AAC/F,eAAO,MAAM,OAAO,aAAa,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6EAA6E;AAC7E,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,wGAAwG;IACxG,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,QAAQ,CAAC;IAChB,uGAAuG;IACvG,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,6GAA6G;IAC7G,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAwBD,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAQ9D;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAMjE;AAED,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,8CAA8C;IAC9C,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAwC1E"}
|
package/dist/records.js
CHANGED
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
import { canonicalJson, ID_PATTERN, sortDiagnostics } from "@intentset/core";
|
|
13
13
|
import { compareStrings, evidenceDiagnostic, pointerToken } from "./diagnostic.js";
|
|
14
14
|
export const RUN_RESULTS = ["pass", "fail", "skip", "error"];
|
|
15
|
+
/** What a record is bound to (Core §8): the subject the run checked, or the commit and graph hash it ran at. */
|
|
16
|
+
export const RUN_BINDINGS = ["subject", "commit"];
|
|
15
17
|
/** The literal a fixture writes for "the snapshot's commit" or "the snapshot's graph hash". */
|
|
16
18
|
export const CURRENT = "@current";
|
|
17
19
|
const REQUIRED = [
|
|
@@ -28,7 +30,7 @@ const REQUIRED = [
|
|
|
28
30
|
"result",
|
|
29
31
|
"uri",
|
|
30
32
|
];
|
|
31
|
-
const KNOWN = new Set([...REQUIRED, "rationale", "extensions"]);
|
|
33
|
+
const KNOWN = new Set([...REQUIRED, "binding", "subjectHash", "rationale", "extensions"]);
|
|
32
34
|
const TIMESTAMP = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,9}))?Z$/;
|
|
33
35
|
const GRAPH_HASH = /^[0-9a-f]{64}$/;
|
|
34
36
|
const NO_SPACE = /^\S+$/;
|
|
@@ -169,6 +171,23 @@ function readRecord(entry, index, problems) {
|
|
|
169
171
|
else
|
|
170
172
|
problem("result", `\`result\` of run record ${index} must be pass, fail, skip or error, but it is ${describe(entry.result)}.`, "Record one of the four results; anything else is not evidence (Core §8).");
|
|
171
173
|
}
|
|
174
|
+
let binding;
|
|
175
|
+
if (Object.hasOwn(entry, "binding")) {
|
|
176
|
+
if (RUN_BINDINGS.includes(entry.binding))
|
|
177
|
+
binding = entry.binding;
|
|
178
|
+
else
|
|
179
|
+
problem("binding", `\`binding\` of run record ${index} must be subject or commit, but it is ${describe(entry.binding)}.`, "Write `binding: subject` for a record bound to its subject, or leave it out for a commit-binding record (Core §8).");
|
|
180
|
+
}
|
|
181
|
+
let subjectHash;
|
|
182
|
+
if (Object.hasOwn(entry, "subjectHash")) {
|
|
183
|
+
if (typeof entry.subjectHash === "string" && GRAPH_HASH.test(entry.subjectHash))
|
|
184
|
+
subjectHash = entry.subjectHash;
|
|
185
|
+
else
|
|
186
|
+
problem("subjectHash", `\`subjectHash\` of run record ${index} must be 64 lowercase hex characters, but it is ${describe(entry.subjectHash)}.`, "Record the subject hash `intentset evidence import` computed for the verification (Core §8).");
|
|
187
|
+
}
|
|
188
|
+
if (binding === "subject" && !Object.hasOwn(entry, "subjectHash")) {
|
|
189
|
+
problem("subjectHash", `Run record ${index} has binding subject but no \`subjectHash\`, so nothing says what it was bound to.`, "Add the subject hash, or leave `binding` out to make it a commit-binding record (Core §8).");
|
|
190
|
+
}
|
|
172
191
|
let rationale;
|
|
173
192
|
if (Object.hasOwn(entry, "rationale")) {
|
|
174
193
|
if (typeof entry.rationale === "string" && /\S/.test(entry.rationale))
|
|
@@ -222,6 +241,10 @@ function readRecord(entry, index, problems) {
|
|
|
222
241
|
result: result,
|
|
223
242
|
uri: uri,
|
|
224
243
|
};
|
|
244
|
+
if (binding !== undefined)
|
|
245
|
+
record.binding = binding;
|
|
246
|
+
if (subjectHash !== undefined)
|
|
247
|
+
record.subjectHash = subjectHash;
|
|
225
248
|
if (rationale !== undefined)
|
|
226
249
|
record.rationale = rationale;
|
|
227
250
|
if (extensions !== undefined)
|
package/dist/records.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.js","sourceRoot":"","sources":["../src/records.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../src/records.ts"],"names":[],"mappings":"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"}
|
package/dist/report.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAgC3F"}
|
package/dist/report.js
CHANGED
|
@@ -6,10 +6,14 @@ export function evidenceReport(check, records) {
|
|
|
6
6
|
graphHash: classification.snapshot.graphHash,
|
|
7
7
|
scope: classification.snapshot.scope,
|
|
8
8
|
records,
|
|
9
|
+
binding: classification.snapshot.binding,
|
|
10
|
+
bindingReason: classification.snapshot.bindingReason,
|
|
9
11
|
verifications: Object.values(classification.verifications).map((v) => ({
|
|
10
12
|
id: v.verificationId,
|
|
11
13
|
method: v.method,
|
|
12
14
|
status: v.status,
|
|
15
|
+
binding: v.binding,
|
|
16
|
+
subject: v.subject,
|
|
13
17
|
note: v.note ?? null,
|
|
14
18
|
latest: v.latest,
|
|
15
19
|
atSnapshot: { ...v.atSnapshot },
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAUA,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,OAAe;IAClE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3C,OAAO;QACL,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM;QACtC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS;QAC5C,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK;QACpC,OAAO;QACP,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,EAAE,EAAE,CAAC,CAAC,cAAc;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE;YAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;QACH,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAUA,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,OAAe;IAClE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3C,OAAO;QACL,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM;QACtC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,SAAS;QAC5C,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK;QACpC,OAAO;QACP,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO;QACxC,aAAa,EAAE,cAAc,CAAC,QAAQ,CAAC,aAAa;QACpD,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,EAAE,EAAE,CAAC,CAAC,cAAc;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE;YAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;QACH,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
package/dist/stale.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What needs a run (ADR 0013, "Slow suites"): the automated verifications
|
|
3
|
+
* whose evidence at the snapshot is not a current pass, grouped for a person
|
|
4
|
+
* and written as the arguments a test runner takes to run just those tests.
|
|
5
|
+
* Selection reads a classification and changes nothing; the runner formats are
|
|
6
|
+
* strings and know nothing of the repository.
|
|
7
|
+
*
|
|
8
|
+
* A selector is matched by Intentset as a whole token (`selectorMatches`); a
|
|
9
|
+
* runner's own `--grep` or `-t` is a regular expression that matches a
|
|
10
|
+
* substring of a title. The arguments here therefore select every test the
|
|
11
|
+
* token rule would, and possibly a few more (a selector that is a prefix of
|
|
12
|
+
* another's), never fewer.
|
|
13
|
+
*/
|
|
14
|
+
import type { Graph } from "@intentset/core";
|
|
15
|
+
import { type Classification, type EvidenceStatus } from "./classify.ts";
|
|
16
|
+
/** The statuses that mean a run is needed: everything but a current pass. */
|
|
17
|
+
export declare const NEEDS_RUN: ("current-fail" | "error" | "missing" | "skip" | "stale" | "unresolved")[];
|
|
18
|
+
export type NeedsRun = Exclude<EvidenceStatus, "current-pass">;
|
|
19
|
+
export interface StaleEntry {
|
|
20
|
+
verification: string;
|
|
21
|
+
selector: string;
|
|
22
|
+
locator: string;
|
|
23
|
+
status: NeedsRun;
|
|
24
|
+
/** The note that names what moved, for the statuses where it says something a reader needs. */
|
|
25
|
+
note?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ManualEntry {
|
|
28
|
+
verification: string;
|
|
29
|
+
locator: string;
|
|
30
|
+
status: NeedsRun;
|
|
31
|
+
note?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface StaleCounts {
|
|
34
|
+
/** Automated verifications that are not retired. */
|
|
35
|
+
automated: number;
|
|
36
|
+
/** Of those, the ones with a current pass. */
|
|
37
|
+
current: number;
|
|
38
|
+
/** Of those, the ones that need a run: the sum of `byStatus`. */
|
|
39
|
+
needRun: number;
|
|
40
|
+
byStatus: Record<NeedsRun, number>;
|
|
41
|
+
/** Manual verifications without a current review, which no runner re-runs. */
|
|
42
|
+
manual: number;
|
|
43
|
+
}
|
|
44
|
+
export interface StaleReport {
|
|
45
|
+
needRun: StaleEntry[];
|
|
46
|
+
manual: ManualEntry[];
|
|
47
|
+
counts: StaleCounts;
|
|
48
|
+
}
|
|
49
|
+
/** Every verification that is not retired, split by method, with those not currently passing listed and counted. */
|
|
50
|
+
export declare function staleReport(graph: Graph, classification: Classification): StaleReport;
|
|
51
|
+
/** "3 of 12 automated verifications need a run: stale 2, missing 1." */
|
|
52
|
+
export declare function staleSummary(counts: StaleCounts): string;
|
|
53
|
+
export declare const RUNNER_FORMATS: readonly ["playwright", "vitest", "node-test"];
|
|
54
|
+
export type RunnerFormat = (typeof RUNNER_FORMATS)[number];
|
|
55
|
+
/** A string as a JavaScript regular expression matching it literally; `/` is escaped so a pattern never reads as `/re/flags`. */
|
|
56
|
+
export declare function escapeRegExp(text: string): string;
|
|
57
|
+
/** One word for a POSIX shell: as it is when nothing in it is special, else in single quotes with each `'` closed, escaped and reopened. */
|
|
58
|
+
export declare function shellQuote(text: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* The arguments that run just these tests, on one line to paste after the runner's own command (`playwright test`,
|
|
61
|
+
* `vitest run`, `node --test`). Empty when there is nothing to run. Selectors are sorted and unique; the locator
|
|
62
|
+
* files are the ones the entries name.
|
|
63
|
+
*/
|
|
64
|
+
export declare function runnerArguments(format: RunnerFormat, entries: readonly Pick<StaleEntry, "selector" | "locator">[]): string;
|
|
65
|
+
//# sourceMappingURL=stale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale.d.ts","sourceRoot":"","sources":["../src/stale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,cAAc,EAAqB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAG5F,6EAA6E;AAC7E,eAAO,MAAM,SAAS,4EAAkE,CAAC;AACzF,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;CACrB;AAKD,oHAAoH;AACpH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,GAAG,WAAW,CAuCrF;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CASxD;AAED,eAAO,MAAM,cAAc,YAAI,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,iIAAiI;AACjI,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AASD,4IAA4I;AAC5I,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC,EAAE,GAC3D,MAAM,CAgBR"}
|
package/dist/stale.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { EVIDENCE_STATUSES } from "./classify.js";
|
|
2
|
+
import { compareStrings } from "./diagnostic.js";
|
|
3
|
+
/** The statuses that mean a run is needed: everything but a current pass. */
|
|
4
|
+
export const NEEDS_RUN = EVIDENCE_STATUSES.filter((status) => status !== "current-pass");
|
|
5
|
+
/** The statuses whose note says why or what moved; for the others the note only says how a pass was judged. */
|
|
6
|
+
const NOTED = new Set(["stale", "missing", "unresolved"]);
|
|
7
|
+
/** Every verification that is not retired, split by method, with those not currently passing listed and counted. */
|
|
8
|
+
export function staleReport(graph, classification) {
|
|
9
|
+
const needRun = [];
|
|
10
|
+
const manual = [];
|
|
11
|
+
const byStatus = Object.fromEntries(NEEDS_RUN.map((status) => [status, 0]));
|
|
12
|
+
let automated = 0;
|
|
13
|
+
for (const [id, evidence] of Object.entries(classification.verifications)) {
|
|
14
|
+
const meta = graph.artifacts.get(id)?.meta;
|
|
15
|
+
if (meta?.type !== "verification" || meta.status === "retired" || meta.verification === undefined)
|
|
16
|
+
continue;
|
|
17
|
+
const { locator, selector } = meta.verification;
|
|
18
|
+
const note = NOTED.has(evidence.status) && evidence.note !== undefined ? { note: evidence.note } : {};
|
|
19
|
+
if (meta.verification.method === "manual") {
|
|
20
|
+
if (evidence.status !== "current-pass") {
|
|
21
|
+
manual.push({ verification: id, locator, status: evidence.status, ...note });
|
|
22
|
+
}
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
automated++;
|
|
26
|
+
if (evidence.status === "current-pass")
|
|
27
|
+
continue;
|
|
28
|
+
byStatus[evidence.status]++;
|
|
29
|
+
needRun.push({ verification: id, selector, locator, status: evidence.status, ...note });
|
|
30
|
+
}
|
|
31
|
+
needRun.sort((a, b) => compareStrings(a.locator, b.locator) ||
|
|
32
|
+
compareStrings(a.selector, b.selector) ||
|
|
33
|
+
compareStrings(a.verification, b.verification));
|
|
34
|
+
manual.sort((a, b) => compareStrings(a.locator, b.locator) || compareStrings(a.verification, b.verification));
|
|
35
|
+
return {
|
|
36
|
+
needRun,
|
|
37
|
+
manual,
|
|
38
|
+
counts: {
|
|
39
|
+
automated,
|
|
40
|
+
current: automated - needRun.length,
|
|
41
|
+
needRun: needRun.length,
|
|
42
|
+
byStatus,
|
|
43
|
+
manual: manual.length,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** "3 of 12 automated verifications need a run: stale 2, missing 1." */
|
|
48
|
+
export function staleSummary(counts) {
|
|
49
|
+
const parts = NEEDS_RUN.filter((status) => counts.byStatus[status] > 0).map((status) => `${status} ${counts.byStatus[status]}`);
|
|
50
|
+
const manual = counts.manual === 0
|
|
51
|
+
? ""
|
|
52
|
+
: ` ${counts.manual} manual verification${counts.manual === 1 ? " has" : "s have"} no current review, which a runner does not re-run.`;
|
|
53
|
+
return `${counts.needRun} of ${counts.automated} automated verification${counts.automated === 1 ? "" : "s"} need a run${parts.length === 0 ? "" : `: ${parts.join(", ")}`}.${manual}`;
|
|
54
|
+
}
|
|
55
|
+
export const RUNNER_FORMATS = ["playwright", "vitest", "node-test"];
|
|
56
|
+
/** A string as a JavaScript regular expression matching it literally; `/` is escaped so a pattern never reads as `/re/flags`. */
|
|
57
|
+
export function escapeRegExp(text) {
|
|
58
|
+
return text.replace(/[\\^$.*+?()[\]{}|/]/g, "\\$&");
|
|
59
|
+
}
|
|
60
|
+
/** The same, for a file filter that is a regular expression but reads as a path: a dot stays a dot, which only matches more. */
|
|
61
|
+
function pathPattern(path) {
|
|
62
|
+
return path.replace(/[\\^$*+?()[\]{}|]/g, "\\$&");
|
|
63
|
+
}
|
|
64
|
+
const PLAIN = /^[A-Za-z0-9_@%+=:,./-]+$/;
|
|
65
|
+
/** One word for a POSIX shell: as it is when nothing in it is special, else in single quotes with each `'` closed, escaped and reopened. */
|
|
66
|
+
export function shellQuote(text) {
|
|
67
|
+
if (PLAIN.test(text))
|
|
68
|
+
return text;
|
|
69
|
+
return `'${text.replaceAll("'", "'\\''")}'`;
|
|
70
|
+
}
|
|
71
|
+
const unique = (values) => [...new Set(values)].sort(compareStrings);
|
|
72
|
+
/**
|
|
73
|
+
* The arguments that run just these tests, on one line to paste after the runner's own command (`playwright test`,
|
|
74
|
+
* `vitest run`, `node --test`). Empty when there is nothing to run. Selectors are sorted and unique; the locator
|
|
75
|
+
* files are the ones the entries name.
|
|
76
|
+
*/
|
|
77
|
+
export function runnerArguments(format, entries) {
|
|
78
|
+
if (entries.length === 0)
|
|
79
|
+
return "";
|
|
80
|
+
const selectors = unique(entries.map((entry) => entry.selector));
|
|
81
|
+
const files = unique(entries.map((entry) => entry.locator));
|
|
82
|
+
const alternation = selectors.map(escapeRegExp).join("|");
|
|
83
|
+
switch (format) {
|
|
84
|
+
case "playwright":
|
|
85
|
+
return ["--grep", shellQuote(alternation), ...files.map((file) => shellQuote(pathPattern(file)))].join(" ");
|
|
86
|
+
case "vitest":
|
|
87
|
+
return [...files.map(shellQuote), "-t", shellQuote(alternation)].join(" ");
|
|
88
|
+
case "node-test":
|
|
89
|
+
return [
|
|
90
|
+
...selectors.map((selector) => `--test-name-pattern=${shellQuote(escapeRegExp(selector))}`),
|
|
91
|
+
...files.map(shellQuote),
|
|
92
|
+
].join(" ");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=stale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale.js","sourceRoot":"","sources":["../src/stale.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The subject of a verification (Core §8, ADR 0013): a hash of what the check
|
|
3
|
+
* is about, so a run record can stay current while the subject is unchanged.
|
|
4
|
+
* Pure: it reads nothing but what it is given, so the same inputs give the
|
|
5
|
+
* same hash on every machine.
|
|
6
|
+
*
|
|
7
|
+
* The subject is:
|
|
8
|
+
*
|
|
9
|
+
* - the verification record and what it verifies (each verified behavior, the
|
|
10
|
+
* rules that govern it and the scenarios that illustrate it), each by the
|
|
11
|
+
* source hash of its whole record: its prose is its promise;
|
|
12
|
+
* - the slices that implement the verified behaviors, the transitive closure
|
|
13
|
+
* of their `dependsOn`, and those the verification names in
|
|
14
|
+
* `verification.exercises`: each by the hash of its **binding fields**
|
|
15
|
+
* (`implements`, `dependsOn`, `claims`, `usesResources`, `entrypoints`;
|
|
16
|
+
* never its prose) and the content of every file its claims resolve to;
|
|
17
|
+
* - the resources those slices use, and any resource `exercises` names: each
|
|
18
|
+
* by its registry entry and the content of the files its path matches;
|
|
19
|
+
* - the test file (`locator`) and the local files it imports, transitively,
|
|
20
|
+
* which the caller resolves (`localImports`) with the architecture
|
|
21
|
+
* package's resolver and stops at a package boundary;
|
|
22
|
+
* - the repository's global inputs, which the caller has expanded to paths.
|
|
23
|
+
*
|
|
24
|
+
* The slices' and resources' files are resolved by the architecture package
|
|
25
|
+
* and passed in, so this package does not depend on it. The hash is the
|
|
26
|
+
* SHA-256 of the canonical JSON of the sorted entries (ADR 0005), like
|
|
27
|
+
* `graphHash`; a file is its content's SHA-256, a missing one the word
|
|
28
|
+
* `absent`, so a deleted file moves the subject. `parts` carries each entry,
|
|
29
|
+
* so a report can say which part moved (`movedParts`).
|
|
30
|
+
*/
|
|
31
|
+
import { type Graph } from "@intentset/core";
|
|
32
|
+
export declare const SUBJECT_PART_KINDS: readonly ["verification", "verified", "slice", "slice-file", "resource", "resource-file", "test", "test-import", "global-input"];
|
|
33
|
+
export type SubjectPartKind = (typeof SUBJECT_PART_KINDS)[number];
|
|
34
|
+
/** One thing that went into the hash: `id` is a record ID or a path, `hash` its content or source hash. */
|
|
35
|
+
export interface SubjectPart {
|
|
36
|
+
kind: SubjectPartKind;
|
|
37
|
+
id: string;
|
|
38
|
+
hash: string;
|
|
39
|
+
/** For a slice or a resource: why it is included (`implements`, `dependsOn`, `exercises`, `usesResources`; sorted, joined by a comma). */
|
|
40
|
+
why?: string;
|
|
41
|
+
/** For a slice file or a resource file: the slice or resource it belongs to. */
|
|
42
|
+
owner?: string;
|
|
43
|
+
/** The repository-relative file the part is, or the record's file: what a `git diff` names when the part moves. */
|
|
44
|
+
path?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface Subject {
|
|
47
|
+
hash: string;
|
|
48
|
+
/** Sorted by kind, then ID. */
|
|
49
|
+
parts: SubjectPart[];
|
|
50
|
+
}
|
|
51
|
+
/** A registry resource as the subject sees it: its record, and the files its path matches. */
|
|
52
|
+
export interface SubjectResource {
|
|
53
|
+
record: unknown;
|
|
54
|
+
files: readonly string[];
|
|
55
|
+
}
|
|
56
|
+
export interface SubjectInput {
|
|
57
|
+
graph: Graph;
|
|
58
|
+
verificationId: string;
|
|
59
|
+
/** Repository-relative path to its bytes; undefined when the file does not exist. */
|
|
60
|
+
readFile: (path: string) => Uint8Array | undefined;
|
|
61
|
+
/** A memoized hash of a file's content (or `absent`), for a caller hashing many subjects; default: hash `readFile`. */
|
|
62
|
+
fileHash?: (path: string) => string;
|
|
63
|
+
/** Slice ID to the repository-relative files it claims, as the architecture package resolves them. */
|
|
64
|
+
sliceFiles: ReadonlyMap<string, readonly string[]> | Readonly<Record<string, readonly string[]>>;
|
|
65
|
+
/** Registry resource ID to its record and files; absent means the repository declares none. */
|
|
66
|
+
resources?: ReadonlyMap<string, SubjectResource>;
|
|
67
|
+
/** The local files a file imports, transitively and without the file itself, stopping at a package boundary. */
|
|
68
|
+
localImports?: (path: string) => readonly string[];
|
|
69
|
+
/** Files whose change affects every check and that belong to no slice (`evidence.globalInputs`), as paths. */
|
|
70
|
+
globalInputs: readonly string[];
|
|
71
|
+
}
|
|
72
|
+
/** What a missing file hashes as, so a deleted file moves the subject and is told apart from an empty one. */
|
|
73
|
+
export declare const ABSENT = "absent";
|
|
74
|
+
/** The verification's `verification.exercises`, or none. */
|
|
75
|
+
export declare function exercisesOf(graph: Graph, id: string): string[];
|
|
76
|
+
/** The behaviors a verification is about: those it verifies, those governed by a rule it verifies, those a scenario it verifies illustrates. */
|
|
77
|
+
export declare function verifiedBehaviors(graph: Graph, verificationId: string): string[];
|
|
78
|
+
/** The slices a subject includes, each with why: implementers, their `dependsOn` closure, and the exercised slices. */
|
|
79
|
+
export declare function includedSlices(graph: Graph, verificationId: string): Map<string, string>;
|
|
80
|
+
/** The binding fields of a slice record, canonical: what the subject hashes of it instead of the whole record. */
|
|
81
|
+
export declare function sliceBinding(graph: Graph, id: string): unknown;
|
|
82
|
+
export declare function computeSubject(input: SubjectInput): Subject;
|
|
83
|
+
/** The parts that differ between two subjects, as `kind id` keys, sorted: added, removed or changed. */
|
|
84
|
+
export declare function movedParts(before: Subject, after: Subject): string[];
|
|
85
|
+
/**
|
|
86
|
+
* The parts of a subject whose file or record is among `changed`: what a
|
|
87
|
+
* `git diff --name-only` since a record's commit says may have moved. A record
|
|
88
|
+
* file that changed only in prose is named too, since the diff cannot tell it
|
|
89
|
+
* from a change to a binding field; the hash decided the subject moved.
|
|
90
|
+
*/
|
|
91
|
+
export declare function partsChangedAmong(subject: Subject, changed: ReadonlySet<string>): string[];
|
|
92
|
+
//# sourceMappingURL=subject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../src/subject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAiB,KAAK,KAAK,EAAa,MAAM,iBAAiB,CAAC;AAEvE,eAAO,MAAM,kBAAkB,YAC7B,cAAc,EACd,UAAU,EACV,OAAO,EACP,YAAY,EACZ,UAAU,EACV,eAAe,EACf,MAAM,EACN,aAAa,EACb,cAAc,CACN,CAAC;AACX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,2GAA2G;AAC3G,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,0IAA0I;IAC1I,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mHAAmH;IACnH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,8FAA8F;AAC9F,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IACnD,uHAAuH;IACvH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,sGAAsG;IACtG,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACjG,+FAA+F;IAC/F,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,gHAAgH;IAChH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;IACnD,8GAA8G;IAC9G,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,8GAA8G;AAC9G,eAAO,MAAM,MAAM,WAAW,CAAC;AAI/B,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAG9D;AAED,gJAAgJ;AAChJ,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAchF;AAED,uHAAuH;AACvH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BxF;AAED,kHAAkH;AAClH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAe9D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAyF3D;AAID,wGAAwG;AACxG,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAOpE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAK1F"}
|