@openauditmodel/cli 0.3.0 → 0.4.1
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 +62 -6
- package/dist/conformance/src/cli.js +113 -6
- package/dist/conformance/src/cli.js.map +1 -1
- package/dist/conformance/src/privacy/types.d.ts +19 -0
- package/dist/conformance/src/privacy/types.js +8 -0
- package/dist/conformance/src/privacy/types.js.map +1 -1
- package/dist/conformance/src/profiles/coverage.d.ts +62 -0
- package/dist/conformance/src/profiles/coverage.js +114 -0
- package/dist/conformance/src/profiles/coverage.js.map +1 -0
- package/package.json +7 -2
- package/profiles/README.md +42 -0
- package/profiles/api-and-integration-management/0.1/profile.json +258 -0
- package/profiles/backup-and-recovery/0.1/profile.json +178 -0
- package/profiles/customer-and-account-management/0.1/profile.json +237 -0
- package/profiles/deployment-and-change-management/0.1/profile.json +298 -0
- package/profiles/document-management/0.1/profile.json +170 -0
- package/profiles/financial-transaction-management/0.1/profile.json +247 -0
- package/profiles/identity-and-access-management/0.1/profile.json +120 -0
- package/profiles/incident-management/0.1/profile.json +256 -0
- package/profiles/incident-management/0.2/profile.json +287 -0
- package/profiles/incident-management/README.md +39 -21
- package/profiles/incident-management/profile.json +37 -6
- package/profiles/message-broker-management/0.1/profile.json +399 -0
- package/profiles/secrets-and-key-management/0.1/profile.json +219 -0
- package/semantic-conventions/README.md +15 -10
- package/semantic-conventions/backup-and-recovery.md +124 -0
- package/semantic-conventions/customer-and-account.md +133 -0
- package/semantic-conventions/financial-transactions.md +128 -0
- package/semantic-conventions/message-brokers.md +128 -0
- package/semantic-conventions/secrets-and-keys.md +132 -0
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
| | |
|
|
13
13
|
| ------------------------- | ---------------------------------------------------------------- |
|
|
14
14
|
| **Specification version** | 0.1 |
|
|
15
|
-
| **Tooling release** | 0.
|
|
15
|
+
| **Tooling release** | 0.4.1 — the CLI and MCP server, versioned in `package.json` |
|
|
16
16
|
| **Project status** | **Experimental** |
|
|
17
17
|
| **Production readiness** | **Not production-ready** |
|
|
18
18
|
| **Compliance** | **No compliance guarantee** |
|
|
@@ -324,6 +324,7 @@ examples/integrity/ generated tamper-evidence fixtures, valid and invalid
|
|
|
324
324
|
examples/privacy/ clean and finding fixtures for the privacy linter
|
|
325
325
|
examples/profiles/ conforming, violating and out-of-scope profile fixtures
|
|
326
326
|
conformance/ the `auditmodel` CLI and its test suite
|
|
327
|
+
conformance-kit/ every fixture's expected verdict, as data, for any language
|
|
327
328
|
mcp/ the remote MCP server, distributed as a container image
|
|
328
329
|
deploy/ Docker Compose and reverse-proxy examples
|
|
329
330
|
decisions/ 12 architecture decision records
|
|
@@ -349,7 +350,6 @@ All of it. Specifically, expect these to change:
|
|
|
349
350
|
ones.
|
|
350
351
|
- **Profiles.** Ten are implemented and enforceable, but none has production adoption evidence yet:
|
|
351
352
|
their requirements are reasoned, not validated against real deployments.
|
|
352
|
-
- **Planned commands.** `check-coverage` is documented as future work and does not exist.
|
|
353
353
|
- **The profile rule vocabulary.** Six capabilities and one conditional operator. Profile inheritance,
|
|
354
354
|
composition and multi-profile checking are not implemented.
|
|
355
355
|
- **Privacy rule thresholds and vocabularies.** Hard-coded in v0.1, with no configuration and no
|
|
@@ -540,10 +540,11 @@ instrumentation can validate, privacy-lint and profile-check an event without cl
|
|
|
540
540
|
claude mcp add --transport http openauditmodel https://mcp.openauditmodel.org/mcp
|
|
541
541
|
```
|
|
542
542
|
|
|
543
|
-
|
|
544
|
-
`check_profile`, `generate_event_template`, `get_event_guidance` —
|
|
545
|
-
read-only resources
|
|
546
|
-
profile
|
|
543
|
+
Eight tools — `validate_event`, `verify_integrity`, `verify_chain`, `lint_privacy`,
|
|
544
|
+
`check_profile`, `check_coverage`, `generate_event_template`, `get_event_guidance` —
|
|
545
|
+
three prompts, and thirty-four read-only resources: seven specification chapters, both canonical
|
|
546
|
+
schemas, the semantic-conventions index and twelve convention documents, the profile index and
|
|
547
|
+
all ten profile definitions, and the examples index.
|
|
547
548
|
|
|
548
549
|
**It is a remote service, and this matters.** MCP tool inputs are processed ephemerally by the
|
|
549
550
|
OpenAuditModel MCP service. The service does not intentionally persist audit event content or
|
|
@@ -658,6 +659,61 @@ required by test to pass both.
|
|
|
658
659
|
See [profiles/README.md](profiles/README.md), [ADR 0005](decisions/0005-core-and-profile-separation.md)
|
|
659
660
|
and [ADR 0008](decisions/0008-declarative-profile-conformance.md).
|
|
660
661
|
|
|
662
|
+
### Checking an implementation in another language
|
|
663
|
+
|
|
664
|
+
[ADR 0001](decisions/0001-specification-first.md) promises that "an implementation in any language can
|
|
665
|
+
be checked against the same fixtures". [conformance-kit/manifest.json](conformance-kit/manifest.json)
|
|
666
|
+
is what makes that actionable: for all 320 published fixtures and 5 chains it records the verdict each
|
|
667
|
+
engine returns — rule identifiers, JSON Pointers, statuses, severities and finding kinds.
|
|
668
|
+
|
|
669
|
+
Human-readable messages are deliberately absent. An implementation that words an error differently is
|
|
670
|
+
not wrong, and a kit that compared prose would fail every translation.
|
|
671
|
+
|
|
672
|
+
**The kit confers nothing.** No badge, no "compatible" status, no listing. An implementation that
|
|
673
|
+
reproduces every verdict has demonstrated that it answers the same as the reference implementation on
|
|
674
|
+
the cases this project chose to publish — which is worth having, and is not a claim about the
|
|
675
|
+
implementation in general. See [conformance-kit/README.md](conformance-kit/README.md).
|
|
676
|
+
|
|
677
|
+
### How much of a profile is my instrumentation reaching?
|
|
678
|
+
|
|
679
|
+
`check-profile` answers "does this event conform?". That is the second question. The first is whether
|
|
680
|
+
the profile reaches your events at all, and a summary line that counts only failures cannot tell you:
|
|
681
|
+
an export with no violations and an export the profile never governed look identical.
|
|
682
|
+
|
|
683
|
+
```bash
|
|
684
|
+
auditmodel check-coverage ./audit-export.jsonl --profile incident-management
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
```text
|
|
688
|
+
204 events checked: 0 conforming, 15 with violations, 189 not applicable, 0 core-invalid
|
|
689
|
+
|
|
690
|
+
rules: 15 in the profile, 6 selected, 6 applied
|
|
691
|
+
INC-CORE-001 error selected 15 applied 15 failed 15
|
|
692
|
+
...
|
|
693
|
+
never selected (9): INC-STATE-002, INC-ASSIGN-001, INC-CLOSE-001, ...
|
|
694
|
+
|
|
695
|
+
event names: 30 distinct, 2 governed, 28 ungoverned
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
**It counts events, not obligations.** "6 of 15 rules selected" describes this event set. It is not a
|
|
699
|
+
percentage of conformance, a maturity score or a grade, and a low number is the normal state of a
|
|
700
|
+
narrow export rather than a defect. There is no threshold and no target, because a threshold would be
|
|
701
|
+
policy and this is a measurement.
|
|
702
|
+
|
|
703
|
+
Two lines in that report carry most of its value:
|
|
704
|
+
|
|
705
|
+
- **The ungoverned names.** They are what tell a producer that its vocabulary and the profile's have
|
|
706
|
+
not met. No per-event verdict shows this, because every one of those events is individually
|
|
707
|
+
`not-applicable` and individually unremarkable.
|
|
708
|
+
- **Selected but never applied.** A rule with a condition is selected by an event's name and then
|
|
709
|
+
contributes nothing, because the condition did not hold. A profile requiring an approval _when the
|
|
710
|
+
producer marks the closure as needing one_ is selected on every closure and applied on none against
|
|
711
|
+
a producer that never writes the flag. Nothing fails and nothing is checked; only this line says so.
|
|
712
|
+
|
|
713
|
+
**It never exits `1`.** Coverage makes no pass or fail claim — `check-profile` is the command that
|
|
714
|
+
judges. It exits `0` when the profile governed at least one event, `3` when it governed none, and `2`
|
|
715
|
+
when it could not run.
|
|
716
|
+
|
|
661
717
|
## Legal and compliance limitations
|
|
662
718
|
|
|
663
719
|
Read this section before citing OpenAuditModel in any compliance context.
|
|
@@ -14,6 +14,7 @@ import { summarise } from "./privacy/types.js";
|
|
|
14
14
|
import { availableProfiles, loadProfile } from "./profiles/load-profile.js";
|
|
15
15
|
import { checkProfile } from "./profiles/check-profile.js";
|
|
16
16
|
import { summariseProfileResults } from "./profiles/types.js";
|
|
17
|
+
import { summariseCoverage } from "./profiles/coverage.js";
|
|
17
18
|
export const EXIT_OK = 0;
|
|
18
19
|
export const EXIT_INVALID = 1;
|
|
19
20
|
export const EXIT_ERROR = 2;
|
|
@@ -33,7 +34,7 @@ export const EXIT_NO_VERDICT = 3;
|
|
|
33
34
|
/** Retained name for the `check-profile` reading of {@link EXIT_NO_VERDICT}. */
|
|
34
35
|
export const EXIT_NOT_APPLICABLE = EXIT_NO_VERDICT;
|
|
35
36
|
/** Commands that are specified as future work and deliberately not implemented in v0.1. */
|
|
36
|
-
const PLANNED_COMMANDS = new Set([
|
|
37
|
+
const PLANNED_COMMANDS = new Set([]);
|
|
37
38
|
const OUTPUT_FORMATS = new Set(["text", "json"]);
|
|
38
39
|
/** Every implemented command, for diagnosing flags before dispatch. */
|
|
39
40
|
const IMPLEMENTED_COMMANDS = new Set([
|
|
@@ -42,9 +43,10 @@ const IMPLEMENTED_COMMANDS = new Set([
|
|
|
42
43
|
"verify-chain",
|
|
43
44
|
"lint-privacy",
|
|
44
45
|
"check-profile",
|
|
46
|
+
"check-coverage",
|
|
45
47
|
]);
|
|
46
48
|
/** The commands --format applies to; every other implemented command refuses the flag. */
|
|
47
|
-
const FORMAT_COMMANDS = new Set(["lint-privacy", "check-profile"]);
|
|
49
|
+
const FORMAT_COMMANDS = new Set(["lint-privacy", "check-profile", "check-coverage"]);
|
|
48
50
|
const USAGE = `auditmodel — OpenAuditModel conformance tooling (specification ${SPEC_VERSION}, experimental)
|
|
49
51
|
|
|
50
52
|
Usage:
|
|
@@ -53,6 +55,7 @@ Usage:
|
|
|
53
55
|
auditmodel verify-chain <path...> Verify previous-hash chains across a set of events
|
|
54
56
|
auditmodel lint-privacy <path...> Report suspected privacy and secret-exposure risks
|
|
55
57
|
auditmodel check-profile <path...> Check events against a domain profile
|
|
58
|
+
auditmodel check-coverage <path...> Report how much of a profile a set of events reaches
|
|
56
59
|
auditmodel --help Show this help
|
|
57
60
|
auditmodel --version Show the tool version
|
|
58
61
|
|
|
@@ -62,8 +65,10 @@ those files.
|
|
|
62
65
|
|
|
63
66
|
Options:
|
|
64
67
|
-q, --quiet Only report failures
|
|
65
|
-
--format <text|json> Output format for lint-privacy
|
|
66
|
-
|
|
68
|
+
--format <text|json> Output format for lint-privacy, check-profile and
|
|
69
|
+
check-coverage
|
|
70
|
+
--profile <name> Profile to check against (check-profile,
|
|
71
|
+
check-coverage)
|
|
67
72
|
--public-key <path> PEM public key to verify integrity.signature against
|
|
68
73
|
(verify-integrity, verify-chain). Ed25519 only in v0.1.
|
|
69
74
|
Without it, a declared signature is reported but not
|
|
@@ -80,6 +85,12 @@ Exit codes:
|
|
|
80
85
|
lint-privacy the input is not an audit event and was NOT scanned
|
|
81
86
|
verify-chain no event could be assigned to a chain, so no chain
|
|
82
87
|
was checked
|
|
88
|
+
check-coverage no event in the set is governed by the profile, so the
|
|
89
|
+
profile reached nothing
|
|
90
|
+
|
|
91
|
+
check-coverage never exits 1. It reports what a profile reached; it makes no
|
|
92
|
+
pass or fail claim, and it counts events rather than obligations. "4 of 15 rules
|
|
93
|
+
selected" describes this event set, and is not a score, a percentage or a grade.
|
|
83
94
|
|
|
84
95
|
Verification is tamper-evident, not tamper-proof: it detects modification of the
|
|
85
96
|
events supplied to it. It cannot prove that events were never deleted, and it
|
|
@@ -94,8 +105,6 @@ A profile only ever adds requirements to the core model. Profile conformance is
|
|
|
94
105
|
not regulatory or legal compliance, and an event the profile does not govern is
|
|
95
106
|
reported as not-applicable rather than as conforming.
|
|
96
107
|
|
|
97
|
-
Planned commands (not implemented in v0.1):
|
|
98
|
-
check-coverage
|
|
99
108
|
`;
|
|
100
109
|
function toolVersion(schemaPath) {
|
|
101
110
|
// <root>/schemas/v0.1/audit-event.schema.json -> <root>/package.json
|
|
@@ -377,6 +386,15 @@ function runLintPrivacy(inputs, quiet, format) {
|
|
|
377
386
|
const { critical, high, medium, low, info } = summary.bySeverity;
|
|
378
387
|
const findingNoun = summary.findings === 1 ? "finding" : "findings";
|
|
379
388
|
write(`${summary.findings} privacy ${findingNoun}: ${critical} critical, ${high} high, ${medium} medium, ${low} low, ${info} info\n`);
|
|
389
|
+
// Severity says how bad one finding would be. Category says what kind of
|
|
390
|
+
// mistake produced it, which is what an instrumentation fix is organised
|
|
391
|
+
// around — and fifty findings in one category is a different afternoon from
|
|
392
|
+
// fifty spread across nine.
|
|
393
|
+
if (!quiet && summary.byCategory.length > 0) {
|
|
394
|
+
write(`by category: ${summary.byCategory
|
|
395
|
+
.map((entry) => `${entry.category} ${entry.findings}`)
|
|
396
|
+
.join(", ")}\n`);
|
|
397
|
+
}
|
|
380
398
|
if (summary.schemaInvalid > 0) {
|
|
381
399
|
const noun = summary.schemaInvalid === 1 ? "input" : "inputs";
|
|
382
400
|
write(`\nPrivacy evaluation was not completed for ${summary.schemaInvalid} ${noun}: not a valid OpenAuditModel event. Those inputs were NOT scanned, and are not reported as clean.\n`);
|
|
@@ -477,6 +495,92 @@ function runCheckProfile(inputs, quiet, format, profileName) {
|
|
|
477
495
|
// not-applicable events is a pass.
|
|
478
496
|
return summary.conforming === 0 && summary.notApplicable > 0 ? EXIT_NOT_APPLICABLE : EXIT_OK;
|
|
479
497
|
}
|
|
498
|
+
/** Longest ungoverned-name list printed in text mode before it is summarised. */
|
|
499
|
+
const COVERAGE_NAME_LIMIT = 20;
|
|
500
|
+
function runCheckCoverage(inputs, quiet, format, profileName) {
|
|
501
|
+
if (profileName === undefined || profileName === "") {
|
|
502
|
+
process.stderr.write(`auditmodel: check-coverage requires --profile <name>; available profiles: ${availableProfiles().join(", ")}\n`);
|
|
503
|
+
return EXIT_ERROR;
|
|
504
|
+
}
|
|
505
|
+
const loaded = loadProfile(profileName);
|
|
506
|
+
if (!loaded.ok) {
|
|
507
|
+
process.stderr.write(`auditmodel: ${loaded.error}\n`);
|
|
508
|
+
for (const issue of loaded.issues ?? []) {
|
|
509
|
+
process.stderr.write(` ${issue}\n`);
|
|
510
|
+
}
|
|
511
|
+
return EXIT_ERROR;
|
|
512
|
+
}
|
|
513
|
+
const input = loadInput(inputs, "check-coverage", quiet || format === "json");
|
|
514
|
+
if (typeof input === "number") {
|
|
515
|
+
return input;
|
|
516
|
+
}
|
|
517
|
+
const { profile } = loaded;
|
|
518
|
+
const events = input.documents.map((document) => document.event);
|
|
519
|
+
const results = input.documents.map((document) => checkProfile(document.event, displayLabel(document), profile, input.validator));
|
|
520
|
+
const coverage = summariseCoverage(events, results, profile);
|
|
521
|
+
if (format === "json") {
|
|
522
|
+
write(`${JSON.stringify({
|
|
523
|
+
tool: "auditmodel check-coverage",
|
|
524
|
+
specVersion: SPEC_VERSION,
|
|
525
|
+
schemaId: input.validator.schemaId,
|
|
526
|
+
coverage,
|
|
527
|
+
unreadable: input.failures.map((failure) => ({
|
|
528
|
+
file: displayPath(failure.file),
|
|
529
|
+
error: failure.error,
|
|
530
|
+
})),
|
|
531
|
+
}, null, 2)}\n`);
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
reportLoadFailures(input.failures);
|
|
535
|
+
write(`profile: ${profile.name} ${profile.version} (${profile.status})\n\n`);
|
|
536
|
+
const summary = coverage.events;
|
|
537
|
+
const noun = summary.events === 1 ? "event" : "events";
|
|
538
|
+
write(`${summary.events} ${noun} checked: ${summary.conforming} conforming, ${summary.violations} with violations, ${summary.notApplicable} not applicable, ${summary.coreInvalid} core-invalid, ${input.failures.length} unreadable\n\n`);
|
|
539
|
+
write(`rules: ${coverage.rules.total} in the profile, ${coverage.rules.selected} selected, ${coverage.rules.applied} applied\n`);
|
|
540
|
+
if (!quiet) {
|
|
541
|
+
for (const rule of coverage.perRule) {
|
|
542
|
+
if (rule.selected === 0) {
|
|
543
|
+
continue;
|
|
544
|
+
}
|
|
545
|
+
write(` ${rule.ruleId.padEnd(18)}${rule.severity.padEnd(9)}selected ${String(rule.selected).padStart(5)} applied ${String(rule.applied).padStart(5)} failed ${String(rule.failed).padStart(5)}\n`);
|
|
546
|
+
}
|
|
547
|
+
if (coverage.rules.neverSelected.length > 0) {
|
|
548
|
+
write(` never selected (${coverage.rules.neverSelected.length}): ${coverage.rules.neverSelected.join(", ")}\n`);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
// The quiet half of the report, and the half worth reading: a rule that was
|
|
552
|
+
// selected and never applied looked enforced and enforced nothing.
|
|
553
|
+
if (coverage.rules.selectedButNeverApplied.length > 0) {
|
|
554
|
+
write(` selected but never applied (${coverage.rules.selectedButNeverApplied.length}): ${coverage.rules.selectedButNeverApplied.join(", ")}\n`);
|
|
555
|
+
write(" a condition on these rules never held, so they contributed no requirement\n");
|
|
556
|
+
}
|
|
557
|
+
write(`\nevent names: ${coverage.nameTotals.distinct} distinct, ${coverage.nameTotals.governed} governed, ${coverage.nameTotals.ungoverned} ungoverned\n`);
|
|
558
|
+
if (!quiet) {
|
|
559
|
+
for (const kind of ["governed", "ungoverned"]) {
|
|
560
|
+
const entries = coverage.names.filter((entry) => entry.governed === (kind === "governed"));
|
|
561
|
+
if (entries.length === 0) {
|
|
562
|
+
continue;
|
|
563
|
+
}
|
|
564
|
+
write(` ${kind}\n`);
|
|
565
|
+
for (const entry of entries.slice(0, COVERAGE_NAME_LIMIT)) {
|
|
566
|
+
write(` ${String(entry.events).padStart(7)} ${entry.name}\n`);
|
|
567
|
+
}
|
|
568
|
+
if (entries.length > COVERAGE_NAME_LIMIT) {
|
|
569
|
+
write(` and ${entries.length - COVERAGE_NAME_LIMIT} more\n`);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
if (coverage.nameTotals.governed === 0) {
|
|
574
|
+
write("\nthis profile governs no event in this set, so it checked nothing\n");
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
if (input.failures.length > 0) {
|
|
578
|
+
return EXIT_ERROR;
|
|
579
|
+
}
|
|
580
|
+
// Never EXIT_INVALID: coverage reports reach, and makes no pass or fail claim.
|
|
581
|
+
// `check-profile` is the command that judges.
|
|
582
|
+
return coverage.nameTotals.governed === 0 ? EXIT_NO_VERDICT : EXIT_OK;
|
|
583
|
+
}
|
|
480
584
|
export function run(argv) {
|
|
481
585
|
let parsed;
|
|
482
586
|
try {
|
|
@@ -565,6 +669,9 @@ export function run(argv) {
|
|
|
565
669
|
if (command === "check-profile") {
|
|
566
670
|
return runCheckProfile(rest, quiet, format, typeof values.profile === "string" ? values.profile : undefined);
|
|
567
671
|
}
|
|
672
|
+
if (command === "check-coverage") {
|
|
673
|
+
return runCheckCoverage(rest, quiet, format, typeof values.profile === "string" ? values.profile : undefined);
|
|
674
|
+
}
|
|
568
675
|
if (PLANNED_COMMANDS.has(command)) {
|
|
569
676
|
process.stderr.write(`auditmodel: "${command}" is planned for a future specification version and is not implemented in v${SPEC_VERSION}\n`);
|
|
570
677
|
return EXIT_ERROR;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../conformance/src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../conformance/src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,26 @@ export interface LintSummary {
|
|
|
52
52
|
readonly schemaInvalid: number;
|
|
53
53
|
readonly findings: number;
|
|
54
54
|
readonly bySeverity: Readonly<Record<Severity, number>>;
|
|
55
|
+
/**
|
|
56
|
+
* Findings per rule category, most findings first.
|
|
57
|
+
*
|
|
58
|
+
* Severity says how bad one finding would be; category says what kind of
|
|
59
|
+
* mistake produced it, which is what an instrumentation fix is organised
|
|
60
|
+
* around. Fifty findings that are all one category are one afternoon's work;
|
|
61
|
+
* fifty spread across nine are a different problem.
|
|
62
|
+
*
|
|
63
|
+
* A rule that declares no category is counted under `uncategorised` rather
|
|
64
|
+
* than dropped, so the category counts always sum to `findings`.
|
|
65
|
+
*/
|
|
66
|
+
readonly byCategory: readonly CategoryCount[];
|
|
67
|
+
}
|
|
68
|
+
/** Findings attributed to one rule category. */
|
|
69
|
+
export interface CategoryCount {
|
|
70
|
+
readonly category: string;
|
|
71
|
+
readonly findings: number;
|
|
55
72
|
}
|
|
73
|
+
/** Category recorded for a finding whose rule declares none. */
|
|
74
|
+
export declare const UNCATEGORISED = "uncategorised";
|
|
56
75
|
export declare function emptySeverityCounts(): Record<Severity, number>;
|
|
57
76
|
/** Summarises a set of results. */
|
|
58
77
|
export declare function summarise(results: readonly EventLintResult[]): LintSummary;
|
|
@@ -7,16 +7,21 @@
|
|
|
7
7
|
* proof that an event is safe or compliant. See specification/privacy.md §6.
|
|
8
8
|
*/
|
|
9
9
|
export const SEVERITY_ORDER = ["critical", "high", "medium", "low", "info"];
|
|
10
|
+
/** Category recorded for a finding whose rule declares none. */
|
|
11
|
+
export const UNCATEGORISED = "uncategorised";
|
|
10
12
|
export function emptySeverityCounts() {
|
|
11
13
|
return { critical: 0, high: 0, medium: 0, low: 0, info: 0 };
|
|
12
14
|
}
|
|
13
15
|
/** Summarises a set of results. */
|
|
14
16
|
export function summarise(results) {
|
|
15
17
|
const bySeverity = emptySeverityCounts();
|
|
18
|
+
const categories = new Map();
|
|
16
19
|
let findings = 0;
|
|
17
20
|
for (const result of results) {
|
|
18
21
|
for (const finding of result.findings) {
|
|
19
22
|
bySeverity[finding.severity] += 1;
|
|
23
|
+
const category = finding.category ?? UNCATEGORISED;
|
|
24
|
+
categories.set(category, (categories.get(category) ?? 0) + 1);
|
|
20
25
|
findings += 1;
|
|
21
26
|
}
|
|
22
27
|
}
|
|
@@ -27,6 +32,9 @@ export function summarise(results) {
|
|
|
27
32
|
schemaInvalid: results.filter((result) => result.status === "schema-invalid").length,
|
|
28
33
|
findings,
|
|
29
34
|
bySeverity,
|
|
35
|
+
byCategory: [...categories.entries()]
|
|
36
|
+
.map(([category, count]) => ({ category, findings: count }))
|
|
37
|
+
.sort((left, right) => right.findings - left.findings || left.category.localeCompare(right.category, "en")),
|
|
30
38
|
};
|
|
31
39
|
}
|
|
32
40
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../conformance/src/privacy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,CAAC,MAAM,cAAc,GAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../conformance/src/privacy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,CAAC,MAAM,cAAc,GAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAoEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,MAAM,UAAU,mBAAmB;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,SAAS,CAAC,OAAmC;IAC3D,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC;YACnD,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM;QACnE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM;QAC7E,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC,CAAC,MAAM;QACpF,QAAQ;QACR,UAAU;QACV,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;aAC3D,IAAI,CACH,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CACtF;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type ProfileCheckResult, type ProfileCheckSummary, type ProfileDefinition, type RuleSeverity } from "./types.js";
|
|
2
|
+
/** What one rule did across the event set. */
|
|
3
|
+
export interface RuleCoverage {
|
|
4
|
+
readonly ruleId: string;
|
|
5
|
+
readonly severity: RuleSeverity;
|
|
6
|
+
/** Events whose name this rule's selector matched. */
|
|
7
|
+
readonly selected: number;
|
|
8
|
+
/**
|
|
9
|
+
* Events where the rule contributed requirements. Lower than `selected` when
|
|
10
|
+
* a `when` condition did not hold; equal when the rule has no condition.
|
|
11
|
+
*/
|
|
12
|
+
readonly applied: number;
|
|
13
|
+
/** Events where the rule produced at least one error-severity finding. */
|
|
14
|
+
readonly failed: number;
|
|
15
|
+
}
|
|
16
|
+
/** What one event name did, and whether the profile governs it at all. */
|
|
17
|
+
export interface EventNameCoverage {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly events: number;
|
|
20
|
+
readonly governed: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface ProfileCoverage {
|
|
23
|
+
readonly profile: {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly version: string;
|
|
26
|
+
readonly status: string;
|
|
27
|
+
};
|
|
28
|
+
readonly events: ProfileCheckSummary;
|
|
29
|
+
readonly rules: {
|
|
30
|
+
readonly total: number;
|
|
31
|
+
/** Rules whose selector matched at least one event. */
|
|
32
|
+
readonly selected: number;
|
|
33
|
+
/** Rules that contributed requirements to at least one event. */
|
|
34
|
+
readonly applied: number;
|
|
35
|
+
/** Rule ids no event in this set selected, in definition order. */
|
|
36
|
+
readonly neverSelected: readonly string[];
|
|
37
|
+
/**
|
|
38
|
+
* Rule ids that were selected by an event and applied to none, in
|
|
39
|
+
* definition order. Every one of these is a requirement that looked
|
|
40
|
+
* enforced and was not.
|
|
41
|
+
*/
|
|
42
|
+
readonly selectedButNeverApplied: readonly string[];
|
|
43
|
+
};
|
|
44
|
+
readonly perRule: readonly RuleCoverage[];
|
|
45
|
+
/** Every distinct event name in the set, most frequent first. */
|
|
46
|
+
readonly names: readonly EventNameCoverage[];
|
|
47
|
+
readonly nameTotals: {
|
|
48
|
+
readonly distinct: number;
|
|
49
|
+
readonly governed: number;
|
|
50
|
+
readonly ungoverned: number;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Summarises what a profile reached across already-checked events.
|
|
55
|
+
*
|
|
56
|
+
* The events are re-read here rather than threaded through
|
|
57
|
+
* {@link ProfileCheckResult}, because selection and condition evaluation are
|
|
58
|
+
* the two facts coverage is about and a check result records neither. Nothing
|
|
59
|
+
* is re-validated: the core verdict already in each result is what decides
|
|
60
|
+
* whether an event's rules were evaluated at all.
|
|
61
|
+
*/
|
|
62
|
+
export declare function summariseCoverage(events: readonly unknown[], results: readonly ProfileCheckResult[], profile: ProfileDefinition): ProfileCoverage;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coverage: what a profile reached across a set of events.
|
|
3
|
+
*
|
|
4
|
+
* `check-profile` answers "does this event conform?". This answers a different
|
|
5
|
+
* question, and confusing the two is the mistake it exists to prevent: **how
|
|
6
|
+
* much of this profile is my instrumentation actually exercising?**
|
|
7
|
+
*
|
|
8
|
+
* A pipeline that runs `check-profile` over an export and sees no violations
|
|
9
|
+
* has learned almost nothing if every event was `not-applicable`. That is the
|
|
10
|
+
* real state of a producer whose event names sit outside the profile's
|
|
11
|
+
* vocabulary, and it is indistinguishable from success in a summary line that
|
|
12
|
+
* only counts failures.
|
|
13
|
+
*
|
|
14
|
+
* **It counts events, not obligations.** "4 of 15 rules were selected" is a
|
|
15
|
+
* statement about this event set, never a percentage of conformance, a maturity
|
|
16
|
+
* score or a grade. A profile is not a checklist to be completed: most rules do
|
|
17
|
+
* not apply to most events, and a low number is the normal state of a narrow
|
|
18
|
+
* export rather than a defect.
|
|
19
|
+
*
|
|
20
|
+
* Two distinctions carry most of the value here.
|
|
21
|
+
*
|
|
22
|
+
* **Selected is not applied.** A rule with a `when` condition is selected by an
|
|
23
|
+
* event's name and then contributes nothing, because the condition did not
|
|
24
|
+
* hold. `INC-CLOSE-001` requires an approval when
|
|
25
|
+
* `/metadata/incident/approvalRequired` is true — against a producer that never
|
|
26
|
+
* writes that flag it is selected on every closure and applied on none. Nothing
|
|
27
|
+
* fails, and nothing is checked. Reporting only selection would present that as
|
|
28
|
+
* coverage.
|
|
29
|
+
*
|
|
30
|
+
* **Ungoverned names are the finding.** The event names a profile did not
|
|
31
|
+
* govern are what tell a producer that its vocabulary and the profile's have
|
|
32
|
+
* not met, which no per-event verdict shows.
|
|
33
|
+
*/
|
|
34
|
+
import { conditionHolds } from "./evaluate-rule.js";
|
|
35
|
+
import { eventName, selectRules } from "./select-rules.js";
|
|
36
|
+
import { summariseProfileResults, } from "./types.js";
|
|
37
|
+
/**
|
|
38
|
+
* Summarises what a profile reached across already-checked events.
|
|
39
|
+
*
|
|
40
|
+
* The events are re-read here rather than threaded through
|
|
41
|
+
* {@link ProfileCheckResult}, because selection and condition evaluation are
|
|
42
|
+
* the two facts coverage is about and a check result records neither. Nothing
|
|
43
|
+
* is re-validated: the core verdict already in each result is what decides
|
|
44
|
+
* whether an event's rules were evaluated at all.
|
|
45
|
+
*/
|
|
46
|
+
export function summariseCoverage(events, results, profile) {
|
|
47
|
+
const selected = new Map();
|
|
48
|
+
const applied = new Map();
|
|
49
|
+
const failed = new Map();
|
|
50
|
+
const nameCounts = new Map();
|
|
51
|
+
const governedNames = new Set();
|
|
52
|
+
for (const rule of profile.rules) {
|
|
53
|
+
selected.set(rule.id, 0);
|
|
54
|
+
applied.set(rule.id, 0);
|
|
55
|
+
failed.set(rule.id, 0);
|
|
56
|
+
}
|
|
57
|
+
for (const [index, event] of events.entries()) {
|
|
58
|
+
const result = results[index];
|
|
59
|
+
const name = eventName(event);
|
|
60
|
+
if (name !== undefined) {
|
|
61
|
+
nameCounts.set(name, (nameCounts.get(name) ?? 0) + 1);
|
|
62
|
+
}
|
|
63
|
+
// A core-invalid event had no rule evaluated against it, so counting its
|
|
64
|
+
// name as governed would credit the profile with a check it never made.
|
|
65
|
+
if (result === undefined || result.status === "core-invalid" || name === undefined) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const rules = selectRules(profile, name);
|
|
69
|
+
if (rules.length > 0) {
|
|
70
|
+
governedNames.add(name);
|
|
71
|
+
}
|
|
72
|
+
const failing = new Set(result.errors.map((finding) => finding.ruleId));
|
|
73
|
+
for (const rule of rules) {
|
|
74
|
+
selected.set(rule.id, (selected.get(rule.id) ?? 0) + 1);
|
|
75
|
+
if (rule.when === undefined || conditionHolds(event, rule.when)) {
|
|
76
|
+
applied.set(rule.id, (applied.get(rule.id) ?? 0) + 1);
|
|
77
|
+
}
|
|
78
|
+
if (failing.has(rule.id)) {
|
|
79
|
+
failed.set(rule.id, (failed.get(rule.id) ?? 0) + 1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const perRule = profile.rules.map((rule) => ({
|
|
84
|
+
ruleId: rule.id,
|
|
85
|
+
severity: rule.severity ?? "error",
|
|
86
|
+
selected: selected.get(rule.id) ?? 0,
|
|
87
|
+
applied: applied.get(rule.id) ?? 0,
|
|
88
|
+
failed: failed.get(rule.id) ?? 0,
|
|
89
|
+
}));
|
|
90
|
+
const names = [...nameCounts.entries()]
|
|
91
|
+
.map(([name, count]) => ({ name, events: count, governed: governedNames.has(name) }))
|
|
92
|
+
.sort((left, right) => right.events - left.events || left.name.localeCompare(right.name, "en"));
|
|
93
|
+
return {
|
|
94
|
+
profile: { name: profile.name, version: profile.version, status: profile.status },
|
|
95
|
+
events: summariseProfileResults(results),
|
|
96
|
+
rules: {
|
|
97
|
+
total: profile.rules.length,
|
|
98
|
+
selected: perRule.filter((rule) => rule.selected > 0).length,
|
|
99
|
+
applied: perRule.filter((rule) => rule.applied > 0).length,
|
|
100
|
+
neverSelected: perRule.filter((rule) => rule.selected === 0).map((rule) => rule.ruleId),
|
|
101
|
+
selectedButNeverApplied: perRule
|
|
102
|
+
.filter((rule) => rule.selected > 0 && rule.applied === 0)
|
|
103
|
+
.map((rule) => rule.ruleId),
|
|
104
|
+
},
|
|
105
|
+
perRule,
|
|
106
|
+
names,
|
|
107
|
+
nameTotals: {
|
|
108
|
+
distinct: names.length,
|
|
109
|
+
governed: names.filter((entry) => entry.governed).length,
|
|
110
|
+
ungoverned: names.filter((entry) => !entry.governed).length,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=coverage.js.map
|