@ploaness/cli 1.0.0 → 1.2.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 (99) hide show
  1. package/dist/checks/assets.d.ts +12 -0
  2. package/dist/checks/assets.d.ts.map +1 -1
  3. package/dist/checks/assets.js +27 -4
  4. package/dist/checks/assets.js.map +1 -1
  5. package/dist/checks/blocklist.d.ts +8 -0
  6. package/dist/checks/blocklist.d.ts.map +1 -0
  7. package/dist/checks/blocklist.js +106 -0
  8. package/dist/checks/blocklist.js.map +1 -0
  9. package/dist/checks/containers.d.ts +1 -1
  10. package/dist/checks/containers.d.ts.map +1 -1
  11. package/dist/checks/containers.js +31 -27
  12. package/dist/checks/containers.js.map +1 -1
  13. package/dist/checks/conventions.d.ts +2 -1
  14. package/dist/checks/conventions.d.ts.map +1 -1
  15. package/dist/checks/conventions.js +9 -7
  16. package/dist/checks/conventions.js.map +1 -1
  17. package/dist/checks/dependencies.d.ts.map +1 -1
  18. package/dist/checks/dependencies.js +83 -42
  19. package/dist/checks/dependencies.js.map +1 -1
  20. package/dist/checks/editorconfig.d.ts +1 -1
  21. package/dist/checks/editorconfig.d.ts.map +1 -1
  22. package/dist/checks/editorconfig.js +12 -10
  23. package/dist/checks/editorconfig.js.map +1 -1
  24. package/dist/checks/environment.d.ts +13 -0
  25. package/dist/checks/environment.d.ts.map +1 -0
  26. package/dist/checks/environment.js +50 -0
  27. package/dist/checks/environment.js.map +1 -0
  28. package/dist/checks/install.d.ts +2 -0
  29. package/dist/checks/install.d.ts.map +1 -1
  30. package/dist/checks/install.js +10 -1
  31. package/dist/checks/install.js.map +1 -1
  32. package/dist/checks/integrity.d.ts +1 -1
  33. package/dist/checks/integrity.d.ts.map +1 -1
  34. package/dist/checks/integrity.js +4 -4
  35. package/dist/checks/integrity.js.map +1 -1
  36. package/dist/checks/oxlint.d.ts +5 -0
  37. package/dist/checks/oxlint.d.ts.map +1 -0
  38. package/dist/checks/oxlint.js +85 -0
  39. package/dist/checks/oxlint.js.map +1 -0
  40. package/dist/checks/payload.d.ts +22 -1
  41. package/dist/checks/payload.d.ts.map +1 -1
  42. package/dist/checks/payload.js +194 -28
  43. package/dist/checks/payload.js.map +1 -1
  44. package/dist/checks/references.d.ts.map +1 -1
  45. package/dist/checks/references.js +3 -3
  46. package/dist/checks/references.js.map +1 -1
  47. package/dist/checks/suppressions.d.ts +2 -2
  48. package/dist/checks/suppressions.d.ts.map +1 -1
  49. package/dist/checks/suppressions.js +32 -12
  50. package/dist/checks/suppressions.js.map +1 -1
  51. package/dist/checks/tailwind.d.ts.map +1 -1
  52. package/dist/checks/tailwind.js +3 -3
  53. package/dist/checks/tailwind.js.map +1 -1
  54. package/dist/checks/tests.d.ts.map +1 -1
  55. package/dist/checks/tests.js +13 -5
  56. package/dist/checks/tests.js.map +1 -1
  57. package/dist/checks/tree.d.ts +9 -2
  58. package/dist/checks/tree.d.ts.map +1 -1
  59. package/dist/checks/tree.js +17 -29
  60. package/dist/checks/tree.js.map +1 -1
  61. package/dist/checks/wiring.d.ts +10 -0
  62. package/dist/checks/wiring.d.ts.map +1 -1
  63. package/dist/checks/wiring.js +50 -5
  64. package/dist/checks/wiring.js.map +1 -1
  65. package/dist/commands/format.d.ts +4 -1
  66. package/dist/commands/format.d.ts.map +1 -1
  67. package/dist/commands/format.js +17 -3
  68. package/dist/commands/format.js.map +1 -1
  69. package/dist/commands/init.d.ts.map +1 -1
  70. package/dist/commands/init.js +1 -3
  71. package/dist/commands/init.js.map +1 -1
  72. package/dist/context.d.ts +1 -2
  73. package/dist/context.d.ts.map +1 -1
  74. package/dist/context.js +25 -24
  75. package/dist/context.js.map +1 -1
  76. package/dist/gates.d.ts.map +1 -1
  77. package/dist/gates.js +56 -12
  78. package/dist/gates.js.map +1 -1
  79. package/dist/probes/payload-defaults.probe.d.ts +2 -0
  80. package/dist/probes/payload-defaults.probe.d.ts.map +1 -0
  81. package/dist/probes/payload-defaults.probe.js +116 -0
  82. package/dist/probes/payload-defaults.probe.js.map +1 -0
  83. package/dist/secret-mirror.d.ts +3 -0
  84. package/dist/secret-mirror.d.ts.map +1 -0
  85. package/dist/secret-mirror.js +51 -0
  86. package/dist/secret-mirror.js.map +1 -0
  87. package/dist/source-comments.d.ts +9 -0
  88. package/dist/source-comments.d.ts.map +1 -0
  89. package/dist/source-comments.js +54 -0
  90. package/dist/source-comments.js.map +1 -0
  91. package/dist/working-tree.d.ts +5 -0
  92. package/dist/working-tree.d.ts.map +1 -0
  93. package/dist/working-tree.js +36 -0
  94. package/dist/working-tree.js.map +1 -0
  95. package/package.json +8 -7
  96. package/dist/commands/hooks.d.ts +0 -9
  97. package/dist/commands/hooks.d.ts.map +0 -1
  98. package/dist/commands/hooks.js +0 -57
  99. package/dist/commands/hooks.js.map +0 -1
@@ -4,10 +4,11 @@
4
4
  // behind" is, and that is a real liability.
5
5
  import { realpathSync } from 'node:fs';
6
6
  import path from 'node:path';
7
- import { asRecord, asText, collectCoordinates, findFreshnessViolations, findLicenseViolations, HARNESS_EXCEPTIONS, HARNESS_PACKAGE, hoursPublished, inheritedManifestPaths, isArray, isHeldByReleaseAge, isRecord, judgeVulnerabilities, mapWithConcurrency, NETWORKED_TOOL_TIMEOUT_MS, REGISTRY_CONCURRENCY, RELEASE_AGE_FLOOR_HOURS, REQUEST_TIMEOUT_MS, } from '@ploaness/governance';
8
- import { manifestPathFrom, readJson, trackedFiles } from '../context.js';
7
+ import { asRecord, asText, collectCoordinates, findFreshnessViolations, findLicenseViolations, HARNESS_EXCEPTIONS, HARNESS_PACKAGE, hoursPublished, inheritedManifestPaths, isArray, isHarnessRelease, isHarnessRepository, isHeldByReleaseAge, isRecord, judgeVulnerabilities, mapWithConcurrency, NETWORKED_TOOL_TIMEOUT_MS, REGISTRY_CONCURRENCY, RELEASE_AGE_FLOOR_HOURS, REQUEST_TIMEOUT_MS, scopeFreshness, sectionFreshnessReport, } from '@ploaness/governance';
8
+ import { manifestPathFrom, readJson, workingTreeFiles } from '../context.js';
9
9
  import { failed, passed, run, TIMED_OUT_CODE, withOutput, } from '../exec.js';
10
10
  import { imageFreshness } from './images.js';
11
+ import { harnessDecidedVersions } from './wiring.js';
11
12
  /** Every dependency license must sit inside the allowlist. */
12
13
  // Report enough of a tool's raw output to diagnose it, without pasting a whole log into a finding.
13
14
  const MAX_REPORTED_CHARS = 2000;
@@ -43,7 +44,7 @@ export const licenses = (context) => {
43
44
  const MANIFEST_NAME = 'package.json';
44
45
  // Every manifest the repository tracks, not only the root one. A workspace declares its toolchain across
45
46
  // several of them, and reading the root alone left every analyzer ploaness itself runs on unmeasured.
46
- const trackedManifests = (context) => trackedFiles(context.root)
47
+ const repositoryManifests = (context) => workingTreeFiles(context.root)
47
48
  .filter((file) => file === MANIFEST_NAME || file.endsWith(`/${MANIFEST_NAME}`))
48
49
  .map((file) => ({
49
50
  path: file,
@@ -52,7 +53,7 @@ const trackedManifests = (context) => trackedFiles(context.root)
52
53
  }));
53
54
  // A path as the filesystem finally names it, so the same manifest reached two ways compares equal.
54
55
  // Under pnpm every installed package is a symlink into the store, and in a workspace it is a symlink
55
- // back into the tree - which is how an inherited manifest can turn out to be a tracked one.
56
+ // back into the tree - which is how an inherited manifest can turn out to be one of the repository's own.
56
57
  const realPathOrSelf = (file) => {
57
58
  try {
58
59
  return realpathSync(file);
@@ -72,10 +73,10 @@ const declaredName = (packageJson, fallback) => asText(asRecord(packageJson)['na
72
73
  // The manifests a project INHERITS: `ploaness` as the project itself resolves it, and every ploaness
73
74
  // package that one pulls in. The standard counts these as declared coordinates, and they are the
74
75
  // manifests that decide which analyzer versions the project's gates actually run - none of which the
75
- // project tracks, so a reader of tracked files alone could never see them. That is why a consumer's
76
+ // project's own tree holds, so a reader of the working tree alone could never see them. That is why a consumer's
76
77
  // update report was silent about a harness pin going stale while ploaness's own report was not.
77
- const inheritedManifests = (context, tracked) => {
78
- const alreadyRead = new Set(tracked.map((manifest) => realPathOrSelf(path.join(context.root, manifest.path))));
78
+ const inheritedManifests = (context, own) => {
79
+ const alreadyRead = new Set(own.map((manifest) => realPathOrSelf(path.join(context.root, manifest.path))));
79
80
  const entry = manifestPathFrom(HARNESS_PACKAGE, path.join(context.root, MANIFEST_NAME));
80
81
  return inheritedManifestPaths(entry, HARNESS_RESOLVER)
81
82
  .filter((file) => !alreadyRead.has(realPathOrSelf(file)))
@@ -89,8 +90,8 @@ const inheritedManifests = (context, tracked) => {
89
90
  });
90
91
  };
91
92
  const manifestSources = (context) => {
92
- const tracked = trackedManifests(context);
93
- return [...tracked, ...inheritedManifests(context, tracked)];
93
+ const own = repositoryManifests(context);
94
+ return [...own, ...inheritedManifests(context, own)];
94
95
  };
95
96
  // The registry exposes two documents per package: the packument root and, per version, a version
96
97
  // document. `/{name}/latest` is the version document for the `latest` dist-tag and costs a few kilobytes,
@@ -133,7 +134,13 @@ const attemptLookup = async (name) => {
133
134
  if (response.ok) {
134
135
  const body = await response.json();
135
136
  const version = asRecord(body)['version'];
136
- return typeof version === 'string' ? { kind: 'version', version } : { kind: 'absent' };
137
+ // The licence rides along so the blocklist can stop the bound short of a release the licence gate
138
+ // would refuse. Read only as a string: an old package records it as an object, which says nothing
139
+ // this rule can judge.
140
+ const license = asRecord(body)['license'];
141
+ return typeof version === 'string'
142
+ ? { kind: 'version', version, license: typeof license === 'string' ? license : undefined }
143
+ : { kind: 'absent' };
137
144
  }
138
145
  // A 404 is a real answer, and retrying cannot change it.
139
146
  return response.status === NOT_FOUND ? { kind: 'absent' } : undefined;
@@ -154,7 +161,13 @@ const sortLookups = (coordinates, lookups) => {
154
161
  if (lookup?.kind !== 'version') {
155
162
  return [];
156
163
  }
157
- return [{ ...coordinate, latest: lookup.version }];
164
+ return [
165
+ {
166
+ ...coordinate,
167
+ latest: lookup.version,
168
+ ...(lookup.license !== undefined && { latestLicense: lookup.license }),
169
+ },
170
+ ];
158
171
  });
159
172
  return {
160
173
  statuses,
@@ -196,19 +209,17 @@ const publishedAt = async (name, version) => {
196
209
  // report to name it for every coordinate, and a workspace pinning one analyzer in two places is exactly
197
210
  // the case where the bare package name says nothing about where to make the change.
198
211
  const describeFinding = (finding) => `${finding.owner} ${finding.name}: declared ${finding.current}, latest ${finding.latest}`;
199
- // A line names its repair, and for an inherited coordinate that is not the repair every other line
200
- // names. The project cannot edit a version ploaness declares, so "change the declaration" would be
201
- // advice it has no file to act on; upgrading the harness is the move, and reporting it is the move when
202
- // no release carries the newer pin yet. The same answer `HARNESS_EXCEPTIONS` gives for an advisory
203
- // carried by ploaness's own chain.
204
- const HARNESS_REPAIR = ' - declared by ploaness rather than by the project, so upgrade ploaness, or report it if no ' +
205
- 'release carries the newer pin';
212
+ // Said on the harness release's own line, because it is the one update in the project's group whose
213
+ // repair is also the repair of every line in the two groups beneath it.
214
+ const HARNESS_RELEASE_NOTE = ' - upgrading it is what moves every version ploaness decides';
206
215
  // `stale`, not `update`, for a coordinate past the bound that does not stop this build. Printed as an
207
216
  // ordinary update it would bury the one line saying the harness itself is overdue among a dozen saying
208
- // a patch release exists.
217
+ // a patch release exists. What to DO about either is the heading's job, so neither line repeats it: a
218
+ // note on every inherited row was what a consuming project reported as noise.
219
+ const harnessNote = (finding) => isHarnessRelease(finding) ? HARNESS_RELEASE_NOTE : '';
209
220
  const describeReported = (finding) => finding.verdict === 'fail'
210
- ? `stale ${describeFinding(finding)}; past the freshness bound${HARNESS_REPAIR}`
211
- : `update ${describeFinding(finding)}`;
221
+ ? `stale ${describeFinding(finding)}; past the freshness bound`
222
+ : `update ${describeFinding(finding)}${harnessNote(finding)}`;
212
223
  // `held`, not `update`, for a release pnpm will refuse for being too young. Naming it as an ordinary
213
224
  // update sends the reader to an install that fails, and the way past that failure is an exclusion from
214
225
  // the very guard the wait exists to keep. It says the age so the reader can see how short the wait is.
@@ -218,19 +229,46 @@ const describeHeld = (finding, hours) => {
218
229
  `${String(RELEASE_AGE_FLOOR_HOURS)}h release-age floor pnpm enforces, so it installs once it ages`);
219
230
  };
220
231
  // A date is asked for only where it can change the line: a coordinate already past the bound is stale
221
- // whatever its age, and one this project cannot edit is reported to a different address entirely.
222
- const isHeldCandidate = (finding) => finding.verdict === 'update' && !finding.isInherited;
223
- const describeUpdates = async (reported, now) => await mapWithConcurrency(reported, REGISTRY_CONCURRENCY, async (finding) => {
224
- if (!isHeldCandidate(finding)) {
232
+ // whatever its age, and one the project cannot install on its own - a pin, or a line in an inherited
233
+ // manifest - is not waiting on the registry at all.
234
+ const isHeldCandidate = (finding, repair) => finding.verdict === 'update' && repair === 'project';
235
+ const describeLine = async (finding, repair, now) => {
236
+ if (!isHeldCandidate(finding, repair)) {
225
237
  return describeReported(finding);
226
238
  }
227
- const age = {
228
- publishedAt: await publishedAt(finding.name, finding.latest),
229
- now,
230
- };
239
+ const age = { publishedAt: await publishedAt(finding.name, finding.latest), now };
231
240
  return isHeldByReleaseAge(age)
232
241
  ? describeHeld(finding, hoursPublished(age))
233
242
  : describeReported(finding);
243
+ };
244
+ // The images ploaness pins are declared in the harness, so in a consumer they sit with the manifests
245
+ // it inherits; in ploaness's own repository they are its own to change like everything else there.
246
+ const imageRepair = (ownership) => ownership.isHarnessItself ? 'project' : 'inherited';
247
+ const INDENT = ' ';
248
+ // A group prints only when it has a line to put under its heading, because a heading over nothing is
249
+ // a claim about nothing. The lines are indented beneath it so the heading reads as one.
250
+ const describeSection = async (section, images, now) => {
251
+ const described = await mapWithConcurrency(section.findings, REGISTRY_CONCURRENCY, async (finding) => describeLine(finding, section.repair, now));
252
+ const body = [...described, ...images];
253
+ return body.length === 0
254
+ ? []
255
+ : [section.heading, ...body.map((line) => `${INDENT}${line}`)];
256
+ };
257
+ // A blank line between groups and nothing else, so a two-group report is two paragraphs rather than
258
+ // a heading lost in the middle of a list.
259
+ const separated = (groups) => groups
260
+ .filter((group) => group.length > 0)
261
+ .flatMap((group, index) => index === 0 ? group : ['', ...group]);
262
+ // The groups are described one after another rather than all at once, so the registry sees one
263
+ // group's lookups at a time; only the project's own group asks it anything.
264
+ const ONE_GROUP_AT_A_TIME = 1;
265
+ const describeUpdates = async (reported, ownership, images, now) => separated(await mapWithConcurrency(sectionFreshnessReport(reported, ownership), ONE_GROUP_AT_A_TIME, async (section) => describeSection(section, section.repair === imageRepair(ownership) ? images.lines : [], now)));
266
+ // Whose version each name is, read from the same map the wiring gate holds a project to. A name in it
267
+ // is one the project declares and may not change, which is the whole difference between the first two
268
+ // groups of the report.
269
+ const ownershipOf = (manifests) => ({
270
+ pinnedByHarness: new Set(Object.keys(harnessDecidedVersions())),
271
+ isHarnessItself: isHarnessRepository(manifests),
234
272
  });
235
273
  // One lookup per distinct name, fanned back out across the coordinates that share it. A workspace
236
274
  // declaring the same analyzer in three manifests must not ask the registry three times.
@@ -301,21 +339,24 @@ export const dependencyFreshness = async (context) => {
301
339
  'this gate is fail-closed by design; retry with network access',
302
340
  ]);
303
341
  }
304
- const notes = unpublished.map((name) => `note ${name} is not on the public registry, so freshness is not measurable`);
305
- const report = findFreshnessViolations(statuses);
342
+ // A coordinate whose newest release is refused is measured up to the last release it may install,
343
+ // never past it: failing a project for not upgrading into a release another gate refuses would leave
344
+ // it no green state at all.
345
+ const scope = scopeFreshness(statuses);
346
+ const notes = [
347
+ ...unpublished.map((name) => `note ${name} is not on the public registry, so freshness is not measurable`),
348
+ ...scope.refused.map((entry) => `note ${entry.note}`),
349
+ ];
350
+ const report = findFreshnessViolations(scope.measurable);
351
+ const updates = await describeUpdates(report.reported, ownershipOf(manifests), images, Date.now());
306
352
  if (report.failures.length > 0) {
307
- return failed(`${String(report.failures.length)} dependency/dependencies are two or more majors behind`, [
308
- ...report.failures.map((finding) => describeFinding(finding)),
309
- ...(await describeUpdates(report.reported, Date.now())),
310
- ...images.lines,
311
- ...notes,
312
- ]);
353
+ return failed(`${String(report.failures.length)} dependency/dependencies are two or more majors behind`, separated([
354
+ report.failures.map((finding) => describeFinding(finding)),
355
+ updates,
356
+ notes,
357
+ ]));
313
358
  }
314
- return passed(freshnessSummary(statuses, manifests, report, images), [
315
- ...(await describeUpdates(report.reported, Date.now())),
316
- ...images.lines,
317
- ...notes,
318
- ]);
359
+ return passed(freshnessSummary(statuses, manifests, report, images), separated([updates, notes]));
319
360
  };
320
361
  const asStrings = (raw) => isArray(raw) ? raw.filter((entry) => typeof entry === 'string') : [];
321
362
  const textAt = (raw, key, fallback) => {
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/checks/dependencies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/checks/dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Context } from '../context.js';
2
2
  import { type GateResult } from '../exec.js';
3
- /** Check every tracked text file against the committed `.editorconfig`. */
3
+ /** Check every text file in the working tree against the committed `.editorconfig`. */
4
4
  export declare const editorconfig: (context: Context) => GateResult;
5
5
  //# sourceMappingURL=editorconfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editorconfig.d.ts","sourceRoot":"","sources":["../../src/checks/editorconfig.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAS5D,2EAA2E;AAC3E,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,UAoC/C,CAAA"}
1
+ {"version":3,"file":"editorconfig.d.ts","sourceRoot":"","sources":["../../src/checks/editorconfig.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAS5D,uFAAuF;AACvF,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,UAsC/C,CAAA"}
@@ -1,15 +1,17 @@
1
1
  // Conformance to the committed `.editorconfig`. The decision lives in governance; this reads the tree.
2
2
  //
3
- // Every tracked file is checked except those excluded by role: a binary asset, recognised from its own
4
- // bytes, and a path the project declares generated. The standard's line cap applies to code roles only,
5
- // because a line cap is a Code Rule and prose wraps by meaning rather than by column.
3
+ // Every file in the working tree is checked except those excluded by role: a binary asset, recognised
4
+ // from its own bytes rather than from its name, and a path the project excludes from the typography
5
+ // rules. The standard's line cap is narrower still, because a cap is a Code Rule written for a person:
6
+ // it binds on authored code, not on prose, which wraps by meaning rather than by column, and not on a
7
+ // path the project declares generated, whose lines nobody here chose.
6
8
  import { existsSync, readFileSync, statSync } from 'node:fs';
7
9
  import path from 'node:path';
8
- import { CODE_EXTENSIONS, findEditorconfigViolations, hasExtension, isBinary, matchesRole, parseEditorconfig, } from '@ploaness/governance';
9
- import { trackedFiles } from '../context.js';
10
+ import { findEditorconfigViolations, isBinary, isLineCapEnforced, matchesRole, parseEditorconfig, } from '@ploaness/governance';
11
+ import { workingTreeFiles } from '../context.js';
10
12
  import { failed, passed } from '../exec.js';
11
13
  const CONFIG_FILE = '.editorconfig';
12
- /** Check every tracked text file against the committed `.editorconfig`. */
14
+ /** Check every text file in the working tree against the committed `.editorconfig`. */
13
15
  export const editorconfig = (context) => {
14
16
  const configPath = path.join(context.root, CONFIG_FILE);
15
17
  if (!existsSync(configPath)) {
@@ -18,9 +20,9 @@ export const editorconfig = (context) => {
18
20
  ]);
19
21
  }
20
22
  const rules = parseEditorconfig(readFileSync(configPath, 'utf8'));
21
- // A tracked path is not always a regular file: a symlink and a submodule gitlink both appear here,
23
+ // An enumerated path is not always a regular file: a symlink and a submodule gitlink both appear here,
22
24
  // and reading either throws rather than yielding text.
23
- const tracked = trackedFiles(context.root).filter((file) => {
25
+ const tracked = workingTreeFiles(context.root).filter((file) => {
24
26
  const full = path.join(context.root, file);
25
27
  return existsSync(full) && statSync(full).isFile();
26
28
  });
@@ -29,10 +31,10 @@ export const editorconfig = (context) => {
29
31
  .filter((file) => !matchesRole(file, context.settings.typographyExclusions))
30
32
  .map((file) => ({ file, bytes: readFileSync(path.join(context.root, file)) }))
31
33
  .filter((entry) => !isBinary(entry.bytes));
32
- const findings = readable.flatMap((entry) => findEditorconfigViolations(entry.bytes.toString('utf8'), rules, hasExtension(entry.file, CODE_EXTENSIONS)).map((violation) => `${entry.file}:${String(violation.line)} ${violation.reason}`));
34
+ const findings = readable.flatMap((entry) => findEditorconfigViolations(entry.bytes.toString('utf8'), rules, isLineCapEnforced(entry.file, context.settings.generatedArtefacts)).map((violation) => `${entry.file}:${String(violation.line)} ${violation.reason}`));
33
35
  const checked = readable.length;
34
36
  return findings.length > 0
35
37
  ? failed(`${String(findings.length)} formatting violation(s)`, findings)
36
- : passed(`${String(checked)} tracked file(s) match ${CONFIG_FILE}`);
38
+ : passed(`${String(checked)} working-tree file(s) match ${CONFIG_FILE}`);
37
39
  };
38
40
  //# sourceMappingURL=editorconfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editorconfig.js","sourceRoot":"","sources":["../../src/checks/editorconfig.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,EAAE;AACF,uGAAuG;AACvG,wGAAwG;AACxG,sFAAsF;AACtF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EACL,eAAe,EAGf,0BAA0B,EAC1B,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,iBAAiB,GAClB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,WAAW,GAAW,eAAe,CAAA;AAO3C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAc,EAAE;IAC3D,MAAM,UAAU,GAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC/D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,GAAG,WAAW,6CAA6C,EAAE;YACzE,GAAG,WAAW,uDAAuD;SACtE,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,KAAK,GAAsB,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;IACpF,mGAAmG;IACnG,uDAAuD;IACvD,MAAM,OAAO,GAAsB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAW,EAAE;QAC7F,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAClD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,sGAAsG;IACtG,MAAM,QAAQ,GAAwB,OAAO;SAC1C,MAAM,CAAC,CAAC,IAAY,EAAW,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;SAC5F,GAAG,CAAC,CAAC,IAAY,EAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/F,MAAM,CAAC,CAAC,KAAe,EAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAE/D,MAAM,QAAQ,GAAsB,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAe,EAAqB,EAAE,CAC1F,0BAA0B,CACxB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC5B,KAAK,EACL,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAC1C,CAAC,GAAG,CACH,CAAC,SAAgC,EAAU,EAAE,CAC3C,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAChE,CACF,CAAA;IACD,MAAM,OAAO,GAAW,QAAQ,CAAC,MAAM,CAAA;IAEvC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,0BAA0B,EAAE,QAAQ,CAAC;QACxE,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAA;AACvE,CAAC,CAAA"}
1
+ {"version":3,"file":"editorconfig.js","sourceRoot":"","sources":["../../src/checks/editorconfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type Repository as Repo } from '../context.js';
2
+ import { type GateResult } from '../exec.js';
3
+ /**
4
+ * Every environment variable the repository declares in one place reaches the others it has to.
5
+ *
6
+ * A repository that reads no variable, ships no compose file, and runs no verifying workflow passes over
7
+ * an empty set rather than being declared inapplicable - the same shape the container gate takes, and
8
+ * for the same reason: the day one of those appears it is already checked.
9
+ * @param repository the repository being judged, and the members whose modules it holds.
10
+ * @returns the gate result.
11
+ */
12
+ export declare const environment: (repository: Repo) => GateResult;
13
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/checks/environment.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAe,KAAK,UAAU,IAAI,IAAI,EAAoB,MAAM,eAAe,CAAA;AACtF,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AA4C5D;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,YAAY,IAAI,KAAG,UAa9C,CAAA"}
@@ -0,0 +1,50 @@
1
+ // The environment-coherence gate. It reads four kinds of file and calls one pure function; every
2
+ // decision is in packages/governance/src/environment-coherence.ts.
3
+ import { existsSync, readFileSync } from 'node:fs';
4
+ import path from 'node:path';
5
+ import { composeProjectsIn, ENVIRONMENT_EXAMPLE_FILES, findEnvironmentViolations, VALIDATED_ENVIRONMENT_MODULE, workflowsIn, } from '@ploaness/governance';
6
+ import { workingTreeFiles } from '../context.js';
7
+ import { failed, passed } from '../exec.js';
8
+ const readIfPresent = (root, relativePath) => {
9
+ const file = path.join(root, relativePath);
10
+ return existsSync(file) ? readFileSync(file, 'utf8') : undefined;
11
+ };
12
+ const isPresent = (value) => value !== undefined;
13
+ // One example file per repository, taken in the declared order. A project that ships two has documented
14
+ // its environment twice and the first is the one a reader is pointed at, so reading both would let the
15
+ // weaker copy vouch for the stronger.
16
+ const exampleFile = (repository) => ENVIRONMENT_EXAMPLE_FILES.map((candidate) => readIfPresent(repository.root, candidate)).find(isPresent);
17
+ // Per member, because a workspace holds one validated module per application, and a member that is a
18
+ // library has none.
19
+ const appSources = (repository) => repository.members
20
+ .map((member) => readIfPresent(repository.root, path.join(member.path, VALIDATED_ENVIRONMENT_MODULE)))
21
+ .filter(isPresent);
22
+ const composeSources = (repository) => composeProjectsIn(workingTreeFiles(repository.root)).map((project) => readFileSync(path.join(repository.root, project.file), 'utf8'));
23
+ // Discovered by the same rule the blocklist gate reads workflows by, so the two never disagree about
24
+ // what a workflow is.
25
+ const workflows = (repository) => workflowsIn(workingTreeFiles(repository.root)).map((file) => ({
26
+ file,
27
+ content: readFileSync(path.join(repository.root, file), 'utf8'),
28
+ }));
29
+ const describe = (violation) => `${violation.name}: ${violation.reason}`;
30
+ /**
31
+ * Every environment variable the repository declares in one place reaches the others it has to.
32
+ *
33
+ * A repository that reads no variable, ships no compose file, and runs no verifying workflow passes over
34
+ * an empty set rather than being declared inapplicable - the same shape the container gate takes, and
35
+ * for the same reason: the day one of those appears it is already checked.
36
+ * @param repository the repository being judged, and the members whose modules it holds.
37
+ * @returns the gate result.
38
+ */
39
+ export const environment = (repository) => {
40
+ const violations = findEnvironmentViolations({
41
+ applicationSources: appSources(repository),
42
+ example: exampleFile(repository),
43
+ composeSources: composeSources(repository),
44
+ workflows: workflows(repository),
45
+ });
46
+ return violations.length > 0
47
+ ? failed(`${String(violations.length)} environment variable(s) are declared in one place and missing from another`, violations.map((violation) => describe(violation)))
48
+ : passed('every declared environment variable reaches the places that need it');
49
+ };
50
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/checks/environment.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,6 @@ import type { Repository as Repo } from '../context.js';
2
2
  import { type GateResult } from '../exec.js';
3
3
  /** The repository must name the dependencies permitted to run an install script. */
4
4
  export declare const installScripts: (repo: Repo) => GateResult;
5
+ /** The repository must keep pnpm's release-age floor strict, and may exempt only the harness from it. */
6
+ export declare const releaseAge: (repo: Repo) => GateResult;
5
7
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/checks/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,IAAI,IAAI,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAQ5D,oFAAoF;AACpF,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,KAAG,UAMpC,CAAA"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/checks/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,IAAI,IAAI,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAQ5D,oFAAoF;AACpF,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,KAAG,UAMpC,CAAA;AAIR,yGAAyG;AACzG,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,UAQvC,CAAA"}
@@ -4,7 +4,7 @@
4
4
  // `pnpm install` - the broadest surface a project has for executing code it never called. The gate
5
5
  // requires the allowlist to exist and says nothing about what is on it: which packages a project trusts
6
6
  // with an install script is a decision for the project to record, not one the harness can make for it.
7
- import { declaresInstallScriptAllowlist } from '@ploaness/governance';
7
+ import { declaresInstallScriptAllowlist, findReleaseAgeViolations } from '@ploaness/governance';
8
8
  import { failed, passed } from '../exec.js';
9
9
  const WORKSPACE_FILE = 'pnpm-workspace.yaml';
10
10
  // The workspace file arrives already read, from the repository root. It used to be read relative to
@@ -18,4 +18,13 @@ export const installScripts = (repo) => declaresInstallScriptAllowlist(repo.work
18
18
  `declare onlyBuiltDependencies in ${WORKSPACE_FILE}, or under the "pnpm" key of package.json`,
19
19
  'an empty list is a valid answer: it permits no dependency to run an install script',
20
20
  ]);
21
+ // The same file, read the same way, for the other half of install policy: what pnpm may install at all.
22
+ // The decisions are in `install-policy.ts`; this hands over the file and names the gate.
23
+ /** The repository must keep pnpm's release-age floor strict, and may exempt only the harness from it. */
24
+ export const releaseAge = (repo) => {
25
+ const findings = findReleaseAgeViolations(repo.workspaceFile);
26
+ return findings.length > 0
27
+ ? failed(`${String(findings.length)} release-age setting(s) weaken the floor pnpm enforces`, findings)
28
+ : passed('the release-age floor is strict, and only the harness is excluded from it');
29
+ };
21
30
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/checks/install.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,EAAE;AACF,kGAAkG;AAClG,mGAAmG;AACnG,wGAAwG;AACxG,uGAAuG;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAA;AAErE,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,cAAc,GAAW,qBAAqB,CAAA;AAEpD,oGAAoG;AACpG,uGAAuG;AACvG,kGAAkG;AAClG,uDAAuD;AACvD,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAU,EAAc,EAAE,CACvD,8BAA8B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;IAClE,CAAC,CAAC,MAAM,CAAC,kEAAkE,CAAC;IAC5E,CAAC,CAAC,MAAM,CAAC,yCAAyC,EAAE;QAChD,oCAAoC,cAAc,2CAA2C;QAC7F,oFAAoF;KACrF,CAAC,CAAA"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/checks/install.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,EAAE;AACF,kGAAkG;AAClG,mGAAmG;AACnG,wGAAwG;AACxG,uGAAuG;AACvG,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE/F,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,cAAc,GAAW,qBAAqB,CAAA;AAEpD,oGAAoG;AACpG,uGAAuG;AACvG,kGAAkG;AAClG,uDAAuD;AACvD,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAU,EAAc,EAAE,CACvD,8BAA8B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;IAClE,CAAC,CAAC,MAAM,CAAC,kEAAkE,CAAC;IAC5E,CAAC,CAAC,MAAM,CAAC,yCAAyC,EAAE;QAChD,oCAAoC,cAAc,2CAA2C;QAC7F,oFAAoF;KACrF,CAAC,CAAA;AAER,wGAAwG;AACxG,yFAAyF;AACzF,yGAAyG;AACzG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAU,EAAc,EAAE;IACnD,MAAM,QAAQ,GAAsB,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAChF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,MAAM,CACJ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,wDAAwD,EAClF,QAAQ,CACT;QACH,CAAC,CAAC,MAAM,CAAC,2EAA2E,CAAC,CAAA;AACzF,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { type Context } from '../context.js';
2
2
  import { type GateResult } from '../exec.js';
3
- /** Decode every tracked image and fail on any that is corrupt or truncated. */
3
+ /** Decode every image in the working tree and fail on any that is corrupt or truncated. */
4
4
  export declare const imageAssets: (context: Context) => GateResult;
5
5
  /**
6
6
  * Measure the total gzipped client JavaScript against the budget. Gzipped byte counts of built output are
@@ -1 +1 @@
1
- {"version":3,"file":"integrity.d.ts","sourceRoot":"","sources":["../../src/checks/integrity.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,OAAO,EAA+B,MAAM,eAAe,CAAA;AACzE,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAE5D,+EAA+E;AAC/E,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,UAc9C,CAAA;AAeD;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,UA8BzC,CAAA"}
1
+ {"version":3,"file":"integrity.d.ts","sourceRoot":"","sources":["../../src/checks/integrity.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,OAAO,EAAmC,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAE5D,2FAA2F;AAC3F,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,UAc9C,CAAA;AAeD;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,OAAO,KAAG,UA8BzC,CAAA"}
@@ -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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"}
@@ -0,0 +1,5 @@
1
+ import { type Member } from '../context.js';
2
+ import { type GateResult } from '../exec.js';
3
+ /** Native core checks for every member, with accessibility only in the existing application scope. */
4
+ export declare const oxlint: (member: Member) => GateResult;
5
+ //# sourceMappingURL=oxlint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oxlint.d.ts","sourceRoot":"","sources":["../../src/checks/oxlint.ts"],"names":[],"mappings":"AAmBA,OAAO,EAGL,KAAK,MAAM,EAKZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAU,KAAK,UAAU,EAA+C,MAAM,YAAY,CAAA;AAsGjG,sGAAsG;AACtG,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,KAAG,UAmBvC,CAAA"}