@codyswann/lisa 3.47.10 → 3.48.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/all/copy-overwrite/scripts/lisa-work-item.mjs +19 -6
- package/dist/cli/doctor-render.d.ts +22 -0
- package/dist/cli/doctor-render.d.ts.map +1 -0
- package/dist/cli/doctor-render.js +27 -0
- package/dist/cli/doctor-render.js.map +1 -0
- package/dist/cli/doctor.d.ts +15 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +2 -9
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/gate-report-cells.d.ts +101 -0
- package/dist/cli/gate-report-cells.d.ts.map +1 -0
- package/dist/cli/gate-report-cells.js +269 -0
- package/dist/cli/gate-report-cells.js.map +1 -0
- package/dist/cli/gate-report-config.d.ts +28 -0
- package/dist/cli/gate-report-config.d.ts.map +1 -0
- package/dist/cli/gate-report-config.js +33 -0
- package/dist/cli/gate-report-config.js.map +1 -0
- package/dist/cli/gate-report-executors.d.ts +62 -0
- package/dist/cli/gate-report-executors.d.ts.map +1 -0
- package/dist/cli/gate-report-executors.js +218 -0
- package/dist/cli/gate-report-executors.js.map +1 -0
- package/dist/cli/gate-report-preview.d.ts +27 -0
- package/dist/cli/gate-report-preview.d.ts.map +1 -0
- package/dist/cli/gate-report-preview.js +286 -0
- package/dist/cli/gate-report-preview.js.map +1 -0
- package/dist/cli/gate-report-registry.d.ts +68 -0
- package/dist/cli/gate-report-registry.d.ts.map +1 -0
- package/dist/cli/gate-report-registry.js +52 -0
- package/dist/cli/gate-report-registry.js.map +1 -0
- package/dist/cli/gate-report-ruleset.d.ts +60 -0
- package/dist/cli/gate-report-ruleset.d.ts.map +1 -0
- package/dist/cli/gate-report-ruleset.js +132 -0
- package/dist/cli/gate-report-ruleset.js.map +1 -0
- package/dist/cli/gate-report-skip-jobs.d.ts +34 -0
- package/dist/cli/gate-report-skip-jobs.d.ts.map +1 -0
- package/dist/cli/gate-report-skip-jobs.js +42 -0
- package/dist/cli/gate-report-skip-jobs.js.map +1 -0
- package/dist/cli/gate-report-summary.d.ts +18 -0
- package/dist/cli/gate-report-summary.d.ts.map +1 -0
- package/dist/cli/gate-report-summary.js +80 -0
- package/dist/cli/gate-report-summary.js.map +1 -0
- package/dist/cli/gate-report-types.d.ts +206 -0
- package/dist/cli/gate-report-types.d.ts.map +1 -0
- package/dist/cli/gate-report-types.js +19 -0
- package/dist/cli/gate-report-types.js.map +1 -0
- package/dist/cli/gate-report.d.ts +35 -0
- package/dist/cli/gate-report.d.ts.map +1 -0
- package/dist/cli/gate-report.js +317 -0
- package/dist/cli/gate-report.js.map +1 -0
- package/dist/cli/ui-github-repo-gh.d.ts +14 -0
- package/dist/cli/ui-github-repo-gh.d.ts.map +1 -1
- package/dist/cli/ui-github-repo-gh.js +6 -1
- package/dist/cli/ui-github-repo-gh.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +1 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +19 -1
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
|
@@ -1955,11 +1955,22 @@ function backlinkAdvice(ref, prUrl, contract) {
|
|
|
1955
1955
|
/**
|
|
1956
1956
|
* The FIVE gates a work item passes on its way to merged, and when each bites.
|
|
1957
1957
|
*
|
|
1958
|
-
* They are five separate
|
|
1959
|
-
*
|
|
1960
|
-
*
|
|
1961
|
-
*
|
|
1962
|
-
*
|
|
1958
|
+
* They are five separate requirements, met at five different moments — so
|
|
1959
|
+
* clearing four says nothing about the fifth, and the reader has no way to
|
|
1960
|
+
* learn the fifth exists until it goes red. Measured: two agents in one day
|
|
1961
|
+
* each satisfied three of them and were surprised by another, on a pull request
|
|
1962
|
+
* that was otherwise finished.
|
|
1963
|
+
*
|
|
1964
|
+
* FOUR of the five are ENFORCED; gate 2 is not, and the list says so on its own
|
|
1965
|
+
* line. Claim state stopped being a precondition for committing — see the note
|
|
1966
|
+
* where `assertClaimedLifecycle` used to be — and nothing in this file refuses
|
|
1967
|
+
* anything for it now; the remaining readers of `lifecycle.claimed` are the
|
|
1968
|
+
* completion writer and the sweep. It stays on the checklist because the
|
|
1969
|
+
* claimed role is still real and still what intake dispatches on, and an
|
|
1970
|
+
* operator who never sees it here meets it later with no idea it existed. A
|
|
1971
|
+
* checklist that names an unenforced requirement AND says it is unenforced is
|
|
1972
|
+
* still a checklist; one that silently drops it teaches a wrong model of the
|
|
1973
|
+
* lifecycle, and one that leaves it looking enforced is a threat nothing backs.
|
|
1963
1974
|
*
|
|
1964
1975
|
* This said FOUR until #2681 counted them properly. Gates 3 and 4 shared a
|
|
1965
1976
|
* line — "every commit AND the pull-request body carry ONE matching trailer" —
|
|
@@ -1969,7 +1980,9 @@ function backlinkAdvice(ref, prUrl, contract) {
|
|
|
1969
1980
|
* BLOCKED on "No Work-Item trailer anywhere in the pull request body" holding a
|
|
1970
1981
|
* commit that carried the trailer, an item in the claimed role, and a backlink
|
|
1971
1982
|
* already posted — four of the five satisfied, and the fifth invisible until CI
|
|
1972
|
-
* said so, one cycle later.
|
|
1983
|
+
* said so, one cycle later. (That measurement predates the claim gate's removal
|
|
1984
|
+
* and is left as it was recorded; the counting defect it describes is about
|
|
1985
|
+
* gates 3 and 4, which are both still enforced.)
|
|
1973
1986
|
*
|
|
1974
1987
|
* `Closes owner/repo#N` is called out by name because it is the substitution a
|
|
1975
1988
|
* reader reaches for: it closes the item on merge and satisfies nothing here.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assemble and write one doctor result.
|
|
3
|
+
*
|
|
4
|
+
* A separate module because the two renderings answer different questions and
|
|
5
|
+
* only one of them can carry the gate report. Human output is a line per check;
|
|
6
|
+
* the machine payload additionally carries a structure whose whole contract is
|
|
7
|
+
* that "not checkable here" is a distinct state, which `DoctorStatus`
|
|
8
|
+
* (`ok | warn | fail`) cannot express. Keeping the split here means neither
|
|
9
|
+
* rendering can quietly acquire the other's shape.
|
|
10
|
+
* @module cli/doctor-render
|
|
11
|
+
*/
|
|
12
|
+
import type { DoctorCheck, DoctorOptions, DoctorResult } from "./doctor.js";
|
|
13
|
+
/**
|
|
14
|
+
* Build the result and write it in the requested form.
|
|
15
|
+
* @param checks - Every doctor check, already run
|
|
16
|
+
* @param resolvedTarget - Absolute project root
|
|
17
|
+
* @param options - Parsed command options
|
|
18
|
+
* @param write - Output sink
|
|
19
|
+
* @returns The result, for callers that consume it directly
|
|
20
|
+
*/
|
|
21
|
+
export declare function renderDoctorResult(checks: DoctorCheck[], resolvedTarget: string, options: DoctorOptions, write: (message: string) => void): Promise<DoctorResult>;
|
|
22
|
+
//# sourceMappingURL=doctor-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-render.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG5E;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EAAE,EACrB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,CAqBvB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { buildGateReport } from "./gate-report.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build the result and write it in the requested form.
|
|
4
|
+
* @param checks - Every doctor check, already run
|
|
5
|
+
* @param resolvedTarget - Absolute project root
|
|
6
|
+
* @param options - Parsed command options
|
|
7
|
+
* @param write - Output sink
|
|
8
|
+
* @returns The result, for callers that consume it directly
|
|
9
|
+
*/
|
|
10
|
+
export async function renderDoctorResult(checks, resolvedTarget, options, write) {
|
|
11
|
+
if (options.json !== true) {
|
|
12
|
+
write(checks
|
|
13
|
+
.map(check => `${check.status.toUpperCase()} ${check.name}: ${check.detail}`)
|
|
14
|
+
.join("\n"));
|
|
15
|
+
return { checks };
|
|
16
|
+
}
|
|
17
|
+
const result = {
|
|
18
|
+
checks,
|
|
19
|
+
gateReport: await buildGateReport({
|
|
20
|
+
projectRoot: resolvedTarget,
|
|
21
|
+
offline: options.offline === true,
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
write(JSON.stringify(result, null, 2));
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=doctor-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-render.js","sourceRoot":"","sources":["../../src/cli/doctor-render.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAqB,EACrB,cAAsB,EACtB,OAAsB,EACtB,KAAgC;IAEhC,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,KAAK,CACH,MAAM;aACH,GAAG,CACF,KAAK,CAAC,EAAE,CACN,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CACjE;aACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IACD,MAAM,MAAM,GAAiB;QAC3B,MAAM;QACN,UAAU,EAAE,MAAM,eAAe,CAAC;YAChC,WAAW,EAAE,cAAc;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;SAClC,CAAC;KACH,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/cli/doctor.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { probeKaneReadiness } from "../core/kane-cli.js";
|
|
2
2
|
import { probeSonarReadiness } from "../core/sonar-integration.js";
|
|
3
|
+
import type { GateReport } from "./gate-report-types.js";
|
|
3
4
|
import { runUpdateCheck } from "./update-check.js";
|
|
4
5
|
/** Status values emitted by Lisa doctor checks. */
|
|
5
6
|
type DoctorStatus = "ok" | "warn" | "fail";
|
|
@@ -12,6 +13,20 @@ export interface DoctorCheck {
|
|
|
12
13
|
/** Machine-readable doctor result. */
|
|
13
14
|
export interface DoctorResult {
|
|
14
15
|
checks: DoctorCheck[];
|
|
16
|
+
/**
|
|
17
|
+
* The deterministic gate report, present only under `--json`.
|
|
18
|
+
*
|
|
19
|
+
* A separate key rather than more `DoctorCheck` rows, because `DoctorStatus`
|
|
20
|
+
* is `ok | warn | fail` and has no unknown state. A report whose central
|
|
21
|
+
* contract is that "not checkable here" is never folded into a pass cannot
|
|
22
|
+
* be expressed in a three-valued shape that lacks it — flattening it would
|
|
23
|
+
* be the exact defect the report exists to detect, committed by the report.
|
|
24
|
+
*
|
|
25
|
+
* It also does not touch the exit code. The report describes what a project
|
|
26
|
+
* has configured, and a project that has configured nothing is the modal
|
|
27
|
+
* consumer, not a failing one.
|
|
28
|
+
*/
|
|
29
|
+
gateReport?: GateReport;
|
|
15
30
|
}
|
|
16
31
|
/** Options parsed for `lisa doctor`. */
|
|
17
32
|
export interface DoctorOptions {
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAmBnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,mDAAmD;AACnD,KAAK,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAO3C,oCAAoC;AACpC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,KAAK,CAAC;IACxB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACjD;AAaD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAyBtB;AA4MD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CA2EvB"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -20,6 +20,7 @@ import { checkReusableWorkflowRefs } from "./doctor-reusable-workflow-refs.js";
|
|
|
20
20
|
import { checkWorkerEpoch } from "./doctor-worker-epoch.js";
|
|
21
21
|
import { checkSerializeLegsContract } from "./doctor-serialize-legs-contract.js";
|
|
22
22
|
import { checkApplyFailure } from "./doctor-apply-failure.js";
|
|
23
|
+
import { renderDoctorResult } from "./doctor-render.js";
|
|
23
24
|
import { checkSkipJobsMigration } from "./doctor-skip-jobs-migration.js";
|
|
24
25
|
import { checkTraceabilityGate } from "./doctor-traceability-gate.js";
|
|
25
26
|
import { checkWorktreeHygiene } from "./doctor-worktree-hygiene.js";
|
|
@@ -317,15 +318,7 @@ export async function runDoctor(targetPath, options, dependencies = {}) {
|
|
|
317
318
|
? [await checkRepositoryReadiness(resolvedTarget)]
|
|
318
319
|
: []),
|
|
319
320
|
];
|
|
320
|
-
const result =
|
|
321
|
-
if (options.json) {
|
|
322
|
-
deps.write(JSON.stringify(result, null, 2));
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
deps.write(checks
|
|
326
|
-
.map(check => `${check.status.toUpperCase()} ${check.name}: ${check.detail}`)
|
|
327
|
-
.join("\n"));
|
|
328
|
-
}
|
|
321
|
+
const result = await renderDoctorResult(checks, resolvedTarget, options, deps.write);
|
|
329
322
|
if (checks.some(check => check.status === "fail")) {
|
|
330
323
|
deps.setExitCode(1);
|
|
331
324
|
}
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AACnD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AACjE,MAAM,4BAA4B,GAAG,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive one (gate, moment) cell — the report's real unit.
|
|
3
|
+
*
|
|
4
|
+
* The pair is the unit rather than the gate because the verdict is genuinely
|
|
5
|
+
* mixed per moment: in this repository `conflict-residue` is bucket A at push
|
|
6
|
+
* and bucket B at pull-request. A gate-shaped row would have to summarise that
|
|
7
|
+
* into a single cell, and every summary of a mixed verdict is a place for a
|
|
8
|
+
* green to hide.
|
|
9
|
+
* @module cli/gate-report-cells
|
|
10
|
+
*/
|
|
11
|
+
import type { GateRegistryModule, RegistryGate, ResolvedGate } from "./gate-report-registry.js";
|
|
12
|
+
import { type HookEvidence } from "./gate-report-executors.js";
|
|
13
|
+
import type { Bucket, ExecutorEvidence, Finding, GateMomentCell, MergeBlock, ProofMode, TaskProvenance } from "./gate-report-types.js";
|
|
14
|
+
/** Everything one moment's cells are derived from. */
|
|
15
|
+
export interface MomentContext {
|
|
16
|
+
/** The moment, `:environment` suffix included. */
|
|
17
|
+
readonly moment: string;
|
|
18
|
+
/** `resolveMoment(..., includeOff: true)` keyed by gate id, or null. */
|
|
19
|
+
readonly resolved: ReadonlyMap<string, ResolvedGate> | null;
|
|
20
|
+
/** Why `resolved` is null, when it is. */
|
|
21
|
+
readonly failure: string | null;
|
|
22
|
+
}
|
|
23
|
+
/** Inputs shared by every cell in the report. */
|
|
24
|
+
export interface CellContext {
|
|
25
|
+
readonly registry: GateRegistryModule;
|
|
26
|
+
readonly gates: Record<string, unknown>;
|
|
27
|
+
readonly hooks: HookEvidence;
|
|
28
|
+
/** `package.json` scripts, or null when it could not be read. */
|
|
29
|
+
readonly scripts: Readonly<Record<string, string>> | null;
|
|
30
|
+
/** The runner a command is built with. */
|
|
31
|
+
readonly runner: string;
|
|
32
|
+
/** The workflow name branch-protection contexts are built from. */
|
|
33
|
+
readonly workflowName: string;
|
|
34
|
+
/** Tier 2: the live ruleset's answer for one expected context. */
|
|
35
|
+
readonly blocksMerge: (moment: string, expectedContext: string | null) => Finding<MergeBlock>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A gate-level `run` override, which applies at every declared moment.
|
|
39
|
+
* @param gates - The gates block
|
|
40
|
+
* @param id - Gate id
|
|
41
|
+
* @returns The task, or null
|
|
42
|
+
*/
|
|
43
|
+
export declare function gateLevelRun(gates: Record<string, unknown>, id: string): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Which of the four sources supplies this pair's task.
|
|
46
|
+
*
|
|
47
|
+
* Named rather than merely resolved: a per-moment `run` and a gate-level `run`
|
|
48
|
+
* produce identical commands and mean different things, and a registry `taskAt`
|
|
49
|
+
* swap ships to every project while a project `run` does not.
|
|
50
|
+
* @param options - Resolution inputs
|
|
51
|
+
* @param options.entry - The raw per-moment entry
|
|
52
|
+
* @param options.gateRun - A gate-level project `run`
|
|
53
|
+
* @param options.definition - The registry gate
|
|
54
|
+
* @param options.family - The moment's family
|
|
55
|
+
* @returns The winning source and its task
|
|
56
|
+
*/
|
|
57
|
+
export declare function resolveProvenance(options: {
|
|
58
|
+
entry: Record<string, unknown> | null;
|
|
59
|
+
gateRun: string | null;
|
|
60
|
+
definition: RegistryGate | undefined;
|
|
61
|
+
family: string;
|
|
62
|
+
}): {
|
|
63
|
+
task: string | null;
|
|
64
|
+
provenance: TaskProvenance;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Whether `package.json` defines the task the pair resolves to.
|
|
68
|
+
* @param scripts - The scripts block, or null when unreadable
|
|
69
|
+
* @param task - The resolved task
|
|
70
|
+
* @returns A three-state finding, never a defaulted pass
|
|
71
|
+
*/
|
|
72
|
+
export declare function commandExistsFinding(scripts: Readonly<Record<string, string>> | null, task: string | null): Finding<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* Classify one pair into a bucket, or decline to.
|
|
75
|
+
*
|
|
76
|
+
* D is never a fallback. "Nothing runs and nothing is declared" requires
|
|
77
|
+
* proving that no executor exists, and in a consumer the CI half of that proof
|
|
78
|
+
* lives in a file the project does not have — so an unclassifiable pair says
|
|
79
|
+
* so instead of being quietly counted as dark.
|
|
80
|
+
* @param options - Classification inputs
|
|
81
|
+
* @param options.active - Whether the declaration puts the gate into service
|
|
82
|
+
* @param options.mode - How the gate is proved
|
|
83
|
+
* @param options.commandExists - Whether the task exists
|
|
84
|
+
* @param options.executors - Executors proved for this pair
|
|
85
|
+
* @returns A bucket, or an explicit refusal
|
|
86
|
+
*/
|
|
87
|
+
export declare function classifyBucket(options: {
|
|
88
|
+
active: boolean;
|
|
89
|
+
mode: ProofMode | null;
|
|
90
|
+
commandExists: Finding<boolean>;
|
|
91
|
+
executors: readonly ExecutorEvidence[];
|
|
92
|
+
}): Finding<Bucket>;
|
|
93
|
+
/**
|
|
94
|
+
* Build one cell.
|
|
95
|
+
* @param context - Report-wide inputs
|
|
96
|
+
* @param momentContext - Per-moment inputs
|
|
97
|
+
* @param id - Gate id
|
|
98
|
+
* @returns The cell
|
|
99
|
+
*/
|
|
100
|
+
export declare function buildCell(context: CellContext, momentContext: MomentContext, id: string): GateMomentCell;
|
|
101
|
+
//# sourceMappingURL=gate-report-cells.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-report-cells.d.ts","sourceRoot":"","sources":["../../src/cli/gate-report-cells.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,KAAK,EACV,MAAM,EAEN,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,UAAU,EACV,SAAS,EACT,cAAc,EACf,MAAM,wBAAwB,CAAC;AAWhC,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC;IAC5D,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1D,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,CACpB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GAAG,IAAI,KAC3B,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1B;AAgCD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,EAAE,EAAE,MAAM,GACT,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,YAAY,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAetD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,EAChD,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACxC,GAAG,OAAO,CAAC,MAAM,CAAC,CAclB;AAyBD;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,aAAa,EAC5B,EAAE,EAAE,MAAM,GACT,cAAc,CAwDhB"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { executorsFor } from "./gate-report-executors.js";
|
|
2
|
+
/** Levels that put a gate into service. `off` is a declaration, not service. */
|
|
3
|
+
const ACTIVE_LEVELS = new Set(["required", "optional"]);
|
|
4
|
+
/** Every level the settings file may carry, `off` included. */
|
|
5
|
+
const DECLARED_LEVELS = new Set([...ACTIVE_LEVELS, "off"]);
|
|
6
|
+
/** The state of a gate the settings file never mentions at a moment. */
|
|
7
|
+
const UNDECLARED = "not-declared";
|
|
8
|
+
/** Tier 3 is the same refusal everywhere, so it is written once. */
|
|
9
|
+
const TIER_THREE = {
|
|
10
|
+
state: "unknown",
|
|
11
|
+
reason: "determined-by-quality-yml",
|
|
12
|
+
message: "Whether the CI job reads this declaration or runs a hardcoded command is written in quality.yml, which this project does not have — it calls the reusable workflow by ref.",
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The raw per-moment entry the settings file holds for one gate.
|
|
16
|
+
* @param gates - The gates block
|
|
17
|
+
* @param id - Gate id
|
|
18
|
+
* @param moment - Moment key
|
|
19
|
+
* @returns The entry, normalised to an object, or null when absent
|
|
20
|
+
*/
|
|
21
|
+
function rawEntry(gates, id, moment) {
|
|
22
|
+
const gate = gates[id];
|
|
23
|
+
if (typeof gate !== "object" || gate === null)
|
|
24
|
+
return null;
|
|
25
|
+
const raw = gate[moment];
|
|
26
|
+
if (typeof raw === "string")
|
|
27
|
+
return { level: raw };
|
|
28
|
+
if (typeof raw === "object" && raw !== null) {
|
|
29
|
+
return raw;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A gate-level `run` override, which applies at every declared moment.
|
|
35
|
+
* @param gates - The gates block
|
|
36
|
+
* @param id - Gate id
|
|
37
|
+
* @returns The task, or null
|
|
38
|
+
*/
|
|
39
|
+
export function gateLevelRun(gates, id) {
|
|
40
|
+
const gate = gates[id];
|
|
41
|
+
if (typeof gate !== "object" || gate === null)
|
|
42
|
+
return null;
|
|
43
|
+
const run = gate.run;
|
|
44
|
+
return typeof run === "string" ? run : null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Which of the four sources supplies this pair's task.
|
|
48
|
+
*
|
|
49
|
+
* Named rather than merely resolved: a per-moment `run` and a gate-level `run`
|
|
50
|
+
* produce identical commands and mean different things, and a registry `taskAt`
|
|
51
|
+
* swap ships to every project while a project `run` does not.
|
|
52
|
+
* @param options - Resolution inputs
|
|
53
|
+
* @param options.entry - The raw per-moment entry
|
|
54
|
+
* @param options.gateRun - A gate-level project `run`
|
|
55
|
+
* @param options.definition - The registry gate
|
|
56
|
+
* @param options.family - The moment's family
|
|
57
|
+
* @returns The winning source and its task
|
|
58
|
+
*/
|
|
59
|
+
export function resolveProvenance(options) {
|
|
60
|
+
const { entry, gateRun, definition, family } = options;
|
|
61
|
+
const momentRun = entry?.run;
|
|
62
|
+
if (typeof momentRun === "string") {
|
|
63
|
+
return { task: momentRun, provenance: "moment-run" };
|
|
64
|
+
}
|
|
65
|
+
if (gateRun !== null)
|
|
66
|
+
return { task: gateRun, provenance: "gate-run" };
|
|
67
|
+
const swap = definition?.taskAt?.[family];
|
|
68
|
+
if (typeof swap === "string") {
|
|
69
|
+
return { task: swap, provenance: "registry-task-at" };
|
|
70
|
+
}
|
|
71
|
+
if (typeof definition?.task === "string") {
|
|
72
|
+
return { task: definition.task, provenance: "registry-task" };
|
|
73
|
+
}
|
|
74
|
+
return { task: null, provenance: "none" };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Whether `package.json` defines the task the pair resolves to.
|
|
78
|
+
* @param scripts - The scripts block, or null when unreadable
|
|
79
|
+
* @param task - The resolved task
|
|
80
|
+
* @returns A three-state finding, never a defaulted pass
|
|
81
|
+
*/
|
|
82
|
+
export function commandExistsFinding(scripts, task) {
|
|
83
|
+
if (task === null) {
|
|
84
|
+
return {
|
|
85
|
+
state: "not-applicable",
|
|
86
|
+
reason: "no-task",
|
|
87
|
+
message: "This gate resolves to no task at this moment.",
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (scripts === null) {
|
|
91
|
+
return {
|
|
92
|
+
state: "unknown",
|
|
93
|
+
reason: "package-json-unreadable",
|
|
94
|
+
message: "package.json could not be read, so whether this command exists is unknown.",
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return { state: "verified", value: Object.hasOwn(scripts, task) };
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Classify one pair into a bucket, or decline to.
|
|
101
|
+
*
|
|
102
|
+
* D is never a fallback. "Nothing runs and nothing is declared" requires
|
|
103
|
+
* proving that no executor exists, and in a consumer the CI half of that proof
|
|
104
|
+
* lives in a file the project does not have — so an unclassifiable pair says
|
|
105
|
+
* so instead of being quietly counted as dark.
|
|
106
|
+
* @param options - Classification inputs
|
|
107
|
+
* @param options.active - Whether the declaration puts the gate into service
|
|
108
|
+
* @param options.mode - How the gate is proved
|
|
109
|
+
* @param options.commandExists - Whether the task exists
|
|
110
|
+
* @param options.executors - Executors proved for this pair
|
|
111
|
+
* @returns A bucket, or an explicit refusal
|
|
112
|
+
*/
|
|
113
|
+
export function classifyBucket(options) {
|
|
114
|
+
const { active, mode, commandExists, executors } = options;
|
|
115
|
+
const missingCommand = commandExists.state === "verified" && !commandExists.value;
|
|
116
|
+
if (active && mode === "run" && missingCommand) {
|
|
117
|
+
return { state: "verified", value: "C" };
|
|
118
|
+
}
|
|
119
|
+
if (active && executors.some(entry => entry.kind === "gate-runner")) {
|
|
120
|
+
return { state: "verified", value: "A" };
|
|
121
|
+
}
|
|
122
|
+
if (!active && executors.some(entry => entry.kind !== "gate-runner")) {
|
|
123
|
+
return { state: "verified", value: "B" };
|
|
124
|
+
}
|
|
125
|
+
return TIER_THREE;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* The branch-protection context a `required` declaration implies.
|
|
129
|
+
* @param options - Context inputs
|
|
130
|
+
* @param options.level - The declared level
|
|
131
|
+
* @param options.mode - How the gate is proved
|
|
132
|
+
* @param options.awaits - The awaited signal's own name
|
|
133
|
+
* @param options.label - The gate's CI job name
|
|
134
|
+
* @param options.workflowName - The calling workflow's name
|
|
135
|
+
* @returns The expected context, or null
|
|
136
|
+
*/
|
|
137
|
+
function expectedContextFor(options) {
|
|
138
|
+
const { level, mode, awaits, label, workflowName } = options;
|
|
139
|
+
if (level !== "required")
|
|
140
|
+
return null;
|
|
141
|
+
if (mode === "await")
|
|
142
|
+
return awaits;
|
|
143
|
+
return `${workflowName} / ${label}`;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build one cell.
|
|
147
|
+
* @param context - Report-wide inputs
|
|
148
|
+
* @param momentContext - Per-moment inputs
|
|
149
|
+
* @param id - Gate id
|
|
150
|
+
* @returns The cell
|
|
151
|
+
*/
|
|
152
|
+
export function buildCell(context, momentContext, id) {
|
|
153
|
+
const { registry, gates, hooks, scripts, runner, workflowName } = context;
|
|
154
|
+
const { moment, resolved, failure } = momentContext;
|
|
155
|
+
const definition = registry.REGISTRY[id];
|
|
156
|
+
const family = registry.momentFamily(moment);
|
|
157
|
+
const legal = definition?.moments.includes(family) === true;
|
|
158
|
+
const entry = rawEntry(gates, id, moment);
|
|
159
|
+
const gateRun = gateLevelRun(gates, id);
|
|
160
|
+
const { task, provenance } = resolveProvenance({
|
|
161
|
+
entry,
|
|
162
|
+
gateRun,
|
|
163
|
+
definition,
|
|
164
|
+
family,
|
|
165
|
+
});
|
|
166
|
+
const hit = resolved?.get(id);
|
|
167
|
+
const declaration = declarationOf(entry, resolved, failure, id);
|
|
168
|
+
const active = ACTIVE_LEVELS.has(declaration);
|
|
169
|
+
const mode = modeOf(declaration, hit);
|
|
170
|
+
const awaits = hit?.awaits ?? null;
|
|
171
|
+
const cellTask = mode === "await" || mode === "intercept" ? null : task;
|
|
172
|
+
const commandExists = commandExistsFinding(scripts, cellTask);
|
|
173
|
+
const executors = executorsFor(hooks, {
|
|
174
|
+
moment,
|
|
175
|
+
gateId: id,
|
|
176
|
+
task: cellTask,
|
|
177
|
+
declared: active,
|
|
178
|
+
});
|
|
179
|
+
const expectedContext = expectedContextFor({
|
|
180
|
+
level: declaration,
|
|
181
|
+
mode,
|
|
182
|
+
awaits,
|
|
183
|
+
label: definition?.label ?? id,
|
|
184
|
+
workflowName,
|
|
185
|
+
});
|
|
186
|
+
return {
|
|
187
|
+
moment,
|
|
188
|
+
legal,
|
|
189
|
+
declaration,
|
|
190
|
+
mode,
|
|
191
|
+
awaits,
|
|
192
|
+
task: cellTask,
|
|
193
|
+
command: cellCommand(mode, cellTask, runner),
|
|
194
|
+
provenance: cellTask === null ? "none" : provenance,
|
|
195
|
+
commandExists,
|
|
196
|
+
executors,
|
|
197
|
+
expectedContext,
|
|
198
|
+
blocksMerge: context.blocksMerge(moment, expectedContext),
|
|
199
|
+
facadeReadsDeclaration: TIER_THREE,
|
|
200
|
+
bucket: legal
|
|
201
|
+
? classifyBucket({ active, mode, commandExists, executors })
|
|
202
|
+
: {
|
|
203
|
+
state: "not-applicable",
|
|
204
|
+
reason: "moment-illegal",
|
|
205
|
+
message: `The registry does not permit declaring this gate at ${moment}.`,
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* What the settings file says, degrading to `not-declared` only when it is.
|
|
211
|
+
* @param entry - The raw per-moment entry
|
|
212
|
+
* @param resolved - Resolved gates at this moment, or null
|
|
213
|
+
* @param failure - Why resolution failed, when it did
|
|
214
|
+
* @param id - Gate id
|
|
215
|
+
* @returns The declaration state
|
|
216
|
+
*/
|
|
217
|
+
function declarationOf(entry, resolved, failure, id) {
|
|
218
|
+
if (resolved !== null)
|
|
219
|
+
return asDeclaration(resolved.get(id)?.level);
|
|
220
|
+
if (failure !== null && entry !== null)
|
|
221
|
+
return asDeclaration(entry.level);
|
|
222
|
+
return UNDECLARED;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Narrow a raw level to a declaration state.
|
|
226
|
+
*
|
|
227
|
+
* Anything that is not one of the three levels is `not-declared` — including a
|
|
228
|
+
* level Lisa does not know, which is a typo rather than a claim.
|
|
229
|
+
* @param level - The raw level
|
|
230
|
+
* @returns The declaration state
|
|
231
|
+
*/
|
|
232
|
+
function asDeclaration(level) {
|
|
233
|
+
return DECLARED_LEVELS.has(level)
|
|
234
|
+
? level
|
|
235
|
+
: UNDECLARED;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* The proof mode for a cell.
|
|
239
|
+
* @param declaration - What the settings file says
|
|
240
|
+
* @param hit - The resolved gate, when resolution succeeded
|
|
241
|
+
* @returns The mode, or null when nothing is declared
|
|
242
|
+
*/
|
|
243
|
+
function modeOf(declaration, hit) {
|
|
244
|
+
if (declaration === UNDECLARED)
|
|
245
|
+
return null;
|
|
246
|
+
if (declaration === "off")
|
|
247
|
+
return "off";
|
|
248
|
+
const mode = hit?.mode;
|
|
249
|
+
if (mode === "run" || mode === "await" || mode === "intercept")
|
|
250
|
+
return mode;
|
|
251
|
+
return "run";
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* The command a cell would run.
|
|
255
|
+
*
|
|
256
|
+
* Built for an undeclared pair too. "What would run here if this were turned
|
|
257
|
+
* on, and does that command exist" is the question a project with zero
|
|
258
|
+
* declarations opened the report to ask.
|
|
259
|
+
* @param mode - Proof mode
|
|
260
|
+
* @param task - Resolved task
|
|
261
|
+
* @param runner - The project's runner
|
|
262
|
+
* @returns The command, or null
|
|
263
|
+
*/
|
|
264
|
+
function cellCommand(mode, task, runner) {
|
|
265
|
+
if (task === null || mode === "off")
|
|
266
|
+
return null;
|
|
267
|
+
return `${runner} ${task}`;
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=gate-report-cells.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-report-cells.js","sourceRoot":"","sources":["../../src/cli/gate-report-cells.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the settings file for the gate report.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately a separate module so that a refusal is impossible to lose. The
|
|
5
|
+
* registry REFUSES a runner that cannot run a task, and refuses a gates block
|
|
6
|
+
* with an unknown moment key; both throw. Swallowed, either would produce a
|
|
7
|
+
* report indistinguishable from a project that simply declared nothing — which
|
|
8
|
+
* is precisely the reading this report exists to make impossible.
|
|
9
|
+
* @module cli/gate-report-config
|
|
10
|
+
*/
|
|
11
|
+
import type { GateRegistryModule } from "./gate-report-registry.js";
|
|
12
|
+
import type { Finding } from "./gate-report-types.js";
|
|
13
|
+
/** The settings file, parsed, with every failure kept explicit. */
|
|
14
|
+
export interface ParsedConfig {
|
|
15
|
+
readonly gates: Record<string, unknown>;
|
|
16
|
+
readonly runner: string;
|
|
17
|
+
readonly runnerFinding: Finding<string>;
|
|
18
|
+
readonly runnerSource: "declared" | "default" | "unknown";
|
|
19
|
+
readonly problems: string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Read `.lisa.config.json`, degrading a refusal into a stated problem.
|
|
23
|
+
* @param registry - The shipped registry
|
|
24
|
+
* @param projectRoot - Project root
|
|
25
|
+
* @returns The parsed config
|
|
26
|
+
*/
|
|
27
|
+
export declare function readConfig(registry: GateRegistryModule, projectRoot: string): ParsedConfig;
|
|
28
|
+
//# sourceMappingURL=gate-report-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gate-report-config.d.ts","sourceRoot":"","sources":["../../src/cli/gate-report-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,MAAM,GAClB,YAAY,CAwBd"}
|