@ploaness/cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/checks/containers.d.ts +1 -1
  2. package/dist/checks/containers.d.ts.map +1 -1
  3. package/dist/checks/containers.js +31 -27
  4. package/dist/checks/containers.js.map +1 -1
  5. package/dist/checks/conventions.d.ts +2 -1
  6. package/dist/checks/conventions.d.ts.map +1 -1
  7. package/dist/checks/conventions.js +9 -7
  8. package/dist/checks/conventions.js.map +1 -1
  9. package/dist/checks/dependencies.d.ts.map +1 -1
  10. package/dist/checks/dependencies.js +29 -11
  11. package/dist/checks/dependencies.js.map +1 -1
  12. package/dist/checks/editorconfig.d.ts +1 -1
  13. package/dist/checks/editorconfig.d.ts.map +1 -1
  14. package/dist/checks/editorconfig.js +7 -6
  15. package/dist/checks/editorconfig.js.map +1 -1
  16. package/dist/checks/environment.d.ts +13 -0
  17. package/dist/checks/environment.d.ts.map +1 -0
  18. package/dist/checks/environment.js +56 -0
  19. package/dist/checks/environment.js.map +1 -0
  20. package/dist/checks/integrity.d.ts +1 -1
  21. package/dist/checks/integrity.d.ts.map +1 -1
  22. package/dist/checks/integrity.js +4 -4
  23. package/dist/checks/integrity.js.map +1 -1
  24. package/dist/checks/payload.d.ts +11 -1
  25. package/dist/checks/payload.d.ts.map +1 -1
  26. package/dist/checks/payload.js +93 -24
  27. package/dist/checks/payload.js.map +1 -1
  28. package/dist/checks/references.d.ts.map +1 -1
  29. package/dist/checks/references.js +3 -3
  30. package/dist/checks/references.js.map +1 -1
  31. package/dist/checks/suppressions.d.ts.map +1 -1
  32. package/dist/checks/suppressions.js +3 -3
  33. package/dist/checks/suppressions.js.map +1 -1
  34. package/dist/checks/tailwind.d.ts.map +1 -1
  35. package/dist/checks/tailwind.js +3 -3
  36. package/dist/checks/tailwind.js.map +1 -1
  37. package/dist/checks/tests.d.ts.map +1 -1
  38. package/dist/checks/tests.js +13 -5
  39. package/dist/checks/tests.js.map +1 -1
  40. package/dist/checks/tree.d.ts +8 -1
  41. package/dist/checks/tree.d.ts.map +1 -1
  42. package/dist/checks/tree.js +14 -6
  43. package/dist/checks/tree.js.map +1 -1
  44. package/dist/checks/wiring.d.ts.map +1 -1
  45. package/dist/checks/wiring.js +34 -1
  46. package/dist/checks/wiring.js.map +1 -1
  47. package/dist/commands/format.d.ts +4 -1
  48. package/dist/commands/format.d.ts.map +1 -1
  49. package/dist/commands/format.js +17 -3
  50. package/dist/commands/format.js.map +1 -1
  51. package/dist/context.d.ts +23 -2
  52. package/dist/context.d.ts.map +1 -1
  53. package/dist/context.js +39 -13
  54. package/dist/context.js.map +1 -1
  55. package/dist/gates.d.ts.map +1 -1
  56. package/dist/gates.js +20 -1
  57. package/dist/gates.js.map +1 -1
  58. package/dist/secret-mirror.d.ts +3 -0
  59. package/dist/secret-mirror.d.ts.map +1 -0
  60. package/dist/secret-mirror.js +51 -0
  61. package/dist/secret-mirror.js.map +1 -0
  62. package/package.json +6 -6
  63. package/dist/commands/hooks.d.ts +0 -9
  64. package/dist/commands/hooks.d.ts.map +0 -1
  65. package/dist/commands/hooks.js +0 -57
  66. package/dist/commands/hooks.js.map +0 -1
@@ -5,11 +5,11 @@ import { existsSync, readdirSync, readFileSync } from 'node:fs';
5
5
  import path from 'node:path';
6
6
  import { gzipSync } from 'node:zlib';
7
7
  import { evaluateBundle, isSupportedImagePath, validateImageBytes, } from '@ploaness/governance';
8
- import { hasOwnRuntime, trackedFiles } from '../context.js';
8
+ import { hasOwnRuntime, workingTreeFiles } from '../context.js';
9
9
  import { failed, passed } from '../exec.js';
10
- /** Decode every tracked image and fail on any that is corrupt or truncated. */
10
+ /** Decode every image in the working tree and fail on any that is corrupt or truncated. */
11
11
  export const imageAssets = (context) => {
12
- const images = trackedFiles(context.root)
12
+ const images = workingTreeFiles(context.root)
13
13
  .filter(isSupportedImagePath)
14
14
  .filter((file) => existsSync(path.join(context.root, file)));
15
15
  const findings = images.flatMap((file) => {
@@ -18,7 +18,7 @@ export const imageAssets = (context) => {
18
18
  });
19
19
  return findings.length > 0
20
20
  ? failed(`${String(findings.length)} corrupt or truncated image asset(s)`, findings)
21
- : passed(`all ${String(images.length)} tracked image asset(s) decode`);
21
+ : passed(`all ${String(images.length)} image asset(s) decode`);
22
22
  };
23
23
  const collectJavaScript = (directory) => readdirSync(directory, { withFileTypes: true }).flatMap((entry) => {
24
24
  const full = path.join(directory, entry.name);
@@ -1 +1 @@
1
- {"version":3,"file":"integrity.js","sourceRoot":"","sources":["../../src/checks/integrity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrity.js","sourceRoot":"","sources":["../../src/checks/integrity.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,16 @@ import { type Context, type Member } from '../context.js';
2
2
  import { type GateResult } from '../exec.js';
3
3
  /** Regenerate the Payload types and admin import map, then fail on any drift. */
4
4
  export declare const payloadGenerated: (context: Context) => GateResult;
5
- /** Apply the source rules to every tracked TypeScript file under the declared source roots. */
5
+ /** Apply the source rules to every TypeScript file under the declared source roots. */
6
6
  export declare const payloadRules: (context: Member) => GateResult;
7
+ /**
8
+ * Every custom admin view is scanned for accessibility by a specification of the project's own.
9
+ *
10
+ * The pinned sweep skips the admin panel unconditionally, because the panel is Payload's markup and
11
+ * the crawl carries no credential. A custom view is the project's markup behind that exemption, and
12
+ * nothing else in the harness will ever look at it. ploaness cannot scan it - it cannot sign in, and
13
+ * it does not know which container is the project's rather than the framework's - so it requires the
14
+ * project to have scanned it instead.
15
+ */
16
+ export declare const adminViews: (context: Member) => GateResult;
7
17
  //# sourceMappingURL=payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/checks/payload.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,MAAM,EAIZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAsB,KAAK,UAAU,EAAmC,MAAM,YAAY,CAAA;AAWjG,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,UA0CnD,CAAA;AAaD,+FAA+F;AAC/F,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,UAkB9C,CAAA"}
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/checks/payload.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,MAAM,EAIZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAsB,KAAK,UAAU,EAAmC,MAAM,YAAY,CAAA;AA2BjG,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,UAgDnD,CAAA;AAsCD,uFAAuF;AACvF,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,UAmB9C,CAAA;AAOD;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,KAAG,UAmC5C,CAAA"}
@@ -2,8 +2,8 @@
2
2
  // and the Local API must be used in a way that neither over-fetches nor skips access control.
3
3
  import { existsSync, readFileSync } from 'node:fs';
4
4
  import path from 'node:path';
5
- import { findPayloadViolations, findSourceViolations, } from '@ploaness/governance';
6
- import { git, resolveProjectTool, runEnvironment, trackedFiles, } from '../context.js';
5
+ import { findDeclaredAdminViews, findGeneratedDrift, findPayloadViolations, findSourceViolations, findUnguardedRelationships, findUnscannedAdminViews, } from '@ploaness/governance';
6
+ import { git, resolveProjectTool, runEnvironment, workingTreeFiles, } from '../context.js';
7
7
  import { asFindings, failed, passed, runNode } from '../exec.js';
8
8
  // Resolution failure is an answer rather than an exception the caller must catch.
9
9
  const resolveProjectToolOrUndefined = (context, tool) => {
@@ -14,6 +14,21 @@ const resolveProjectToolOrUndefined = (context, tool) => {
14
14
  return undefined;
15
15
  }
16
16
  };
17
+ const readIfPresent = (root, target) => {
18
+ const full = path.join(root, target);
19
+ return existsSync(full) ? readFileSync(full, 'utf8') : undefined;
20
+ };
21
+ // A repository is the normal case and git is required, so a failure here is an absent tool rather than
22
+ // an untracked artefact. Reported as tracked, which leaves the drift comparison - which needs no git at
23
+ // all - to answer on its own.
24
+ const isTracked = (context, target) => {
25
+ try {
26
+ return git(context, ['ls-files', '--', target]).length > 0;
27
+ }
28
+ catch {
29
+ return true;
30
+ }
31
+ };
17
32
  /** Regenerate the Payload types and admin import map, then fail on any drift. */
18
33
  export const payloadGenerated = (context) => {
19
34
  const payloadCli = resolveProjectToolOrUndefined(context, 'payload');
@@ -22,6 +37,19 @@ export const payloadGenerated = (context) => {
22
37
  'ploaness governs Payload projects, so "payload" must be installed in the project itself',
23
38
  ]);
24
39
  }
40
+ // The SETTING rather than the constant behind it. Every other consumer of the artefact list already
41
+ // read the setting - the write denials, the biome carve-outs, the scaffolder - and this one did not,
42
+ // so a project that declared where its import map actually lives had that file denied, excluded, and
43
+ // regenerated, but never diffed. The gate then reported that the artefacts matched a configuration it
44
+ // had not compared them against, and the drift it had just written surfaced two gates later as an
45
+ // unexplained working-tree change.
46
+ const targets = context.settings.generatedArtefacts;
47
+ // Read before the generators run, because they overwrite in place: this is the only moment the
48
+ // previous bytes exist.
49
+ const before = new Map(targets.map((target) => [
50
+ target,
51
+ readIfPresent(context.root, target),
52
+ ]));
25
53
  for (const target of ['generate:types', 'generate:importmap']) {
26
54
  const result = runNode(payloadCli, [target], {
27
55
  cwd: context.root,
@@ -33,26 +61,16 @@ export const payloadGenerated = (context) => {
33
61
  return failed(`payload ${target} failed`, asFindings(result.output));
34
62
  }
35
63
  }
36
- // The SETTING rather than the constant behind it. Every other consumer of the artefact list already
37
- // read the setting - the write denials, the biome carve-outs, the scaffolder - and this one did not,
38
- // so a project that declared where its import map actually lives had that file denied, excluded, and
39
- // regenerated, but never diffed. The gate then reported that the artefacts matched a configuration it
40
- // had not compared them against, and the drift it had just written surfaced two gates later as an
41
- // unexplained working-tree change.
42
- const drifted = context.settings.generatedArtefacts.filter((target) => {
43
- if (!existsSync(path.join(context.root, target))) {
44
- return false;
45
- }
46
- try {
47
- return git(context, ['diff', '--name-only', '--', target]).length > 0;
48
- }
49
- catch {
50
- return false;
51
- }
52
- });
64
+ const regenerated = targets.map((target) => ({
65
+ target,
66
+ isTracked: isTracked(context, target),
67
+ before: before.get(target),
68
+ after: readIfPresent(context.root, target),
69
+ }));
70
+ const drifted = findGeneratedDrift(regenerated);
53
71
  return drifted.length > 0
54
72
  ? failed('generated Payload artefacts drifted from the configuration', [
55
- ...drifted.map((target) => `${target} changed when regenerated`),
73
+ ...drifted,
56
74
  'commit the regenerated files',
57
75
  ])
58
76
  : passed('the generated Payload artefacts match the configuration');
@@ -66,16 +84,67 @@ const violationsIn = (source, isPayload) => [
66
84
  ...findSourceViolations(source),
67
85
  ...(isPayload ? findPayloadViolations(source) : []),
68
86
  ];
69
- /** Apply the source rules to every tracked TypeScript file under the declared source roots. */
70
- export const payloadRules = (context) => {
87
+ const sourceCandidates = (context) => {
71
88
  const roots = context.settings.sourceRoots;
72
- const candidates = trackedFiles(context.root).filter((file) => SOURCE_EXTENSIONS.some((extension) => file.endsWith(extension)) &&
89
+ return workingTreeFiles(context.root).filter((file) => SOURCE_EXTENSIONS.some((extension) => file.endsWith(extension)) &&
73
90
  roots.some((root) => file.startsWith(`${root}/`)) &&
74
91
  !file.endsWith('payload-types.ts') &&
75
92
  existsSync(path.join(context.root, file)));
76
- const findings = candidates.flatMap((file) => violationsIn(readFileSync(path.join(context.root, file), 'utf8'), context.isPayload).map((violation) => `${file}:${String(violation.line)} [${violation.rule}] ${violation.reason}`));
93
+ };
94
+ const reported = (file, violation) => `${file}:${String(violation.line)} [${violation.rule}] ${violation.reason}`;
95
+ // One rule cannot be decided from a single file: a required relationship names its target by slug, and
96
+ // the collection carrying that slug is declared somewhere else. It therefore reads the whole candidate
97
+ // set rather than one text, and it reports the file that declares the relationship rather than the file
98
+ // it happens to be judged from.
99
+ const crossFileFindings = (context, files) => context.isPayload
100
+ ? findUnguardedRelationships(files).map((located) => reported(located.path, located.violation))
101
+ : [];
102
+ /** Apply the source rules to every TypeScript file under the declared source roots. */
103
+ export const payloadRules = (context) => {
104
+ const candidates = sourceCandidates(context);
105
+ const files = candidates.map((file) => ({
106
+ path: file,
107
+ source: readFileSync(path.join(context.root, file), 'utf8'),
108
+ }));
109
+ const findings = [
110
+ ...files.flatMap((file) => violationsIn(file.source, context.isPayload).map((violation) => reported(file.path, violation))),
111
+ ...crossFileFindings(context, files),
112
+ ];
77
113
  return findings.length > 0
78
114
  ? failed(`${String(findings.length)} source usage violation(s)`, findings)
79
115
  : passed(`${String(candidates.length)} source file(s) follow the usage rules`);
80
116
  };
117
+ // Where a project's specifications live. `tests/` is a ploaness convention rather than a project
118
+ // setting - the suite collects from `tests/unit`, `tests/int` and `tests/e2e`, and the sweeps ploaness
119
+ // pins are written to `tests/e2e` - so a scan written anywhere else would not run either.
120
+ const SPEC_ROOT = 'tests/';
121
+ /**
122
+ * Every custom admin view is scanned for accessibility by a specification of the project's own.
123
+ *
124
+ * The pinned sweep skips the admin panel unconditionally, because the panel is Payload's markup and
125
+ * the crawl carries no credential. A custom view is the project's markup behind that exemption, and
126
+ * nothing else in the harness will ever look at it. ploaness cannot scan it - it cannot sign in, and
127
+ * it does not know which container is the project's rather than the framework's - so it requires the
128
+ * project to have scanned it instead.
129
+ */
130
+ export const adminViews = (context) => {
131
+ const files = sourceCandidates(context).map((file) => ({
132
+ path: file,
133
+ source: readFileSync(path.join(context.root, file), 'utf8'),
134
+ }));
135
+ const specs = files.filter((file) => file.path.startsWith(SPEC_ROOT));
136
+ // A configuration is looked for outside `tests/` alone, so that a fixture config written inside a
137
+ // specification is not read as a view this project serves.
138
+ const declared = files
139
+ .filter((file) => !file.path.startsWith(SPEC_ROOT))
140
+ .map((file) => [file, findDeclaredAdminViews(file.source)]);
141
+ const findings = declared.flatMap(([file, views]) => findUnscannedAdminViews(views, specs, files).map((violation) => `${file.path}:${String(violation.line)} [${violation.rule}] ${violation.reason}`));
142
+ if (findings.length > 0) {
143
+ return failed(`${String(findings.length)} custom admin view(s) are not scanned`, findings);
144
+ }
145
+ const total = declared.reduce((count, [, views]) => count + views.length, 0);
146
+ return passed(total === 0
147
+ ? 'this project declares no custom admin view'
148
+ : `${String(total)} custom admin view(s) are scanned for accessibility`);
149
+ };
81
150
  //# sourceMappingURL=payload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/checks/payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/checks/payload.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/checks/references.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,UAAU,IAAI,IAAI,EAGxB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AA4B5D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,IAAI,EAChB,gBAAe,WAAW,CAAC,MAAM,CAAqB,KACrD,UA4BF,CAAA;AAiCD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,UAoBnD,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,UAgBzC,CAAA"}
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../src/checks/references.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,UAAU,IAAI,IAAI,EAGxB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AA4B5D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,IAAI,EAChB,gBAAe,WAAW,CAAC,MAAM,CAAqB,KACrD,UA4BF,CAAA;AAoCD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,UAoBnD,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,UAgBzC,CAAA"}
@@ -4,7 +4,7 @@
4
4
  import { existsSync, globSync, readFileSync } from 'node:fs';
5
5
  import path from 'node:path';
6
6
  import { asRecord, declaredDependencies, extractLiteralSourcePaths, findAgentDocuments, findDocumentReferenceViolations, findMissingConfigReferences, findSkillManifestViolations, findUnreachedExclusionsBySetting, requiredBiomeFiles, } from '@ploaness/governance';
7
- import { shippedDirectory, trackedFiles, } from '../context.js';
7
+ import { shippedDirectory, workingTreeFiles, } from '../context.js';
8
8
  import { failed, passed } from '../exec.js';
9
9
  const declaredScripts = (context) => asRecord(asRecord(context.packageJson)['scripts']);
10
10
  const biomeFilesJson = (context) => JSON.stringify(requiredBiomeFiles(context.settings.sourceRoots));
@@ -62,12 +62,12 @@ const configTargets = (context) => {
62
62
  const mandatedReferences = (context) => new Set(extractLiteralSourcePaths(biomeFilesJson(context)));
63
63
  // A declared exclusion is judged against the paths the gate it narrows would otherwise have read: a
64
64
  // coverage exclusion against what the coverage report measures, a typography or JavaScript exclusion
65
- // against the tracked tree the conventions gate walks. Judging either against the other's set would
65
+ // against the working tree the conventions gate walks. Judging either against the other's set would
66
66
  // report a finding about the wrong thing.
67
67
  // Which file set an exclusion has to reach is decided by the SETTING it came from, not by how its
68
68
  // pattern is written - the partition itself lives in `governance`, where it is spec'd against file lists
69
69
  // no repository has to be built to produce. What is left here is the one read it needs.
70
- const deadExclusions = (context) => findUnreachedExclusionsBySetting(context.settings.declaredExclusions, trackedFiles(context.root));
70
+ const deadExclusions = (context) => findUnreachedExclusionsBySetting(context.settings.declaredExclusions, workingTreeFiles(context.root));
71
71
  /**
72
72
  * A concrete source file carved out of a tool config must still exist on disk, and a declared exclusion
73
73
  * must exclude something. Both are the same defect at different scales: a carve-out that reaches
@@ -1 +1 @@
1
- {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/checks/references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../src/checks/references.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../src/checks/suppressions.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAW5D,yEAAyE;AACzE,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,UAoD/C,CAAA"}
1
+ {"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../src/checks/suppressions.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAW5D,yEAAyE;AACzE,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,UAsD/C,CAAA"}
@@ -8,7 +8,7 @@
8
8
  import { existsSync, readFileSync, statSync } from 'node:fs';
9
9
  import path from 'node:path';
10
10
  import { countSourceLines, findSuppressions, isGovernedCode, judgeSuppressions, } from '@ploaness/governance';
11
- import { trackedFiles } from '../context.js';
11
+ import { workingTreeFiles } from '../context.js';
12
12
  import { failed, passed } from '../exec.js';
13
13
  import { managedPaths } from './assets.js';
14
14
  const isUnderSourceRoots = (file, sourceRoots) => sourceRoots.some((sourceRoot) => file.startsWith(`${sourceRoot}/`));
@@ -19,8 +19,8 @@ export const suppressions = (context) => {
19
19
  // inside it nor be asked to justify one. Its lines are left out of the denominator for the same
20
20
  // reason: a ceiling earned by code the project did not write would be an allowance, not a measure.
21
21
  const managed = managedPaths(context);
22
- // A tracked path is not always a regular file: a symlink and a submodule gitlink both appear here.
23
- const files = trackedFiles(context.root).filter((file) => {
22
+ // An enumerated path is not always a regular file: a symlink and a submodule gitlink both appear here.
23
+ const files = workingTreeFiles(context.root).filter((file) => {
24
24
  const full = path.join(context.root, file);
25
25
  return (isUnderSourceRoots(file, context.settings.sourceRoots) &&
26
26
  !managed.has(file) &&
@@ -1 +1 @@
1
- {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/checks/suppressions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/checks/suppressions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.d.ts","sourceRoot":"","sources":["../../src/checks/tailwind.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAc5D,gGAAgG;AAChG,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,UAejD,CAAA"}
1
+ {"version":3,"file":"tailwind.d.ts","sourceRoot":"","sources":["../../src/checks/tailwind.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAc5D,gGAAgG;AAChG,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,UAejD,CAAA"}
@@ -1,9 +1,9 @@
1
1
  // The token-bound gate. The rule is pure and lives in @ploaness/governance; this file supplies the
2
- // I/O: which tracked files carry Tailwind classes, and what a finding reads like.
2
+ // I/O: which files carry Tailwind classes, and what a finding reads like.
3
3
  import { readFileSync } from 'node:fs';
4
4
  import path from 'node:path';
5
5
  import { findArbitraryValues, hasExtension, matchesRole, } from '@ploaness/governance';
6
- import { trackedFiles } from '../context.js';
6
+ import { workingTreeFiles } from '../context.js';
7
7
  import { failed, passed } from '../exec.js';
8
8
  // Scoped by role rather than by a list of folders. A Tailwind class is written in JSX, so `.tsx` is
9
9
  // where the rule can find one - and it is also the scope that keeps the rule from misreading a regex
@@ -16,7 +16,7 @@ const isScanned = (context, file) => hasExtension(file, MARKUP_EXTENSIONS) &&
16
16
  !matchesRole(file, context.settings.typographyExclusions);
17
17
  /** Verify every visual value comes from the Tailwind theme rather than an arbitrary literal. */
18
18
  export const tailwindTokens = (context) => {
19
- const scanned = trackedFiles(context.root).filter((file) => isScanned(context, file));
19
+ const scanned = workingTreeFiles(context.root).filter((file) => isScanned(context, file));
20
20
  const findings = scanned.flatMap((file) => {
21
21
  const content = readFileSync(path.join(context.root, file), 'utf8');
22
22
  return findArbitraryValues(content).map((violation) => `${file}:${String(violation.line)}:${String(violation.column)} ` +
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../src/checks/tailwind.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,kFAAkF;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAEL,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,oGAAoG;AACpG,qGAAqG;AACrG,+FAA+F;AAC/F,MAAM,iBAAiB,GAAsB,CAAC,MAAM,CAAC,CAAA;AAErD,kGAAkG;AAClG,oEAAoE;AACpE,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,IAAY,EAAW,EAAE,CAC5D,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACzF,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AAE3D,gGAAgG;AAChG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAc,EAAE;IAC7D,MAAM,OAAO,GAAsB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAW,EAAE,CAC7F,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CACzB,CAAA;IACD,MAAM,QAAQ,GAAsB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAY,EAAqB,EAAE;QACtF,MAAM,OAAO,GAAW,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QAC3E,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CACrC,CAAC,SAAkC,EAAU,EAAE,CAC7C,GAAG,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;YAChE,8BAA8B,SAAS,CAAC,KAAK,iDAAiD,CACjG,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,8BAA8B,EAAE,QAAQ,CAAC;QAC5E,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAA;AAChG,CAAC,CAAA"}
1
+ {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../src/checks/tailwind.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,0EAA0E;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAEL,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,oGAAoG;AACpG,qGAAqG;AACrG,+FAA+F;AAC/F,MAAM,iBAAiB,GAAsB,CAAC,MAAM,CAAC,CAAA;AAErD,kGAAkG;AAClG,oEAAoE;AACpE,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,IAAY,EAAW,EAAE,CAC5D,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACzF,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AAE3D,gGAAgG;AAChG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAc,EAAE;IAC7D,MAAM,OAAO,GAAsB,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CACtE,CAAC,IAAY,EAAW,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CACpD,CAAA;IACD,MAAM,QAAQ,GAAsB,OAAO,CAAC,OAAO,CAAC,CAAC,IAAY,EAAqB,EAAE;QACtF,MAAM,OAAO,GAAW,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QAC3E,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CACrC,CAAC,SAAkC,EAAU,EAAE,CAC7C,GAAG,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;YAChE,8BAA8B,SAAS,CAAC,KAAK,iDAAiD,CACjG,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,8BAA8B,EAAE,QAAQ,CAAC;QAC5E,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAA;AAChG,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/checks/tests.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,MAAM,EAGZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAIL,KAAK,UAAU,EAIhB,MAAM,YAAY,CAAA;AA4DnB,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,KAAG,UAoBpC,CAAA;AAEJ,2CAA2C;AAC3C,eAAO,MAAM,QAAQ,GAAI,SAAS,OAAO,KAAG,UAwC3C,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,KAAK,GAAI,SAAS,OAAO,KAAG,UAwBxC,CAAA"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/checks/tests.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,MAAM,EAGZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAIL,KAAK,UAAU,EAIhB,MAAM,YAAY,CAAA;AA8DnB,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,KAAG,UAoBpC,CAAA;AAEJ,2CAA2C;AAC3C,eAAO,MAAM,QAAQ,GAAI,SAAS,OAAO,KAAG,UAwC3C,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,KAAK,GAAI,SAAS,OAAO,KAAG,UAgCxC,CAAA"}
@@ -3,8 +3,8 @@
3
3
  // module registry and fail to match its own matchers.
4
4
  import { existsSync } from 'node:fs';
5
5
  import path from 'node:path';
6
- import { CODE_EXTENSIONS, carriesSourceCode, hasExtension } from '@ploaness/governance';
7
- import { hasOwnRuntime, resolveProjectTool, trackedFiles, } from '../context.js';
6
+ import { CODE_EXTENSIONS, carriesSourceCode, diagnoseBuildFailure, hasExtension, } from '@ploaness/governance';
7
+ import { hasOwnRuntime, resolveProjectTool, workingTreeFiles, } from '../context.js';
8
8
  import { asFindings, failed, fromRun, passed, run, } from '../exec.js';
9
9
  // A Payload suite needs a database before it can boot, and how the project obtains one is a fact ploaness
10
10
  // cannot know. The project declares it; the thresholds and the gate itself stay ploaness's.
@@ -47,7 +47,7 @@ const resolveProjectToolOrUndefined = (context, tool, binary) => {
47
47
  // A member that holds no first-party source has no suite to run, and a runner started there fails on an
48
48
  // empty include - reporting a package with nothing to test as one that failed to test it. A member
49
49
  // holding code and no suite is untouched by this and still fails.
50
- const hasSourceToTest = (context) => carriesSourceCode(trackedFiles(context.root), context.settings.sourceRoots, (filePath) => hasExtension(filePath, CODE_EXTENSIONS));
50
+ const hasSourceToTest = (context) => carriesSourceCode(workingTreeFiles(context.root), context.settings.sourceRoots, (filePath) => hasExtension(filePath, CODE_EXTENSIONS));
51
51
  export const tests = (context) => withPretest(context, () => {
52
52
  if (!hasSourceToTest(context)) {
53
53
  return passed('no first-party source in this package, so there is no suite to run');
@@ -111,13 +111,21 @@ export const build = (context) => {
111
111
  ]);
112
112
  }
113
113
  const invocation = wrapped(context, [next, 'build']);
114
- return fromRun(run(invocation.command, invocation.commandArguments, {
114
+ const result = run(invocation.command, invocation.commandArguments, {
115
115
  cwd: context.root,
116
116
  env: {
117
117
  NEXT_TELEMETRY_DISABLED: '1',
118
118
  NODE_OPTIONS: '--no-deprecation --max-old-space-size=8000',
119
119
  },
120
- }), 'the production build succeeds', 'the production build failed');
120
+ });
121
+ const outcome = fromRun(result, 'the production build succeeds', 'the production build failed');
122
+ // Appended rather than substituted. The build's own output is what a reader needs first; the
123
+ // diagnosis explains a message that names the wrong layer, and says nothing about output it does
124
+ // not recognise.
125
+ const diagnosis = outcome.ok ? [] : diagnoseBuildFailure(result.output);
126
+ return diagnosis.length === 0
127
+ ? outcome
128
+ : { ...outcome, findings: [...outcome.findings, ...diagnosis] };
121
129
  });
122
130
  };
123
131
  //# sourceMappingURL=tests.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tests.js","sourceRoot":"","sources":["../../src/checks/tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tests.js","sourceRoot":"","sources":["../../src/checks/tests.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,qGAAqG;AACrG,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,GACb,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEL,aAAa,EAEb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,UAAU,EACV,MAAM,EACN,OAAO,EAEP,MAAM,EAEN,GAAG,GACJ,MAAM,YAAY,CAAA;AAEnB,0GAA0G;AAC1G,4FAA4F;AAC5F,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAyB,EAAE;IAC7D,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAA;IACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;AAClD,CAAC,CAAA;AAOD,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,oBAAuC,EAAc,EAAE;IACxF,MAAM,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAA;IAC9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAA;IAC9E,CAAC;IACD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,gBAAgB,EAAE,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,oBAAoB,CAAC;KAC9E,CAAA;AACH,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,IAAsB,EAAc,EAAE;IAC3E,MAAM,OAAO,GAA0B,UAAU,CAAC,OAAO,CAAC,CAAA;IAC1D,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,qCAAqC,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,IAAI,EAAE,CAAA;AACf,CAAC,CAAA;AAED,+EAA+E;AAC/E,MAAM,6BAA6B,GAAG,CACpC,OAAgB,EAChB,IAAY,EACZ,MAAe,EACK,EAAE;IACtB,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,SAAS;YACzB,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;YACnC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,oFAAoF;AACpF,wGAAwG;AACxG,mGAAmG;AACnG,kEAAkE;AAClE,MAAM,eAAe,GAAG,CAAC,OAAe,EAAW,EAAE,CACnD,iBAAiB,CACf,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,EAC5B,CAAC,QAAgB,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAC9D,CAAA;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAc,EAAE,CACnD,WAAW,CAAC,OAAO,EAAE,GAAe,EAAE;IACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,oEAAoE,CAAC,CAAA;IACrF,CAAC;IACD,MAAM,MAAM,GAAuB,6BAA6B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,+CAA+C,EAAE;YAC7D,8EAA8E;SAC/E,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,UAAU,GAAe,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;IAC9E,OAAO,OAAO,CACZ,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,EAAE;QACnD,GAAG,EAAE,OAAO,CAAC,IAAI;QACjB,GAAG,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE;KAC1C,CAAC,EACF,6DAA6D,EAC7D,2DAA2D,CAC5D,CAAA;AACH,CAAC,CAAC,CAAA;AAEJ,2CAA2C;AAC3C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAc,EAAE;IACvD,sGAAsG;IACtG,gGAAgG;IAChG,0FAA0F;IAC1F,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,yEAAyE,CAAC,CAAA;IAC1F,CAAC;IACD,mGAAmG;IACnG,mGAAmG;IACnG,sFAAsF;IACtF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC;QACjE,OAAO,MAAM,CAAC,qEAAqE,EAAE;YACnF,wFAAwF;SACzF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,EAAE,GAAe,EAAE;QAC3C,MAAM,UAAU,GAAuB,6BAA6B,CAClE,OAAO,EACP,kBAAkB,EAClB,YAAY,CACb,CAAA;QACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,yDAAyD,EAAE;gBACvE,wFAAwF;aACzF,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,UAAU,GAAe,OAAO,CAAC,OAAO,EAAE;YAC9C,UAAU;YACV,MAAM;YACN,+BAA+B;SAChC,CAAC,CAAA;QACF,OAAO,OAAO,CACZ,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,EAAE;YACnD,GAAG,EAAE,OAAO,CAAC,IAAI;YACjB,GAAG,EAAE,EAAE,YAAY,EAAE,mCAAmC,EAAE;SAC3D,CAAC,EACF,6BAA6B,EAC7B,6BAA6B,CAC9B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAc,EAAE;IACpD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,sEAAsE,CAAC,CAAA;IACvF,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,EAAE,GAAe,EAAE;QAC3C,MAAM,IAAI,GAAuB,6BAA6B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC/E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,6CAA6C,EAAE;gBAC3D,2EAA2E;aAC5E,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,UAAU,GAAe,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAChE,MAAM,MAAM,GAAc,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,EAAE;YAC7E,GAAG,EAAE,OAAO,CAAC,IAAI;YACjB,GAAG,EAAE;gBACH,uBAAuB,EAAE,GAAG;gBAC5B,YAAY,EAAE,4CAA4C;aAC3D;SACF,CAAC,CAAA;QACF,MAAM,OAAO,GAAe,OAAO,CACjC,MAAM,EACN,+BAA+B,EAC/B,6BAA6B,CAC9B,CAAA;QACD,6FAA6F;QAC7F,iGAAiG;QACjG,iBAAiB;QACjB,MAAM,SAAS,GAAsB,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC1F,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,EAAE,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1,6 +1,13 @@
1
1
  import { type Context } from '../context.js';
2
2
  import { type GateResult } from '../exec.js';
3
3
  export declare const treeSnapshot: (context: Context) => GateResult;
4
- /** Verify no gate modified a tracked file during verification. */
4
+ /**
5
+ * Verify the working tree is byte-for-byte what it was when the snapshot was taken.
6
+ *
7
+ * It compares two fingerprints, so it establishes THAT the tree changed and never WHO changed it. A gate
8
+ * rewriting a file is the reason the gate exists, but an editor saving a file while verification runs
9
+ * produces the same digest mismatch, and naming the first as the cause would be asserting something two
10
+ * hashes cannot show. The report offers both readings and leaves the choice to the reader.
11
+ */
5
12
  export declare const treeVerify: (context: Context) => GateResult;
6
13
  //# sourceMappingURL=tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/checks/tree.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AA0B5D,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,UAK/C,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,KAAG,UAY7C,CAAA"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/checks/tree.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AA0B5D,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,UAK/C,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,KAAG,UAa7C,CAAA"}
@@ -5,18 +5,18 @@
5
5
  import { createHash } from 'node:crypto';
6
6
  import { readFileSync, statSync } from 'node:fs';
7
7
  import path from 'node:path';
8
- import { trackedFiles } from '../context.js';
8
+ import { workingTreeFiles } from '../context.js';
9
9
  import { failed, passed } from '../exec.js';
10
10
  const fingerprint = (context) => {
11
11
  const hash = createHash('sha256');
12
- for (const file of trackedFiles(context.root)) {
12
+ for (const file of workingTreeFiles(context.root)) {
13
13
  const full = path.join(context.root, file);
14
14
  hash.update(file);
15
15
  try {
16
16
  hash.update(statSync(full).isFile() ? readFileSync(full) : Buffer.alloc(0));
17
17
  }
18
18
  catch {
19
- // A tracked-but-deleted path contributes its name only, so deleting one still changes the digest.
19
+ // An indexed-but-deleted path contributes its name only, so deleting one still changes the digest.
20
20
  hash.update('<absent>');
21
21
  }
22
22
  }
@@ -35,7 +35,14 @@ export const treeSnapshot = (context) => {
35
35
  snapshot = fingerprint(context);
36
36
  return passed(`tree fingerprint recorded (${snapshot.slice(0, FINGERPRINT_PREVIEW)})`);
37
37
  };
38
- /** Verify no gate modified a tracked file during verification. */
38
+ /**
39
+ * Verify the working tree is byte-for-byte what it was when the snapshot was taken.
40
+ *
41
+ * It compares two fingerprints, so it establishes THAT the tree changed and never WHO changed it. A gate
42
+ * rewriting a file is the reason the gate exists, but an editor saving a file while verification runs
43
+ * produces the same digest mismatch, and naming the first as the cause would be asserting something two
44
+ * hashes cannot show. The report offers both readings and leaves the choice to the reader.
45
+ */
39
46
  export const treeVerify = (context) => {
40
47
  if (snapshot === undefined) {
41
48
  return passed('no tree snapshot was taken, so there is nothing to compare');
@@ -43,8 +50,9 @@ export const treeVerify = (context) => {
43
50
  const current = fingerprint(context);
44
51
  return current === snapshot
45
52
  ? passed('the working tree is unchanged since verification began')
46
- : failed('a gate modified a tracked file during verification', [
47
- 'run `ploaness format`, review the result, and commit it before verifying',
53
+ : failed('the working tree changed during verification', [
54
+ 'a gate may have rewritten a file: run `ploaness format`, review the result, and commit it',
55
+ 'or a file was edited while verification was running, in which case re-run against a settled tree',
48
56
  `expected ${snapshot.slice(0, FINGERPRINT_PREVIEW)} but found ${current.slice(0, FINGERPRINT_PREVIEW)}`,
49
57
  'git status will show which files changed',
50
58
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/checks/tree.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,wGAAwG;AACxG,yGAAyG;AACzG,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAU,EAAE;IAC/C,MAAM,IAAI,GAAkC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAChE,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,kGAAkG;YAClG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC,CAAA;AAED,mGAAmG;AACnG,4DAA4D;AAC5D,2FAA2F;AAC3F,IAAI,QAA4B,CAAA;AAEhC,uEAAuE;AACvE,oGAAoG;AACpG,MAAM,mBAAmB,GAAW,EAAE,CAAA;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAc,EAAE;IAC3D,iFAAiF;IACjF,gGAAgG;IAChG,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAC,8BAA8B,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAA;AACxF,CAAC,CAAA;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAc,EAAE;IACzD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,4DAA4D,CAAC,CAAA;IAC7E,CAAC;IACD,MAAM,OAAO,GAAW,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5C,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC,MAAM,CAAC,wDAAwD,CAAC;QAClE,CAAC,CAAC,MAAM,CAAC,oDAAoD,EAAE;YAC3D,0EAA0E;YAC1E,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,cAAc,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE;YACvG,0CAA0C;SAC3C,CAAC,CAAA;AACR,CAAC,CAAA"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/checks/tree.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,wGAAwG;AACxG,yGAAyG;AACzG,0DAA0D;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAU,EAAE;IAC/C,MAAM,IAAI,GAAkC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAChE,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,mGAAmG;YACnG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC,CAAA;AAED,mGAAmG;AACnG,4DAA4D;AAC5D,2FAA2F;AAC3F,IAAI,QAA4B,CAAA;AAEhC,uEAAuE;AACvE,oGAAoG;AACpG,MAAM,mBAAmB,GAAW,EAAE,CAAA;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAc,EAAE;IAC3D,iFAAiF;IACjF,gGAAgG;IAChG,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAC,8BAA8B,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAA;AACxF,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAc,EAAE;IACzD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,4DAA4D,CAAC,CAAA;IAC7E,CAAC;IACD,MAAM,OAAO,GAAW,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5C,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC,MAAM,CAAC,wDAAwD,CAAC;QAClE,CAAC,CAAC,MAAM,CAAC,8CAA8C,EAAE;YACrD,2FAA2F;YAC3F,kGAAkG;YAClG,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,cAAc,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE;YACvG,0CAA0C;SAC3C,CAAC,CAAA;AACR,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.d.ts","sourceRoot":"","sources":["../../src/checks/wiring.ts"],"names":[],"mappings":"AAuBA,OAAO,EAEL,KAAK,UAAU,EAKhB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAwM5D,0GAA0G;AAC1G,eAAO,MAAM,MAAM,GAAI,YAAY,UAAU,KAAG,UAyB/C,CAAA"}
1
+ {"version":3,"file":"wiring.d.ts","sourceRoot":"","sources":["../../src/checks/wiring.ts"],"names":[],"mappings":"AAuBA,OAAO,EAEL,KAAK,UAAU,EAKhB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AA2O5D,0GAA0G;AAC1G,eAAO,MAAM,MAAM,GAAI,YAAY,UAAU,KAAG,UAyB/C,CAAA"}