@jjchill/probity-rules 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/CHANGELOG.md +45 -0
- package/dist/presets/js.d.ts +35 -17
- package/dist/presets/js.d.ts.map +1 -1
- package/dist/presets/js.js +109 -37
- package/dist/presets/js.js.map +1 -1
- package/dist/presets/kmp.d.ts +58 -8
- package/dist/presets/kmp.d.ts.map +1 -1
- package/dist/presets/kmp.js +62 -38
- package/dist/presets/kmp.js.map +1 -1
- package/dist/presets/kotlin.d.ts +8 -0
- package/dist/presets/kotlin.d.ts.map +1 -1
- package/dist/presets/kotlin.js +7 -2
- package/dist/presets/kotlin.js.map +1 -1
- package/dist/rules/scoping.d.ts +10 -0
- package/dist/rules/scoping.d.ts.map +1 -1
- package/dist/rules/scoping.js +20 -0
- package/dist/rules/scoping.js.map +1 -1
- package/dist/rules/spec-test-parity.d.ts +17 -0
- package/dist/rules/spec-test-parity.d.ts.map +1 -1
- package/dist/rules/spec-test-parity.js +17 -0
- package/dist/rules/spec-test-parity.js.map +1 -1
- package/dist/scripts/scope-report.js +34 -3
- package/dist/scripts/scope-report.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.1
|
|
4
|
+
|
|
5
|
+
More preset options, so a project with its own conventions can call a
|
|
6
|
+
preset instead of copying its rules:
|
|
7
|
+
|
|
8
|
+
- KMP preset: `seamHint` (the core ambient-effect screen's pointer to
|
|
9
|
+
your clock/randomness port), `conventionHint` (your telemetry
|
|
10
|
+
convention, given to the adapter-observability judge), and
|
|
11
|
+
`acceptanceLanguageGlobs` (which files get the acceptance Language
|
|
12
|
+
Test, e.g. `*Spec.kt` only when driver/DSL files use other names).
|
|
13
|
+
- Kotlin preset: `conventionHint`.
|
|
14
|
+
|
|
15
|
+
Every default is unchanged.
|
|
16
|
+
|
|
17
|
+
## 0.4.0
|
|
18
|
+
|
|
19
|
+
Preset options, so projects stop forking rule lists:
|
|
20
|
+
|
|
21
|
+
- **KMP preset options (#19).** `kmpRuleEntries(root, options)` takes a
|
|
22
|
+
`KmpPresetOptions` object: `specsDir`, `specGlobs`, `glossaryPath`,
|
|
23
|
+
`coreGlobs`, `acceptanceTestGlobs`, `testRoots`, `testFilePattern`,
|
|
24
|
+
`testDeclarationPattern`, `baselinePath`, `driverScopes`,
|
|
25
|
+
`defaultScopes`. Each defaults to the previous hardcoded value, and
|
|
26
|
+
the old `kmpRuleEntries(root, { driverScopes, defaultScopes })` call
|
|
27
|
+
still works.
|
|
28
|
+
- **Excluding spikes and build output (#21).** The JS, Kotlin, and KMP
|
|
29
|
+
presets take `excludeGlobs`, default `['spikes/**', '**/build/**']`,
|
|
30
|
+
appended as `!` negations to every files-scoped block. Pass `[]` to
|
|
31
|
+
turn it off. **Behavior change:** writes under `spikes/` or a `build/`
|
|
32
|
+
directory are no longer checked by these presets' rules.
|
|
33
|
+
- **JS spec-to-test traceability (#18).** Setting `specsDir` on
|
|
34
|
+
`jsRuleEntries` wires `requireSpecBackedAcceptanceTest`,
|
|
35
|
+
`surfaceScenarioLinkBreakage`, `enforceSpecTestParity`, and (with
|
|
36
|
+
`glossaryPath`) `surfaceGlossaryTermBreakage`, as the KMP preset
|
|
37
|
+
does. Off by default.
|
|
38
|
+
- **TypeScript test declarations (#12).** New `JS_TEST_DECLARATION`
|
|
39
|
+
matches vitest/jest/mocha `it(`/`test(` and their `.only`/`.skip`/
|
|
40
|
+
`.each(...)(` variants; the JS preset uses it by default.
|
|
41
|
+
- New helper `withExcludeGlobs(entries, globs)` in `rules/scoping.ts`.
|
|
42
|
+
|
|
43
|
+
`probity-scope-report --allow-empty <glob>` (repeatable) marks a block
|
|
44
|
+
as expected to be empty, so a greenfield repository can run `--strict`
|
|
45
|
+
in CI from its first commit (#20). A flag that matches no block's glob
|
|
46
|
+
is a warning; a flag whose block now has files is noted.
|
|
47
|
+
|
|
3
48
|
## 0.3.0
|
|
4
49
|
|
|
5
50
|
Kotlin and KMP presets now wire the characterization round-trip the
|
package/dist/presets/js.d.ts
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Probity rule-entry factory — plain JS/TS preset.
|
|
3
|
-
*
|
|
4
|
-
* Turns three of the agent-skills catalog's prose disciplines into
|
|
5
|
-
* hard PreToolUse gates via https://github.com/nizos/probity :
|
|
6
|
-
*
|
|
7
|
-
* test-driven-development → enforceTdd (built-in)
|
|
8
|
-
* ports-and-adapters → enforcePortsBoundary + forbidInternalModuleMocks
|
|
9
|
-
* + a deterministic import screen
|
|
10
|
-
* acceptance-testing → enforceAcceptanceLanguage
|
|
11
|
-
*
|
|
12
|
-
* `jsRuleEntries(options?)` reproduces exactly what the shipped
|
|
13
|
-
* `probity.config.ts` template wires by default — every option below
|
|
14
|
-
* defaults to that template's current value. A consuming project
|
|
15
|
-
* copies the thin template (which calls this factory) and overrides
|
|
16
|
-
* only the options its layout needs.
|
|
17
|
-
*/
|
|
18
1
|
import { type RuleEntry } from '@nizos/probity';
|
|
19
2
|
import type { Globs } from '../rules/scoping.js';
|
|
3
|
+
import { type DriverScope } from '../rules/spec-test-parity.js';
|
|
20
4
|
/**
|
|
21
5
|
* Deterministic first line of defense for the Dependency Rule: known
|
|
22
6
|
* framework/vendor/OS-I/O imports never belong in core code, so block
|
|
@@ -51,6 +35,40 @@ export type JsPresetOptions = {
|
|
|
51
35
|
commitSuccessPattern?: RegExp;
|
|
52
36
|
/** Your runner's failure summary line. */
|
|
53
37
|
commitFailurePattern?: RegExp;
|
|
38
|
+
/**
|
|
39
|
+
* Absolute path to the specs directory (e.g. `docs/specs`). OFF by
|
|
40
|
+
* default — no behavior change until set. Setting it switches on
|
|
41
|
+
* spec-to-test traceability, the same set the KMP/Kotlin presets
|
|
42
|
+
* wire: `requireSpecBackedAcceptanceTest` on `acceptanceTestGlobs`
|
|
43
|
+
* (deterministic, write-time, ordered before every AI-validated
|
|
44
|
+
* rule below), `surfaceScenarioLinkBreakage` on `specGlobs`, and
|
|
45
|
+
* `enforceSpecTestParity` as a commit gate. `surfaceGlossaryTermBreakage`
|
|
46
|
+
* on `glossaryPath` is added too, once that option is also set.
|
|
47
|
+
*/
|
|
48
|
+
specsDir?: string;
|
|
49
|
+
/** Test-case files that must carry a spec-backed Covers: tag. */
|
|
50
|
+
acceptanceTestGlobs?: Globs;
|
|
51
|
+
/** Absolute paths to scan for acceptance tests (Covers: tags);
|
|
52
|
+
* defaults to `[process.cwd()]` — Probity hook processes are
|
|
53
|
+
* anchored to the project root. */
|
|
54
|
+
testRoots?: string[];
|
|
55
|
+
/** Which files count as acceptance tests when scanning for Covers:
|
|
56
|
+
* tags (default: any file under an `acceptance/` directory). */
|
|
57
|
+
testFilePattern?: RegExp;
|
|
58
|
+
/** What counts as a test-case declaration for the write-time gate
|
|
59
|
+
* (default: {@link JS_TEST_DECLARATION} — vitest/jest/mocha
|
|
60
|
+
* `it(`/`test(` and their `.only`/`.skip`/`.each(...)( `/
|
|
61
|
+
* `.concurrent` variants). */
|
|
62
|
+
testDeclarationPattern?: RegExp;
|
|
63
|
+
/** Per-scenario driver mapping; see {@link DriverScope}. */
|
|
64
|
+
driverScopes?: DriverScope[];
|
|
65
|
+
/** Scope names every scenario must satisfy even untagged. */
|
|
66
|
+
defaultScopes?: string[];
|
|
67
|
+
/** Incremental-adoption baseline path for the commit-time parity gate. */
|
|
68
|
+
parityBaselinePath?: string;
|
|
69
|
+
/** Globs excluded (as `!`-negations) from every files-scoped block —
|
|
70
|
+
* spikes and build output by default. Pass `[]` to disable. */
|
|
71
|
+
excludeGlobs?: string[];
|
|
54
72
|
};
|
|
55
73
|
/**
|
|
56
74
|
* Rule entries for a plain JS/TS project. Probity stops at the first
|
package/dist/presets/js.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../presets/js.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../presets/js.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAajF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhD,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAA;AAGrC;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAC2O,CAAA;AAEpR,MAAM,MAAM,eAAe,GAAG;IAC5B;qDACiD;IACjD,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;+CAC2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;2BACuB;IACvB,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB;wDACoD;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB;sDACkD;IAClD,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB;oBACgB;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAC3B;;wCAEoC;IACpC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB;qEACiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;mCAG+B;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,eAAoB,GAAG,SAAS,EAAE,CAgKxE"}
|
package/dist/presets/js.js
CHANGED
|
@@ -15,10 +15,14 @@
|
|
|
15
15
|
* copies the thin template (which calls this factory) and overrides
|
|
16
16
|
* only the options its layout needs.
|
|
17
17
|
*/
|
|
18
|
+
import { basename } from 'node:path';
|
|
18
19
|
import { enforceTdd, forbidContentPattern } from '@nizos/probity';
|
|
19
20
|
import { enforceAcceptanceLanguage } from '../rules/acceptance-language.js';
|
|
20
21
|
import { forbidNewAmbientEffects, JS_AMBIENT_EFFECT_PATTERNS, requireGreenTestRun, withJudgeFailureDiagnostics, } from '../rules/gates.js';
|
|
21
22
|
import { enforcePortsBoundary, forbidInternalModuleMocks, } from '../rules/ports-and-adapters.js';
|
|
23
|
+
import { withExcludeGlobs } from '../rules/scoping.js';
|
|
24
|
+
import { enforceSpecTestParity, JS_TEST_DECLARATION, requireSpecBackedAcceptanceTest, surfaceScenarioLinkBreakage, } from '../rules/spec-test-parity.js';
|
|
25
|
+
import { surfaceGlossaryTermBreakage } from '../rules/ubiquitous-language.js';
|
|
22
26
|
/**
|
|
23
27
|
* Deterministic first line of defense for the Dependency Rule: known
|
|
24
28
|
* framework/vendor/OS-I/O imports never belong in core code, so block
|
|
@@ -38,7 +42,8 @@ export function jsRuleEntries(options = {}) {
|
|
|
38
42
|
const mockGlobs = options.mockGlobs ?? ['**/*.test.*', '**/*.spec.*', 'test/**', 'tests/**'];
|
|
39
43
|
const tddGlobs = options.tddGlobs ?? ['src/**', 'test/**', 'tests/**'];
|
|
40
44
|
const specGlobs = options.specGlobs ?? ['specs/**', 'acceptance/**', '**/*.feature'];
|
|
41
|
-
|
|
45
|
+
const excludeGlobs = options.excludeGlobs ?? ['spikes/**', '**/build/**'];
|
|
46
|
+
const entries = [
|
|
42
47
|
// ── Boundaries: ports-and-adapters ──────────────────────────────
|
|
43
48
|
// Core purity. Point these globs at your core/domain/use-case
|
|
44
49
|
// code only — adapters and composition roots import vendors by
|
|
@@ -71,42 +76,109 @@ export function jsRuleEntries(options = {}) {
|
|
|
71
76
|
files: mockGlobs,
|
|
72
77
|
rules: [forbidInternalModuleMocks()],
|
|
73
78
|
},
|
|
74
|
-
// ── Inner loop: test-driven-development ─────────────────────────
|
|
75
|
-
// Red → Green → Refactor on all production and test code. This is
|
|
76
|
-
// the expensive rule (AI call per matching write) — scope it to
|
|
77
|
-
// the code you actually TDD. Listed AFTER the deterministic
|
|
78
|
-
// screens above: Probity stops at the first violation, so a
|
|
79
|
-
// vendor import in core code is rejected free by the import
|
|
80
|
-
// screen, never after a model call.
|
|
81
|
-
{
|
|
82
|
-
files: tddGlobs,
|
|
83
|
-
rules: [withJudgeFailureDiagnostics(enforceTdd())],
|
|
84
|
-
},
|
|
85
|
-
// ── Outer loop: acceptance-testing ──────────────────────────────
|
|
86
|
-
// The Language Test on the spec layer only. Do NOT widen this to
|
|
87
|
-
// DSL or protocol-driver files — those layers are supposed to
|
|
88
|
-
// contain the mechanics this rule blocks. To hold specs to your
|
|
89
|
-
// glossary (ubiquitous-language skill), pass glossaryPath as an
|
|
90
|
-
// absolute path, e.g.:
|
|
91
|
-
// enforceAcceptanceLanguage({
|
|
92
|
-
// glossaryPath: fileURLToPath(new URL('./docs/GLOSSARY.md', import.meta.url)),
|
|
93
|
-
// })
|
|
94
|
-
{
|
|
95
|
-
files: specGlobs,
|
|
96
|
-
rules: [enforceAcceptanceLanguage({ glossaryPath: options.glossaryPath })],
|
|
97
|
-
},
|
|
98
|
-
// ── Ship gate ────────────────────────────────────────────────────
|
|
99
|
-
// No commit on an unverified tree — and the recorded run must be
|
|
100
|
-
// GREEN. Probity's built-in requireCommand only checks that a test
|
|
101
|
-
// command ran after the last write; a run whose output was all
|
|
102
|
-
// failures would still unlock the commit. Match your real test
|
|
103
|
-
// command and your runner's summary lines (defaults below cover
|
|
104
|
-
// vitest and jest).
|
|
105
|
-
requireGreenTestRun({
|
|
106
|
-
command: options.commitCommand ?? /npm (run )?test|vitest|jest/,
|
|
107
|
-
successPattern: options.commitSuccessPattern ?? /Test Files\s+\d+ passed|Tests:\s+.*\b\d+ passed/,
|
|
108
|
-
failurePattern: options.commitFailurePattern ?? /\d+ failed|FAIL\s/,
|
|
109
|
-
}),
|
|
110
79
|
];
|
|
80
|
+
// Spec-to-test traceability (issue #18): OFF by default, so a
|
|
81
|
+
// project that hasn't opted in sees no behavior change. Setting
|
|
82
|
+
// `specsDir` wires the same set the KMP preset wires — deterministic
|
|
83
|
+
// rules, ordered before the AI-validated TDD/Language Test rules
|
|
84
|
+
// below (Probity stops at the first violation, so a tagless
|
|
85
|
+
// acceptance test is rejected free, never after a model call).
|
|
86
|
+
if (options.specsDir) {
|
|
87
|
+
const specsDir = options.specsDir;
|
|
88
|
+
const acceptanceTestGlobs = options.acceptanceTestGlobs ?? [
|
|
89
|
+
'acceptance/**/*.test.*',
|
|
90
|
+
'acceptance/**/*.spec.*',
|
|
91
|
+
];
|
|
92
|
+
const testRoots = options.testRoots ?? [process.cwd()];
|
|
93
|
+
// Spec↔test traceability. Editing a spec must not silently break
|
|
94
|
+
// the tests that claim its scenarios: removing or renaming a
|
|
95
|
+
// `## Scenario:` heading still covered by a test blocks with the
|
|
96
|
+
// list of affected tests, so the rename updates its Covers: tags
|
|
97
|
+
// in the same change.
|
|
98
|
+
entries.push({
|
|
99
|
+
files: specGlobs,
|
|
100
|
+
rules: [
|
|
101
|
+
surfaceScenarioLinkBreakage({ testRoots, testFilePattern: options.testFilePattern }),
|
|
102
|
+
],
|
|
103
|
+
});
|
|
104
|
+
// Spec-first, at write time: adding a new test case (it(/test(,
|
|
105
|
+
// see JS_TEST_DECLARATION) requires a new Covers: tag resolving to
|
|
106
|
+
// a scenario that already exists in specsDir — the feature file is
|
|
107
|
+
// written before the test that claims it.
|
|
108
|
+
entries.push({
|
|
109
|
+
files: acceptanceTestGlobs,
|
|
110
|
+
rules: [
|
|
111
|
+
requireSpecBackedAcceptanceTest({
|
|
112
|
+
specsDir,
|
|
113
|
+
testDeclarationPattern: options.testDeclarationPattern ?? JS_TEST_DECLARATION,
|
|
114
|
+
}),
|
|
115
|
+
],
|
|
116
|
+
});
|
|
117
|
+
if (options.glossaryPath) {
|
|
118
|
+
// Ubiquitous-language drift: renaming or removing a glossary
|
|
119
|
+
// term that specs, tests, or code still use blocks the glossary
|
|
120
|
+
// edit with the list of users. The JS preset has no `root` to
|
|
121
|
+
// anchor a relative glob against (unlike the KMP/Kotlin
|
|
122
|
+
// presets), so this scopes by basename anywhere in the tree —
|
|
123
|
+
// broader than an exact path, but safe regardless of where
|
|
124
|
+
// `glossaryPath` (an absolute path) points.
|
|
125
|
+
entries.push({
|
|
126
|
+
files: [`**/${basename(options.glossaryPath)}`],
|
|
127
|
+
rules: [surfaceGlossaryTermBreakage({ searchRoots: testRoots })],
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// ── Inner loop: test-driven-development ─────────────────────────
|
|
132
|
+
// Red → Green → Refactor on all production and test code. This is
|
|
133
|
+
// the expensive rule (AI call per matching write) — scope it to
|
|
134
|
+
// the code you actually TDD. Listed AFTER the deterministic
|
|
135
|
+
// screens above: Probity stops at the first violation, so a
|
|
136
|
+
// vendor import in core code is rejected free by the import
|
|
137
|
+
// screen, never after a model call.
|
|
138
|
+
entries.push({
|
|
139
|
+
files: tddGlobs,
|
|
140
|
+
rules: [withJudgeFailureDiagnostics(enforceTdd())],
|
|
141
|
+
});
|
|
142
|
+
// ── Outer loop: acceptance-testing ──────────────────────────────
|
|
143
|
+
// The Language Test on the spec layer only. Do NOT widen this to
|
|
144
|
+
// DSL or protocol-driver files — those layers are supposed to
|
|
145
|
+
// contain the mechanics this rule blocks. To hold specs to your
|
|
146
|
+
// glossary (ubiquitous-language skill), pass glossaryPath as an
|
|
147
|
+
// absolute path, e.g.:
|
|
148
|
+
// enforceAcceptanceLanguage({
|
|
149
|
+
// glossaryPath: fileURLToPath(new URL('./docs/GLOSSARY.md', import.meta.url)),
|
|
150
|
+
// })
|
|
151
|
+
entries.push({
|
|
152
|
+
files: specGlobs,
|
|
153
|
+
rules: [enforceAcceptanceLanguage({ glossaryPath: options.glossaryPath })],
|
|
154
|
+
});
|
|
155
|
+
if (options.specsDir) {
|
|
156
|
+
// ── Ship gate: spec↔test parity ─────────────────────────────────
|
|
157
|
+
// Definition of done, made mechanical: every non-wip scenario in
|
|
158
|
+
// specsDir is claimed by an acceptance test (Covers: tag), and
|
|
159
|
+
// every tag resolves to a real scenario. Mark in-progress specs
|
|
160
|
+
// `## Scenario (wip):`.
|
|
161
|
+
entries.push(enforceSpecTestParity({
|
|
162
|
+
specsDir: options.specsDir,
|
|
163
|
+
testRoots: options.testRoots ?? [process.cwd()],
|
|
164
|
+
testFilePattern: options.testFilePattern,
|
|
165
|
+
baselinePath: options.parityBaselinePath,
|
|
166
|
+
driverScopes: options.driverScopes,
|
|
167
|
+
defaultScopes: options.defaultScopes,
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
170
|
+
// ── Ship gate: green tests ──────────────────────────────────────
|
|
171
|
+
// No commit on an unverified tree — and the recorded run must be
|
|
172
|
+
// GREEN. Probity's built-in requireCommand only checks that a test
|
|
173
|
+
// command ran after the last write; a run whose output was all
|
|
174
|
+
// failures would still unlock the commit. Match your real test
|
|
175
|
+
// command and your runner's summary lines (defaults below cover
|
|
176
|
+
// vitest and jest).
|
|
177
|
+
entries.push(requireGreenTestRun({
|
|
178
|
+
command: options.commitCommand ?? /npm (run )?test|vitest|jest/,
|
|
179
|
+
successPattern: options.commitSuccessPattern ?? /Test Files\s+\d+ passed|Tests:\s+.*\b\d+ passed/,
|
|
180
|
+
failurePattern: options.commitFailurePattern ?? /\d+ failed|FAIL\s/,
|
|
181
|
+
}));
|
|
182
|
+
return withExcludeGlobs(entries, excludeGlobs);
|
|
111
183
|
}
|
|
112
184
|
//# sourceMappingURL=js.js.map
|
package/dist/presets/js.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../presets/js.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAkB,MAAM,gBAAgB,CAAA;AAEjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../presets/js.ts"],"names":[],"mappings":"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"}
|
package/dist/presets/kmp.d.ts
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
import { type RuleEntry } from '@nizos/probity';
|
|
2
|
+
import type { Globs } from '../rules/scoping.js';
|
|
2
3
|
import { type DriverScope } from '../rules/spec-test-parity.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options for {@link kmpRuleEntries}. A superset of the factory's
|
|
6
|
+
* original `{ driverScopes, defaultScopes }` second parameter, so
|
|
7
|
+
* existing callers passing that shape unchanged keep working. Every
|
|
8
|
+
* option defaults to the reference KMP layout's current hardcoded
|
|
9
|
+
* value — a consuming project overrides only what its layout needs.
|
|
10
|
+
*/
|
|
11
|
+
export type KmpPresetOptions = {
|
|
12
|
+
/** Absolute path to the specs directory. */
|
|
13
|
+
specsDir?: string;
|
|
14
|
+
/** Spec files the traceability rules scan/scope to (Markdown
|
|
15
|
+
* `*.feature.md` by default; add `**\/*.feature` for Gherkin). */
|
|
16
|
+
specGlobs?: Globs;
|
|
17
|
+
/** Absolute path to the ubiquitous-language glossary. */
|
|
18
|
+
glossaryPath?: string;
|
|
19
|
+
/** Core purity scope — domain/port/usecase/presentation packages in
|
|
20
|
+
* commonMain. Adapter, DI, and Compose ui packages import vendors
|
|
21
|
+
* by design and must NOT match here. */
|
|
22
|
+
coreGlobs?: Globs;
|
|
23
|
+
/** Test-case files that must carry a spec-backed Covers: tag. */
|
|
24
|
+
acceptanceTestGlobs?: Globs;
|
|
25
|
+
/** Absolute paths to scan for acceptance tests (Covers: tags). */
|
|
26
|
+
testRoots?: string[];
|
|
27
|
+
/** Which files count as acceptance tests when scanning for Covers:
|
|
28
|
+
* tags (default: any file under an `acceptance/` directory). */
|
|
29
|
+
testFilePattern?: RegExp;
|
|
30
|
+
/** What counts as a test-case declaration for the write-time gate
|
|
31
|
+
* (default: Kotlin/Java `@Test` or Swift `func test…`). */
|
|
32
|
+
testDeclarationPattern?: RegExp;
|
|
33
|
+
/** Per-scenario driver mapping; see {@link DriverScope}. */
|
|
34
|
+
driverScopes?: DriverScope[];
|
|
35
|
+
/** Scope names every scenario must satisfy even untagged. */
|
|
36
|
+
defaultScopes?: string[];
|
|
37
|
+
/** Incremental-adoption baseline path for the commit-time parity gate. */
|
|
38
|
+
baselinePath?: string;
|
|
39
|
+
/** Globs excluded (as `!`-negations) from every files-scoped block —
|
|
40
|
+
* spikes and build output by default. Pass `[]` to disable. */
|
|
41
|
+
excludeGlobs?: string[];
|
|
42
|
+
/** Files the acceptance Language Test applies to: the spec layer
|
|
43
|
+
* and acceptance test cases, never drivers or DSL classes (default:
|
|
44
|
+
* `specGlobs` plus `**\/acceptance/**` minus `*Robot.kt`, `*Dsl.kt`,
|
|
45
|
+
* and `*Driver.kt`). */
|
|
46
|
+
acceptanceLanguageGlobs?: Globs;
|
|
47
|
+
/** Names your canonical ambient-effect port(s) in the core
|
|
48
|
+
* clock/randomness/env screen's deny text (default: function-typed
|
|
49
|
+
* providers such as `nowEpochMillis: () -> Long`). */
|
|
50
|
+
seamHint?: string;
|
|
51
|
+
/** Names your telemetry convention for the adapter-observability
|
|
52
|
+
* judge — how a boundary event is recorded in this codebase
|
|
53
|
+
* (default: a :foundation `Logger.event` or port-tap convention). */
|
|
54
|
+
conventionHint?: string;
|
|
55
|
+
};
|
|
3
56
|
/**
|
|
4
57
|
* The rule entries, as a factory over the project root. Probity only
|
|
5
58
|
* reads the default export below; the factory exists so tooling can
|
|
@@ -13,15 +66,12 @@ import { type DriverScope } from '../rules/spec-test-parity.js';
|
|
|
13
66
|
* `loadConfig` anchors them against this file's directory at load
|
|
14
67
|
* time, and the tooling replicates that via `rules/scoping.ts`.
|
|
15
68
|
*
|
|
16
|
-
* `
|
|
17
|
-
*
|
|
69
|
+
* `options.driverScopes`/`options.defaultScopes` optionally switch on
|
|
70
|
+
* the per-scenario driver mapping on the commit-time parity gate —
|
|
18
71
|
* projects normally enable it by uncommenting the block in the
|
|
19
|
-
* `enforceSpecTestParity` call below; the
|
|
20
|
-
*
|
|
72
|
+
* `enforceSpecTestParity` call below; the workflow eval passes them
|
|
73
|
+
* directly so it can exercise the scope checks without changing the
|
|
21
74
|
* template's default-off posture.
|
|
22
75
|
*/
|
|
23
|
-
export declare function kmpRuleEntries(root: string,
|
|
24
|
-
driverScopes?: DriverScope[];
|
|
25
|
-
defaultScopes?: string[];
|
|
26
|
-
}): RuleEntry[];
|
|
76
|
+
export declare function kmpRuleEntries(root: string, options?: KmpPresetOptions): RuleEntry[];
|
|
27
77
|
//# sourceMappingURL=kmp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kmp.d.ts","sourceRoot":"","sources":["../../presets/kmp.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"kmp.d.ts","sourceRoot":"","sources":["../../presets/kmp.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAIrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAOhD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAA;AAsBrC;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;uEACmE;IACnE,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;6CAEyC;IACzC,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAC3B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB;qEACiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;gEAC4D;IAC5D,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;6BAGyB;IACzB,uBAAuB,CAAC,EAAE,KAAK,CAAA;IAC/B;;2DAEuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;0EAEsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,SAAS,EAAE,CA8QxF"}
|
package/dist/presets/kmp.js
CHANGED
|
@@ -16,10 +16,11 @@
|
|
|
16
16
|
* package next to gradlew. The TDD fast-path parser ships as optional
|
|
17
17
|
* dependencies of the rule package.
|
|
18
18
|
*/
|
|
19
|
-
import { join } from 'node:path';
|
|
19
|
+
import { join, relative, sep } from 'node:path';
|
|
20
20
|
import { forbidContentPattern } from '@nizos/probity';
|
|
21
21
|
import { enforceKotlinTdd } from '../internal/kotlin-tdd.js';
|
|
22
22
|
import { enforceAcceptanceLanguage, withAcceptanceLanguageFastPath, } from '../rules/acceptance-language.js';
|
|
23
|
+
import { withExcludeGlobs } from '../rules/scoping.js';
|
|
23
24
|
import { enforceSpecTestParity, requireSpecBackedAcceptanceTest, surfaceScenarioLinkBreakage, } from '../rules/spec-test-parity.js';
|
|
24
25
|
import { surfaceGlossaryTermBreakage } from '../rules/ubiquitous-language.js';
|
|
25
26
|
import { enforceCharacterizationResolution, enforceProbeReversion, forbidNewAmbientEffects, GRADLE_TEST_COMMAND, KOTLIN_BOUNDARY_ADDENDUM, KOTLIN_INFRASTRUCTURE_IMPORTS, KOTLIN_TEST_SOURCE_PATTERN, MOCKING_LIBRARY_IMPORTS, requireGreenTestRun, withCharacterizationTest, withKotlinFastPath, withMutationProbe, withTelemetryFastPath, } from '../rules/kotlin.js';
|
|
@@ -37,22 +38,34 @@ import { enforceAdapterObservability, enforcePortsBoundary, } from '../rules/por
|
|
|
37
38
|
* `loadConfig` anchors them against this file's directory at load
|
|
38
39
|
* time, and the tooling replicates that via `rules/scoping.ts`.
|
|
39
40
|
*
|
|
40
|
-
* `
|
|
41
|
-
*
|
|
41
|
+
* `options.driverScopes`/`options.defaultScopes` optionally switch on
|
|
42
|
+
* the per-scenario driver mapping on the commit-time parity gate —
|
|
42
43
|
* projects normally enable it by uncommenting the block in the
|
|
43
|
-
* `enforceSpecTestParity` call below; the
|
|
44
|
-
*
|
|
44
|
+
* `enforceSpecTestParity` call below; the workflow eval passes them
|
|
45
|
+
* directly so it can exercise the scope checks without changing the
|
|
45
46
|
* template's default-off posture.
|
|
46
47
|
*/
|
|
47
|
-
export function kmpRuleEntries(root,
|
|
48
|
+
export function kmpRuleEntries(root, options = {}) {
|
|
48
49
|
// Ubiquitous-language glossary (copy GLOSSARY.template.md here).
|
|
49
50
|
// The glossary-aware rules degrade gracefully while the file
|
|
50
51
|
// doesn't exist yet — wiring it up front costs nothing.
|
|
51
|
-
const glossary = join(root, 'docs/GLOSSARY.md');
|
|
52
|
+
const glossary = options.glossaryPath ?? join(root, 'docs/GLOSSARY.md');
|
|
53
|
+
// The glossary-drift block's files scope must track a custom
|
|
54
|
+
// glossaryPath, not just the default location.
|
|
55
|
+
const glossaryGlob = relative(root, glossary).split(sep).join('/');
|
|
56
|
+
const specsDir = options.specsDir ?? join(root, 'docs/specs');
|
|
57
|
+
const specGlobs = options.specGlobs ?? ['docs/specs/**/*.feature.md'];
|
|
58
|
+
const acceptanceTestGlobs = options.acceptanceTestGlobs ?? [
|
|
59
|
+
'**/acceptance/**/*Spec.kt',
|
|
60
|
+
'**/acceptance/**/*Test.kt',
|
|
61
|
+
];
|
|
62
|
+
const testRoots = options.testRoots ?? [root];
|
|
63
|
+
const baselinePath = options.baselinePath ?? join(root, 'docs/specs/.parity-baseline');
|
|
64
|
+
const excludeGlobs = options.excludeGlobs ?? ['spikes/**', '**/build/**'];
|
|
52
65
|
// Core purity scope — the inside of the hexagon: domain, ports,
|
|
53
66
|
// use cases, and MVI presentation in commonMain. Adapter, DI, and
|
|
54
67
|
// Compose ui packages import vendors by design — excluded.
|
|
55
|
-
const
|
|
68
|
+
const coreGlobs = options.coreGlobs ?? [
|
|
56
69
|
'**/src/commonMain/**/domain/**',
|
|
57
70
|
'**/src/commonMain/**/port/**',
|
|
58
71
|
'**/src/commonMain/**/usecase/**',
|
|
@@ -63,12 +76,12 @@ export function kmpRuleEntries(root, parity) {
|
|
|
63
76
|
// listed before any AI-validated rule (a model call per matching
|
|
64
77
|
// write). A write with a vendor import in core code must be
|
|
65
78
|
// rejected by the free import screen, not after a TDD model call.
|
|
66
|
-
|
|
79
|
+
const entries = [
|
|
67
80
|
// ── Deterministic wall ───────────────────────────────────────────
|
|
68
81
|
// Core import/effect screens. The import screen also catches Koin
|
|
69
82
|
// here: DI stays at the composition root, never in domain code.
|
|
70
83
|
{
|
|
71
|
-
files:
|
|
84
|
+
files: coreGlobs,
|
|
72
85
|
rules: [
|
|
73
86
|
forbidContentPattern({
|
|
74
87
|
match: KOTLIN_INFRASTRUCTURE_IMPORTS,
|
|
@@ -80,9 +93,10 @@ export function kmpRuleEntries(root, parity) {
|
|
|
80
93
|
'ports-and-adapters skill).',
|
|
81
94
|
}),
|
|
82
95
|
forbidNewAmbientEffects({
|
|
83
|
-
seamHint:
|
|
84
|
-
'
|
|
85
|
-
|
|
96
|
+
seamHint: options.seamHint ??
|
|
97
|
+
'This codebase injects function-typed providers (e.g. ' +
|
|
98
|
+
'nowEpochMillis: () -> Long) with real defaults supplied ' +
|
|
99
|
+
'only in platform adapters or DI modules',
|
|
86
100
|
}),
|
|
87
101
|
],
|
|
88
102
|
},
|
|
@@ -106,25 +120,30 @@ export function kmpRuleEntries(root, parity) {
|
|
|
106
120
|
// list of affected tests, so the rename updates its Covers: tags
|
|
107
121
|
// in the same change.
|
|
108
122
|
{
|
|
109
|
-
files:
|
|
110
|
-
rules: [
|
|
123
|
+
files: specGlobs,
|
|
124
|
+
rules: [
|
|
125
|
+
surfaceScenarioLinkBreakage({ testRoots, testFilePattern: options.testFilePattern }),
|
|
126
|
+
],
|
|
111
127
|
},
|
|
112
128
|
// Spec-first, at write time: adding a new acceptance test case
|
|
113
129
|
// requires a new Covers: tag resolving to a scenario that already
|
|
114
|
-
// exists in
|
|
130
|
+
// exists in specsDir — the feature file is written before the
|
|
115
131
|
// test that claims it. Scoped to the test-case layer only
|
|
116
132
|
// (*Spec.kt); drivers/DSL/scenario bodies add no @Test functions.
|
|
117
133
|
{
|
|
118
|
-
files:
|
|
134
|
+
files: acceptanceTestGlobs,
|
|
119
135
|
rules: [
|
|
120
|
-
requireSpecBackedAcceptanceTest({
|
|
136
|
+
requireSpecBackedAcceptanceTest({
|
|
137
|
+
specsDir,
|
|
138
|
+
testDeclarationPattern: options.testDeclarationPattern,
|
|
139
|
+
}),
|
|
121
140
|
],
|
|
122
141
|
},
|
|
123
142
|
// Ubiquitous-language drift: renaming or removing a glossary term
|
|
124
143
|
// that specs, tests, or code still use blocks the glossary edit
|
|
125
144
|
// with the list of users.
|
|
126
145
|
{
|
|
127
|
-
files: [
|
|
146
|
+
files: [glossaryGlob],
|
|
128
147
|
rules: [surfaceGlossaryTermBreakage({ searchRoots: [root] })],
|
|
129
148
|
},
|
|
130
149
|
// ── AI-validated judgment layer ──────────────────────────────────
|
|
@@ -161,7 +180,7 @@ export function kmpRuleEntries(root, parity) {
|
|
|
161
180
|
// the import screen can't make — thin adapters, vendor types in
|
|
162
181
|
// port signatures, glossary-conflicting names.
|
|
163
182
|
{
|
|
164
|
-
files:
|
|
183
|
+
files: coreGlobs,
|
|
165
184
|
rules: [
|
|
166
185
|
enforcePortsBoundary({
|
|
167
186
|
instructions: (defaults) => defaults + KOTLIN_BOUNDARY_ADDENDUM,
|
|
@@ -177,10 +196,11 @@ export function kmpRuleEntries(root, parity) {
|
|
|
177
196
|
files: ['**/src/*Main/kotlin/**/adapter/**'],
|
|
178
197
|
rules: [
|
|
179
198
|
withTelemetryFastPath(enforceAdapterObservability({
|
|
180
|
-
conventionHint:
|
|
181
|
-
'
|
|
182
|
-
|
|
183
|
-
|
|
199
|
+
conventionHint: options.conventionHint ??
|
|
200
|
+
'This codebase uses structured Logger.event(tag, event, ' +
|
|
201
|
+
'level, fields) from :foundation (one greppable line: ' +
|
|
202
|
+
'event=<name> k=v), and/or a recording port-tap decorator ' +
|
|
203
|
+
'wired at the Koin composition root.',
|
|
184
204
|
})),
|
|
185
205
|
],
|
|
186
206
|
},
|
|
@@ -194,8 +214,8 @@ export function kmpRuleEntries(root, parity) {
|
|
|
194
214
|
// and stay INCLUDED by design: they must read as pure domain
|
|
195
215
|
// language.
|
|
196
216
|
{
|
|
197
|
-
files: [
|
|
198
|
-
|
|
217
|
+
files: options.acceptanceLanguageGlobs ?? [
|
|
218
|
+
...specGlobs,
|
|
199
219
|
'**/acceptance/**',
|
|
200
220
|
'!**/*Robot.kt',
|
|
201
221
|
'!**/*Dsl.kt',
|
|
@@ -213,7 +233,7 @@ export function kmpRuleEntries(root, parity) {
|
|
|
213
233
|
},
|
|
214
234
|
// ── Ship gates ───────────────────────────────────────────────────
|
|
215
235
|
// Definition of done, made mechanical: every non-wip scenario in
|
|
216
|
-
//
|
|
236
|
+
// specsDir is claimed by an acceptance test (Covers: tag), and
|
|
217
237
|
// every tag resolves to a real scenario. Mark in-progress specs
|
|
218
238
|
// `## Scenario (wip):`. CI mirror for human commits:
|
|
219
239
|
// scripts/spec-parity.mjs.
|
|
@@ -232,18 +252,21 @@ export function kmpRuleEntries(root, parity) {
|
|
|
232
252
|
// path matches that scope. Tags are floors, not ceilings; with
|
|
233
253
|
// shared scenario bodies (*Scenarios.kt) the extra covering test
|
|
234
254
|
// is a thin spec class calling the existing body. CALIBRATE THE
|
|
235
|
-
// PATTERNS TO YOUR LAYOUT before
|
|
236
|
-
// zero files makes every tagged scenario fail,
|
|
255
|
+
// PATTERNS TO YOUR LAYOUT before setting `driverScopes` — a
|
|
256
|
+
// pattern matching zero files makes every tagged scenario fail,
|
|
257
|
+
// loudly. Example:
|
|
258
|
+
// driverScopes: [
|
|
259
|
+
// { name: 'view-model', filePattern: /[/\\]acceptance[/\\]viewmodel[/\\]/ },
|
|
260
|
+
// { name: 'system', filePattern: /[/\\]acceptance[/\\]ui[/\\]/ },
|
|
261
|
+
// ],
|
|
262
|
+
// defaultScopes: ['view-model'],
|
|
237
263
|
enforceSpecTestParity({
|
|
238
|
-
specsDir
|
|
239
|
-
testRoots
|
|
240
|
-
baselinePath
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
// ],
|
|
245
|
-
// defaultScopes: ['view-model'],
|
|
246
|
-
...parity,
|
|
264
|
+
specsDir,
|
|
265
|
+
testRoots,
|
|
266
|
+
baselinePath,
|
|
267
|
+
testFilePattern: options.testFilePattern,
|
|
268
|
+
driverScopes: options.driverScopes,
|
|
269
|
+
defaultScopes: options.defaultScopes,
|
|
247
270
|
}),
|
|
248
271
|
// The commit half of the mutation-probe round-trip: no commit
|
|
249
272
|
// while a `probity: mutation-probe` marker is still on disk —
|
|
@@ -259,5 +282,6 @@ export function kmpRuleEntries(root, parity) {
|
|
|
259
282
|
// SUCCESSFUL or a trustworthy Kiro zero status.
|
|
260
283
|
requireGreenTestRun({ command: GRADLE_TEST_COMMAND }),
|
|
261
284
|
];
|
|
285
|
+
return withExcludeGlobs(entries, excludeGlobs);
|
|
262
286
|
}
|
|
263
287
|
//# sourceMappingURL=kmp.js.map
|
package/dist/presets/kmp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kmp.js","sourceRoot":"","sources":["../../presets/kmp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"kmp.js","sourceRoot":"","sources":["../../presets/kmp.ts"],"names":[],"mappings":"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"}
|
package/dist/presets/kotlin.d.ts
CHANGED
|
@@ -13,6 +13,11 @@ export type KotlinPresetOptions = {
|
|
|
13
13
|
infrastructureImports?: RegExp;
|
|
14
14
|
/** Point at the project's canonical ambient-effect port(s). */
|
|
15
15
|
seamHint?: string;
|
|
16
|
+
/** Names your telemetry convention for the adapter-observability
|
|
17
|
+
* judge — how a boundary event is recorded in this codebase
|
|
18
|
+
* (default: the judge's generic structured-event/port-tap/span
|
|
19
|
+
* guidance). */
|
|
20
|
+
conventionHint?: string;
|
|
16
21
|
/** Test source sets where static/object/constructor mocking is
|
|
17
22
|
* forbidden — ports are the only test seam. */
|
|
18
23
|
staticMockGlobs?: Globs;
|
|
@@ -27,6 +32,9 @@ export type KotlinPresetOptions = {
|
|
|
27
32
|
adapterGlobs?: Globs;
|
|
28
33
|
/** The real Gradle test task your commit gate should look for. */
|
|
29
34
|
commitCommand?: RegExp;
|
|
35
|
+
/** Globs excluded (as `!`-negations) from every files-scoped block —
|
|
36
|
+
* spikes and build output by default. Pass `[]` to disable. */
|
|
37
|
+
excludeGlobs?: string[];
|
|
30
38
|
};
|
|
31
39
|
/**
|
|
32
40
|
* Rule entries for a Kotlin/JVM/Android project, as a factory over the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AA4BrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AA4BrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAIhD,MAAM,MAAM,mBAAmB,GAAG;IAChC;;iDAE6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;kEAE8D;IAC9D,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,uEAAuE;IACvE,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;qBAGiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;oDACgD;IAChD,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAC3B;sCACkC;IAClC,uBAAuB,CAAC,EAAE,KAAK,CAAA;IAC/B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,oEAAoE;IACpE,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,SAAS,EAAE,CAmL9F"}
|
package/dist/presets/kotlin.js
CHANGED
|
@@ -20,6 +20,7 @@ import { enforceAcceptanceLanguage, withAcceptanceLanguageFastPath, } from '../r
|
|
|
20
20
|
import { enforceCharacterizationResolution, enforceProbeReversion, forbidNewAmbientEffects, forbidStaticMocks, GRADLE_TEST_COMMAND, KOTLIN_BOUNDARY_ADDENDUM, KOTLIN_INFRASTRUCTURE_IMPORTS, KOTLIN_TEST_SOURCE_PATTERN, requireGreenTestRun, withCharacterizationTest, withKotlinFastPath, withMutationProbe, withTelemetryFastPath, } from '../rules/kotlin.js';
|
|
21
21
|
import { enforceAdapterObservability, enforcePortsBoundary, } from '../rules/ports-and-adapters.js';
|
|
22
22
|
import { requireSpecBackedAcceptanceTest } from '../rules/spec-test-parity.js';
|
|
23
|
+
import { withExcludeGlobs } from '../rules/scoping.js';
|
|
23
24
|
import { surfaceGlossaryTermBreakage } from '../rules/ubiquitous-language.js';
|
|
24
25
|
/**
|
|
25
26
|
* Rule entries for a Kotlin/JVM/Android project, as a factory over the
|
|
@@ -60,7 +61,8 @@ export function kotlinRuleEntries(root, options = {}) {
|
|
|
60
61
|
'**/src/main/**/adapters/**',
|
|
61
62
|
'**/src/main/**/data/**',
|
|
62
63
|
];
|
|
63
|
-
|
|
64
|
+
const excludeGlobs = options.excludeGlobs ?? ['spikes/**', '**/build/**'];
|
|
65
|
+
const entries = [
|
|
64
66
|
// ── Deterministic wall ───────────────────────────────────────────
|
|
65
67
|
// Core import/effect screens.
|
|
66
68
|
{
|
|
@@ -148,7 +150,9 @@ export function kotlinRuleEntries(root, options = {}) {
|
|
|
148
150
|
// packages. Delta-based — legacy paths migrate incrementally.
|
|
149
151
|
{
|
|
150
152
|
files: adapterGlobs,
|
|
151
|
-
rules: [
|
|
153
|
+
rules: [
|
|
154
|
+
withTelemetryFastPath(enforceAdapterObservability({ conventionHint: options.conventionHint })),
|
|
155
|
+
],
|
|
152
156
|
},
|
|
153
157
|
// Outer loop: acceptance-testing. The Language Test on the spec
|
|
154
158
|
// layer only. Point at wherever your executable specifications
|
|
@@ -177,5 +181,6 @@ export function kotlinRuleEntries(root, options = {}) {
|
|
|
177
181
|
// must carry BUILD SUCCESSFUL or a trustworthy Kiro zero status.
|
|
178
182
|
requireGreenTestRun({ command: options.commitCommand ?? GRADLE_TEST_COMMAND }),
|
|
179
183
|
];
|
|
184
|
+
return withExcludeGlobs(entries, excludeGlobs);
|
|
180
185
|
}
|
|
181
186
|
//# sourceMappingURL=kotlin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,gBAAgB,CAAA;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,iCAAiC,EACjC,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,6BAA6B,EAC7B,0BAA0B,EAC1B,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAA;AAE9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../presets/kotlin.ts"],"names":[],"mappings":"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"}
|
package/dist/rules/scoping.d.ts
CHANGED
|
@@ -65,4 +65,14 @@ export declare function anchorGlob(glob: string, root: string): string;
|
|
|
65
65
|
* regardless of where the session is rooted. Flat rules pass through.
|
|
66
66
|
*/
|
|
67
67
|
export declare function anchorEntries(entries: readonly RuleEntry[], root: string): RuleEntry[];
|
|
68
|
+
/**
|
|
69
|
+
* Appends `!`-negations for `excludeGlobs` to every `{ files, rules }`
|
|
70
|
+
* block's `files` list, so a preset's exclusion option (e.g. keeping
|
|
71
|
+
* `spikes/**` or `**\/build/**` out of TDD/boundary scope) applies
|
|
72
|
+
* uniformly without hand-editing each block. Flat rules (command
|
|
73
|
+
* actions carry no `files` scope) pass through untouched, and an
|
|
74
|
+
* empty `excludeGlobs` list is a no-op — the "disable it" escape
|
|
75
|
+
* hatch a preset option exposes by accepting `[]`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function withExcludeGlobs(entries: readonly RuleEntry[], excludeGlobs: readonly string[]): RuleEntry[];
|
|
68
78
|
//# sourceMappingURL=scoping.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoping.d.ts","sourceRoot":"","sources":["../../rules/scoping.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,SAAS,CAEhE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAEnD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAW3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAIT;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,IAAI,EAAE,MAAM,GACX,SAAS,EAAE,CAMb"}
|
|
1
|
+
{"version":3,"file":"scoping.d.ts","sourceRoot":"","sources":["../../rules/scoping.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,SAAS,CAEhE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAEnD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAW3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAIT;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,IAAI,EAAE,MAAM,GACX,SAAS,EAAE,CAMb;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,SAAS,EAAE,CAQb"}
|
package/dist/rules/scoping.js
CHANGED
|
@@ -90,4 +90,24 @@ export function anchorEntries(entries, root) {
|
|
|
90
90
|
return { ...entry, files: [first, ...rest] };
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Appends `!`-negations for `excludeGlobs` to every `{ files, rules }`
|
|
95
|
+
* block's `files` list, so a preset's exclusion option (e.g. keeping
|
|
96
|
+
* `spikes/**` or `**\/build/**` out of TDD/boundary scope) applies
|
|
97
|
+
* uniformly without hand-editing each block. Flat rules (command
|
|
98
|
+
* actions carry no `files` scope) pass through untouched, and an
|
|
99
|
+
* empty `excludeGlobs` list is a no-op — the "disable it" escape
|
|
100
|
+
* hatch a preset option exposes by accepting `[]`.
|
|
101
|
+
*/
|
|
102
|
+
export function withExcludeGlobs(entries, excludeGlobs) {
|
|
103
|
+
if (excludeGlobs.length === 0)
|
|
104
|
+
return [...entries];
|
|
105
|
+
const negations = excludeGlobs.map((glob) => (glob.startsWith('!') ? glob : `!${glob}`));
|
|
106
|
+
return entries.map((entry) => {
|
|
107
|
+
if (!isRuleBlock(entry) || !entry.files)
|
|
108
|
+
return entry;
|
|
109
|
+
const [first, ...rest] = [...entry.files, ...negations];
|
|
110
|
+
return { ...entry, files: [first, ...rest] };
|
|
111
|
+
});
|
|
112
|
+
}
|
|
93
113
|
//# sourceMappingURL=scoping.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoping.js","sourceRoot":"","sources":["../../rules/scoping.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AAIjC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,2DAA2D;AAC3D,MAAM,UAAU,WAAW,CAAC,KAAgB;IAC1C,OAAO,OAAO,KAAK,KAAK,UAAU,CAAA;AACpC,CAAC;AAWD;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA2B;IAE3B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAA;IAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,QAAQ;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAChE,GAAG,EAAE,IAAI;QACT,MAAM;KACP,CAAC,CAAA;IACF,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAwB,EACxB,MAAc;IAEd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACpC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IACxC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY;IACnD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACtE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACtC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAA;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA6B,EAC7B,IAAY;IAEZ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACrD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC1E,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,KAAM,EAAE,GAAG,IAAI,CAAU,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"scoping.js","sourceRoot":"","sources":["../../rules/scoping.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,6 +116,19 @@ export declare function scanCoversRefs(testRoots: string[], testFilePattern: Reg
|
|
|
116
116
|
* an acceptance-test path. Inspection failures preserve full enforcement.
|
|
117
117
|
*/
|
|
118
118
|
export declare function enforceSpecTestParity(options: ScanOptions): Rule;
|
|
119
|
+
/**
|
|
120
|
+
* Matches a vitest/jest/mocha test-case declaration: `it(`/`test(`
|
|
121
|
+
* and their `.only`/`.skip`/`.todo`/`.failing`/`.concurrent`
|
|
122
|
+
* modifiers, plus `.each(...)( `. A negative lookbehind requires a
|
|
123
|
+
* non-identifier character (or start of input) before `it`/`test`,
|
|
124
|
+
* so identifiers merely ending in those letters — `split(`,
|
|
125
|
+
* `submit(`, `logger.audit(`, `await wait(` — never match, and a
|
|
126
|
+
* required `(` (directly, or after a modifier) excludes `describe()`
|
|
127
|
+
* and unrelated identifiers like `items(...)`. Exported for use as
|
|
128
|
+
* `requireSpecBackedAcceptanceTest`'s `testDeclarationPattern` in the
|
|
129
|
+
* JS/TS preset (see `presets/js.ts`).
|
|
130
|
+
*/
|
|
131
|
+
export declare const JS_TEST_DECLARATION: RegExp;
|
|
119
132
|
/**
|
|
120
133
|
* Spec-first, made mechanical: a write that adds a new acceptance
|
|
121
134
|
* test case is blocked unless it also adds a `Covers:` tag pointing
|
|
@@ -148,6 +161,10 @@ export declare function enforceSpecTestParity(options: ScanOptions): Rule;
|
|
|
148
161
|
* enforcement, not a free pass).
|
|
149
162
|
* @param options.testDeclarationPattern — what counts as a test-case
|
|
150
163
|
* declaration (default: Kotlin/Java `@Test` or Swift `func test…`).
|
|
164
|
+
* For a JS/TS project pass the exported {@link JS_TEST_DECLARATION}
|
|
165
|
+
* (vitest/jest/mocha `it(`/`test(` and their `.only`/`.skip`/
|
|
166
|
+
* `.each(...)( `/`.concurrent` variants) — the JS preset does this
|
|
167
|
+
* by default once its `specsDir` option is set (see `presets/js.ts`).
|
|
151
168
|
*/
|
|
152
169
|
export declare function requireSpecBackedAcceptanceTest(options: {
|
|
153
170
|
specsDir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-test-parity.d.ts","sourceRoot":"","sources":["../../rules/spec-test-parity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,IAAI,EAA2B,MAAM,gBAAgB,CAAA;AAuE3E,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;IACZ,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AACD,KAAK,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAUnF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CA6C9E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAahF;AAqBD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAA;CAChD,CAAA;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAelE;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAItD;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,eAAe,EAAE,MAAM,GACtB,SAAS,EAAE,CAUb;AAqCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CA8HhE;
|
|
1
|
+
{"version":3,"file":"spec-test-parity.d.ts","sourceRoot":"","sources":["../../rules/spec-test-parity.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,IAAI,EAA2B,MAAM,gBAAgB,CAAA;AAuE3E,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;IACZ,wEAAwE;IACxE,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AACD,KAAK,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAUnF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CA6C9E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAahF;AAqBD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAA;CAChD,CAAA;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAelE;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAItD;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,eAAe,EAAE,MAAM,GACtB,SAAS,EAAE,CAUb;AAqCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CA8HhE;AAUD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,QACoE,CAAA;AAMpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC,GAAG,IAAI,CAqDP;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GACrC,IAAI,CAyCN"}
|
|
@@ -366,6 +366,19 @@ export function enforceSpecTestParity(options) {
|
|
|
366
366
|
* write ADDS test cases, not parse them.
|
|
367
367
|
*/
|
|
368
368
|
const DEFAULT_TEST_DECLARATION = /@Test\b|\bfunc\s+test\w*\s*\(/g;
|
|
369
|
+
/**
|
|
370
|
+
* Matches a vitest/jest/mocha test-case declaration: `it(`/`test(`
|
|
371
|
+
* and their `.only`/`.skip`/`.todo`/`.failing`/`.concurrent`
|
|
372
|
+
* modifiers, plus `.each(...)( `. A negative lookbehind requires a
|
|
373
|
+
* non-identifier character (or start of input) before `it`/`test`,
|
|
374
|
+
* so identifiers merely ending in those letters — `split(`,
|
|
375
|
+
* `submit(`, `logger.audit(`, `await wait(` — never match, and a
|
|
376
|
+
* required `(` (directly, or after a modifier) excludes `describe()`
|
|
377
|
+
* and unrelated identifiers like `items(...)`. Exported for use as
|
|
378
|
+
* `requireSpecBackedAcceptanceTest`'s `testDeclarationPattern` in the
|
|
379
|
+
* JS/TS preset (see `presets/js.ts`).
|
|
380
|
+
*/
|
|
381
|
+
export const JS_TEST_DECLARATION = /(?<![\w$])(?:it|test)(?:\.(?:only|skip|todo|failing|concurrent)\b)?(?:\.each\s*\([^)]*\))?\s*\(/g;
|
|
369
382
|
function countTests(content, pattern) {
|
|
370
383
|
return [...content.matchAll(pattern)].length;
|
|
371
384
|
}
|
|
@@ -401,6 +414,10 @@ function countTests(content, pattern) {
|
|
|
401
414
|
* enforcement, not a free pass).
|
|
402
415
|
* @param options.testDeclarationPattern — what counts as a test-case
|
|
403
416
|
* declaration (default: Kotlin/Java `@Test` or Swift `func test…`).
|
|
417
|
+
* For a JS/TS project pass the exported {@link JS_TEST_DECLARATION}
|
|
418
|
+
* (vitest/jest/mocha `it(`/`test(` and their `.only`/`.skip`/
|
|
419
|
+
* `.each(...)( `/`.concurrent` variants) — the JS preset does this
|
|
420
|
+
* by default once its `specsDir` option is set (see `presets/js.ts`).
|
|
404
421
|
*/
|
|
405
422
|
export function requireSpecBackedAcceptanceTest(options) {
|
|
406
423
|
const declaration = options.testDeclarationPattern ?? DEFAULT_TEST_DECLARATION;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-test-parity.js","sourceRoot":"","sources":["../../rules/spec-test-parity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spec-test-parity.js","sourceRoot":"","sources":["../../rules/spec-test-parity.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,11 +24,22 @@
|
|
|
24
24
|
* npx probity-scope-report [--config probity.config.ts]
|
|
25
25
|
* [--root .] [--strict]
|
|
26
26
|
*
|
|
27
|
+
* npx probity-scope-report --strict --allow-empty 'src/adapters/**'
|
|
28
|
+
*
|
|
27
29
|
* --config defaults to probity.config.{ts,mts,js,mjs} found in
|
|
28
30
|
* --root; --root defaults to the current working directory. --strict
|
|
29
31
|
* exits 1 when any warning fires (for CI); otherwise warnings are
|
|
30
32
|
* advisory and the exit code is 0.
|
|
31
33
|
*
|
|
34
|
+
* --allow-empty <glob> (repeatable) marks a block as expected to be
|
|
35
|
+
* empty for now: a block listing that exact glob in its `files` is
|
|
36
|
+
* reported as "empty (expected)" instead of DEAD SCOPE. This lets a
|
|
37
|
+
* greenfield repository run --strict in CI from the first commit —
|
|
38
|
+
* list the globs for layers that don't exist yet, and drop each flag
|
|
39
|
+
* once its first file lands (the report notes a flag that has gone
|
|
40
|
+
* stale). A flag naming no block's glob is a warning — a typo would
|
|
41
|
+
* otherwise silently allow nothing.
|
|
42
|
+
*
|
|
32
43
|
* The config is loaded via jiti — the same TypeScript loader Probity
|
|
33
44
|
* itself uses — rather than a bare dynamic `import()` of a .ts file,
|
|
34
45
|
* so this works whether the consumer's config is .ts, .mts, .js, or
|
|
@@ -66,7 +77,7 @@ const TEST_FILE = /(?:Tests?|Spec)\.\w+$|\.(?:test|spec)\.\w+$/;
|
|
|
66
77
|
const LANGUAGE_RULES = /AcceptanceLanguage/;
|
|
67
78
|
const DRIVERISH_FILE = /(Robot|Driver|Dsl)\.\w+$|[/\\](drivers?|dsl)[/\\]/;
|
|
68
79
|
function parseArgs(argv) {
|
|
69
|
-
const out = { strict: false };
|
|
80
|
+
const out = { strict: false, allowEmpty: [] };
|
|
70
81
|
for (let i = 0; i < argv.length; i++) {
|
|
71
82
|
if (argv[i] === '--config')
|
|
72
83
|
out.config = argv[++i];
|
|
@@ -74,6 +85,14 @@ function parseArgs(argv) {
|
|
|
74
85
|
out.root = argv[++i];
|
|
75
86
|
else if (argv[i] === '--strict')
|
|
76
87
|
out.strict = true;
|
|
88
|
+
else if (argv[i] === '--allow-empty') {
|
|
89
|
+
const glob = argv[++i];
|
|
90
|
+
if (!glob) {
|
|
91
|
+
console.error('--allow-empty needs a glob');
|
|
92
|
+
process.exit(2);
|
|
93
|
+
}
|
|
94
|
+
out.allowEmpty.push(glob);
|
|
95
|
+
}
|
|
77
96
|
else {
|
|
78
97
|
console.error(`Unknown argument: ${argv[i]}`);
|
|
79
98
|
process.exit(2);
|
|
@@ -122,6 +141,7 @@ console.log(`Scope report for ${configPath}`);
|
|
|
122
141
|
console.log(`Repo root: ${root} (${tree.length} files scanned)\n`);
|
|
123
142
|
const warnings = [];
|
|
124
143
|
const claimed = new Set();
|
|
144
|
+
const allowEmptyUsed = new Set();
|
|
125
145
|
let flatRules = 0;
|
|
126
146
|
for (const [index, entry] of config.rules.entries()) {
|
|
127
147
|
if (!isRuleBlock(entry)) {
|
|
@@ -148,13 +168,20 @@ for (const [index, entry] of config.rules.entries()) {
|
|
|
148
168
|
: tree.filter(buildMatcher([anchorGlob(glob, configDir)])).length;
|
|
149
169
|
console.log(` ${glob}${count === null ? '' : ` (${count})`}`);
|
|
150
170
|
}
|
|
151
|
-
|
|
171
|
+
const allowedEmpty = entry.files.filter((glob) => args.allowEmpty.includes(glob));
|
|
172
|
+
allowedEmpty.forEach((glob) => allowEmptyUsed.add(glob));
|
|
173
|
+
const allowNote = allowedEmpty.length === 0
|
|
174
|
+
? ''
|
|
175
|
+
: matched.length === 0
|
|
176
|
+
? ' — empty (expected, --allow-empty)'
|
|
177
|
+
: ` — still marked --allow-empty ${allowedEmpty[0]}; drop the flag`;
|
|
178
|
+
console.log(` → ${matched.length} file(s)${allowNote}`);
|
|
152
179
|
for (const file of matched.slice(0, SAMPLE_LIMIT))
|
|
153
180
|
console.log(` ${relative(root, file)}`);
|
|
154
181
|
if (matched.length > SAMPLE_LIMIT)
|
|
155
182
|
console.log(` …and ${matched.length - SAMPLE_LIMIT} more`);
|
|
156
183
|
console.log('');
|
|
157
|
-
if (matched.length === 0) {
|
|
184
|
+
if (matched.length === 0 && allowedEmpty.length === 0) {
|
|
158
185
|
warnings.push(`DEAD SCOPE: ${label} matches no files — these rules will never fire. ` +
|
|
159
186
|
'Adjust the globs to your layout (this is the silent failure mode).');
|
|
160
187
|
}
|
|
@@ -181,6 +208,10 @@ for (const [index, entry] of config.rules.entries()) {
|
|
|
181
208
|
}
|
|
182
209
|
}
|
|
183
210
|
}
|
|
211
|
+
for (const glob of args.allowEmpty.filter((glob) => !allowEmptyUsed.has(glob))) {
|
|
212
|
+
warnings.push(`--allow-empty ${glob} matches no block's files glob exactly — check the ` +
|
|
213
|
+
'spelling against the globs printed above.');
|
|
214
|
+
}
|
|
184
215
|
if (flatRules > 0) {
|
|
185
216
|
console.log(`${flatRules} flat rule(s) apply to every action (no files scope).\n`);
|
|
186
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-report.js","sourceRoot":"","sources":["../../scripts/scope-report.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"scope-report.js","sourceRoot":"","sources":["../../scripts/scope-report.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAIjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE3E,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAExC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,cAAc;IACd,MAAM;IACN,OAAO;IACP,SAAS;IACT,KAAK;IACL,MAAM;IACN,OAAO;CACR,CAAC,CAAA;AACF,MAAM,YAAY,GAAG,CAAC,CAAA;AAEtB,oEAAoE;AACpE,qEAAqE;AACrE,iEAAiE;AACjE,yCAAyC;AACzC,MAAM,UAAU,GAAG,4DAA4D,CAAA;AAC/E,MAAM,kBAAkB,GAAG,iDAAiD,CAAA;AAC5E,uEAAuE;AACvE,uEAAuE;AACvE,qEAAqE;AACrE,8DAA8D;AAC9D,mEAAmE;AACnE,gDAAgD;AAChD,MAAM,gBAAgB,GAAG,kDAAkD,CAAA;AAC3E,MAAM,SAAS,GAAG,6CAA6C,CAAA;AAC/D,MAAM,cAAc,GAAG,oBAAoB,CAAA;AAC3C,MAAM,cAAc,GAAG,mDAAmD,CAAA;AAI1E,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,GAAG,GAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;YAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;aAC7C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;aAC9C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;YAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAA;aAC7C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;aACI,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAA;QACpD,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;IAC7C,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,wCAAwC,GAAG,mBAAmB,CAAC,CAAA;IAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,IAAI,CAAC,GAAW,EAAE,MAAgB,EAAE;IAC3C,IAAI,OAAO,CAAA;IACX,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAClE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,KAAgB;IACjC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AAChD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAS,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;AAEvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAA;AAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,KAAK,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAA;AAElE,MAAM,QAAQ,GAAa,EAAE,CAAA;AAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;AACjC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;AACxC,IAAI,SAAS,GAAG,CAAC,CAAA;AAEjB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACpD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,SAAS,EAAE,CAAA;QACX,SAAQ;IACV,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,GAAG,CAAA;IACxD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,8CAA8C,CAAC,CAAA;QACnE,SAAQ;IACV,CAAC;IACD,qEAAqE;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAE5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClB,iEAAiE;IACjE,iEAAiE;IACjE,mEAAmE;IACnE,aAAa;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACjF,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACxD,MAAM,SAAS,GACb,YAAY,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACpB,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,iCAAiC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAA;IACzE,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,MAAM,WAAW,SAAS,EAAE,CAAC,CAAA;IACxD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/F,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,GAAG,YAAY,OAAO,CAAC,CAAA;IAClG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CACX,eAAe,KAAK,mDAAmD;YACrE,oEAAoE,CACvE,CAAA;IACH,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACpD,MAAM,MAAM,GACV,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;gBAC9C,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;QACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CACX,GAAG,KAAK,WAAW,UAAU,CAAC,MAAM,uCAAuC;gBACzE,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC,2CAA2C;gBAC5E,2EAA2E;gBAC3E,yCAAyC,CAC5C,CAAA;QACH,CAAC;IACH,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACtE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CACX,GAAG,KAAK,WAAW,UAAU,CAAC,MAAM,oCAAoC;gBACtE,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC,6CAA6C;gBAC9E,4EAA4E,CAC/E,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC/E,QAAQ,CAAC,IAAI,CACX,iBAAiB,IAAI,qDAAqD;QACxE,2CAA2C,CAC9C,CAAA;AACH,CAAC;AAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,yDAAyD,CAAC,CAAA;AACpF,CAAC;AACD,OAAO,CAAC,GAAG,CACT,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,0DAA0D,CACzF,CAAA;AAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AACrC,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAA;IAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAA;AACjE,CAAC;AACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jjchill/probity-rules",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Versioned Probity rule presets and CLI tooling for the agent-skills catalog (test-driven-development, ports-and-adapters, acceptance-testing, spec-test parity, ubiquitous-language) — see hooks/PROBITY.md.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"picomatch": "^4.0.4"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@nizos/probity": "^1.10.
|
|
47
|
+
"@nizos/probity": "^1.10.1",
|
|
48
48
|
"@types/node": "^22.0.0",
|
|
49
49
|
"@types/picomatch": "^3.0.2",
|
|
50
50
|
"tsx": "^4.19.0",
|