@codyswann/lisa 4.9.3 → 4.10.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 (84) hide show
  1. package/all/copy-overwrite/scripts/lisa-gates.mjs +824 -3
  2. package/all/copy-overwrite/scripts/lisa-run-gates.mjs +21 -107
  3. package/dist/cli/{doctor-learnings-merge-driver.d.ts → doctor-merge-drivers.d.ts} +6 -6
  4. package/dist/cli/doctor-merge-drivers.d.ts.map +1 -0
  5. package/dist/cli/doctor-merge-drivers.js +163 -0
  6. package/dist/cli/doctor-merge-drivers.js.map +1 -0
  7. package/dist/cli/doctor.js +2 -2
  8. package/dist/cli/doctor.js.map +1 -1
  9. package/dist/core/gitattributes-merge-drivers.d.ts +28 -0
  10. package/dist/core/gitattributes-merge-drivers.d.ts.map +1 -0
  11. package/dist/core/gitattributes-merge-drivers.js +62 -0
  12. package/dist/core/gitattributes-merge-drivers.js.map +1 -0
  13. package/dist/core/learnings-merge-driver-install.d.ts +0 -13
  14. package/dist/core/learnings-merge-driver-install.d.ts.map +1 -1
  15. package/dist/core/learnings-merge-driver-install.js +0 -16
  16. package/dist/core/learnings-merge-driver-install.js.map +1 -1
  17. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  18. package/dist/core/lisa-owned-hash-ledger.js +7 -0
  19. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  20. package/dist/core/merge-driver-registration.d.ts +26 -0
  21. package/dist/core/merge-driver-registration.d.ts.map +1 -0
  22. package/dist/core/merge-driver-registration.js +38 -0
  23. package/dist/core/merge-driver-registration.js.map +1 -0
  24. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  25. package/dist/core/upstream-evidence-manifest.js +21 -4
  26. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  27. package/package.json +3 -2
  28. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  30. package/plugins/lisa-agy/plugin.json +1 -1
  31. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  33. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  34. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  40. package/plugins/lisa-expo-agy/plugin.json +1 -1
  41. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  46. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  51. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  56. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  60. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  61. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  65. package/plugins/lisa-rails-agy/plugin.json +1 -1
  66. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  70. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  71. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  75. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  76. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  78. package/scripts/check-merge-driver-registration.mjs +142 -0
  79. package/scripts/install-generated-artifact-merge-driver.mjs +200 -0
  80. package/scripts/lib/gitattributes-merge-drivers.mjs +52 -0
  81. package/scripts/merge-generated-artifact.mjs +519 -0
  82. package/dist/cli/doctor-learnings-merge-driver.d.ts.map +0 -1
  83. package/dist/cli/doctor-learnings-merge-driver.js +0 -73
  84. package/dist/cli/doctor-learnings-merge-driver.js.map +0 -1
@@ -41,7 +41,6 @@
41
41
  * @module lisa-run-gates
42
42
  */
43
43
 
44
- import { createHash } from "node:crypto";
45
44
  import {
46
45
  existsSync,
47
46
  mkdirSync,
@@ -58,14 +57,23 @@ import { DIAGNOSIS, diagnoseFailure } from "./lib/gate-failure-diagnosis.mjs";
58
57
  import { boundedSpawnSync } from "./lib/bounded-spawn.mjs";
59
58
  import { invokedAsScript } from "./lib/invoked-as-script.mjs";
60
59
  import {
60
+ compareCodeUnits,
61
61
  configurationProblems,
62
62
  declarationsAt,
63
+ digest,
63
64
  momentsExecutedBy,
65
+ planDigest,
64
66
  projectScripts,
65
67
  readGates,
66
68
  resolveMoment,
67
69
  } from "./lisa-gates.mjs";
68
70
 
71
+ // Re-exported rather than dropped. `compareCodeUnits` was this module's public
72
+ // surface before the digest helpers moved to the registry (#3160 added it,
73
+ // #3013 moved its callers), and a consumer importing it from here must keep
74
+ // working. The definition lives beside `canonical`, which is its only caller.
75
+ export { compareCodeUnits };
76
+
69
77
  /**
70
78
  * What this process tells its caller. The hooks branch on every value.
71
79
  *
@@ -1026,110 +1034,6 @@ const EVIDENCE_STATUS_FOR = Object.freeze({
1026
1034
  [STATE.NOT_RUN]: "unknown",
1027
1035
  });
1028
1036
 
1029
- /**
1030
- * Compare strings by UTF-16 code units, independent of the host locale.
1031
- *
1032
- * Evidence digests cross machines. `localeCompare` answers a human collation
1033
- * question using the process locale and installed ICU data, so it can order
1034
- * the same keys differently on two runners. Relational string comparison is
1035
- * the ECMAScript code-unit order and is therefore the contract we can reuse.
1036
- * @param {string} left Left value.
1037
- * @param {string} right Right value.
1038
- * @returns {number} Negative, zero, or positive.
1039
- */
1040
- export function compareCodeUnits(left, right) {
1041
- if (left === right) return 0;
1042
- return left < right ? -1 : 1;
1043
- }
1044
-
1045
- /**
1046
- * The same value with every object key in a stable order.
1047
- *
1048
- * A digest over `JSON.stringify` of the raw block would change when an editor
1049
- * reordered two keys, which would make every prior observation read as
1050
- * produced under a different contract. Ordering is normalised so the digest
1051
- * answers "is this the same declaration?" and nothing else.
1052
- * @param {unknown} value Any JSON value.
1053
- * @returns {unknown} The same value, key-ordered.
1054
- */
1055
- function canonical(value) {
1056
- if (Array.isArray(value)) return value.map(canonical);
1057
- if (value === null || typeof value !== "object") return value;
1058
- return Object.fromEntries(
1059
- Object.keys(value)
1060
- .sort(compareCodeUnits)
1061
- .map(key => [key, canonical(value[key])])
1062
- );
1063
- }
1064
-
1065
- /**
1066
- * A sha256 over canonical JSON, spelled once.
1067
- * @param {unknown} value Any JSON value.
1068
- * @returns {string} `sha256:<hex>`.
1069
- */
1070
- function digest(value) {
1071
- const canonicalised = JSON.stringify(canonical(value));
1072
- return `sha256:${createHash("sha256").update(canonicalised).digest("hex")}`;
1073
- }
1074
-
1075
- /**
1076
- * Digest of the RESOLVED PLAN at this moment — not the config file's bytes.
1077
- *
1078
- * Evidence is only reusable while the contract that produced it still holds,
1079
- * and three things make the plan the right subject rather than the file:
1080
- *
1081
- * - an unrelated key elsewhere in `.lisa.config.json` being edited would force
1082
- * spurious reruns against a file digest, while proving nothing changed here;
1083
- * - the raw file does not capture `shippedAs` alias resolution, which reads
1084
- * `package.json` scripts and genuinely changes WHICH COMMAND proved the
1085
- * gate — a file digest would call two different provers the same contract;
1086
- * - `includeOff: true` is what makes "this project declared the gate off" a
1087
- * RECORDED fact rather than an absence indistinguishable from a registry
1088
- * that never knew the gate existed.
1089
- *
1090
- * It is also what refuses a result recorded while a gate was `optional` from
1091
- * satisfying a moment that now declares it `required` — a stale-evidence hole
1092
- * no timestamp closes.
1093
- * @param {object} options Inputs.
1094
- * @param {object|null} options.gates The gates block.
1095
- * @param {string} options.moment The moment being run.
1096
- * @param {string} [options.runner] The task-runner prefix.
1097
- * @param {Record<string,string>|null} [options.scripts] Project scripts.
1098
- * @returns {string|null} `sha256:<hex>`, or null when no plan could resolve.
1099
- */
1100
- function planDigest({ gates, moment, runner, scripts = null }) {
1101
- if (!gates) return null;
1102
- try {
1103
- // The runner is forwarded verbatim when stated, INCLUDING a value
1104
- // `resolveMoment` refuses. A truthiness guard here would let an invalid
1105
- // runner fall through to the default, and the envelope would then record
1106
- // `contract.runner` as one thing while digesting a plan built from
1107
- // another — two facts about the same run, in one document.
1108
- const options = { gates, includeOff: true, moment, scripts };
1109
- const plan = resolveMoment(
1110
- runner === undefined ? options : { ...options, runner }
1111
- ).map(gate => ({
1112
- awaits: gate.awaits,
1113
- command: gate.command,
1114
- id: gate.id,
1115
- level: gate.level,
1116
- mode: gate.mode,
1117
- task: gate.task,
1118
- work: gate.work,
1119
- }));
1120
- return digest({
1121
- gates: [...plan].sort((left, right) =>
1122
- compareCodeUnits(left.id, right.id)
1123
- ),
1124
- runner: runner ?? null,
1125
- });
1126
- } catch {
1127
- // An unresolvable plan — an invalid runner, a refused configuration — has
1128
- // no contract to digest. Null says so; it does not guess one.
1129
- return null;
1130
- }
1131
- }
1132
-
1133
1037
  /**
1134
1038
  * The `@codyswann/lisa` version that owns the resolver behind this run.
1135
1039
  *
@@ -1312,8 +1216,18 @@ function evidenceProducer() {
1312
1216
  *
1313
1217
  * `prover.version` is null rather than `"unknown"` when unresolvable. A string
1314
1218
  * that looks like a version and is a placeholder is worse than an absent
1315
- * field: the verifier treats a null-version row as uncoverable and reruns,
1316
- * which is the safe answer, and a placeholder would defeat that.
1219
+ * field, because a placeholder defeats the check that reads it.
1220
+ *
1221
+ * NARROWED for #3013, and the narrowing matters. This comment used to say
1222
+ * flatly that the verifier treats a null-version row as uncoverable. Read
1223
+ * literally that makes NOTHING reusable, because the pull-request producer
1224
+ * cannot resolve a version for every hand-written job. The rule is right for
1225
+ * the case it was written about and too broad for the rest, so `reusePlan` in
1226
+ * lisa-gates.mjs applies it by reuse class: for a TIME-SENSITIVE gate the
1227
+ * prover is an external scanner whose version decides what it can find, and a
1228
+ * null version is disqualifying; for a DETERMINISTIC gate the binding that
1229
+ * matters is `subject.tree` + `contract.gates_digest` + `contract.workflow_sha`,
1230
+ * all non-null by construction, and a null `prover.version` weakens nothing.
1317
1231
  *
1318
1232
  * `work` is null and stays null until a prover-output parser exists. That is
1319
1233
  * not a shortcut: `readEvidence` demotes a `pass` with no work count to
@@ -1,5 +1,5 @@
1
1
  /** Name of the merge-driver check as doctor reports it. */
2
- export declare const LEARNINGS_MERGE_DRIVER_CHECK_NAME = "Learnings merge driver registered?";
2
+ export declare const MERGE_DRIVERS_CHECK_NAME = "Merge drivers registered?";
3
3
  /** Shape of one doctor check result (structurally identical to doctor's). */
4
4
  interface MergeDriverCheckResult {
5
5
  name: string;
@@ -7,17 +7,17 @@ interface MergeDriverCheckResult {
7
7
  detail: string;
8
8
  }
9
9
  /**
10
- * Report whether this checkout can actually run the ledger's union merge.
10
+ * Report whether this checkout can actually run the merge drivers it maps.
11
11
  *
12
12
  * Warn, never fail: an unregistered driver degrades to a merge that conflicts
13
13
  * loudly instead of one that loses content, so reddening a CI checkout over it
14
14
  * would trade a real signal for noise. The states that are genuinely fine — a
15
15
  * host that opted out, a directory that is not a git repository, a repository
16
- * with nothing mapped to the driver — report ok and say which one they are,
17
- * rather than sharing one indistinguishable "skipped".
16
+ * with nothing mapped — report ok and say which one they are, rather than
17
+ * sharing one indistinguishable "skipped".
18
18
  * @param targetPath - Project path to inspect
19
19
  * @returns Doctor check result
20
20
  */
21
- export declare function checkLearningsMergeDriver(targetPath: string): Promise<MergeDriverCheckResult>;
21
+ export declare function checkMergeDrivers(targetPath: string): Promise<MergeDriverCheckResult>;
22
22
  export {};
23
- //# sourceMappingURL=doctor-learnings-merge-driver.d.ts.map
23
+ //# sourceMappingURL=doctor-merge-drivers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-merge-drivers.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-merge-drivers.ts"],"names":[],"mappings":"AAwCA,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,6EAA6E;AAC7E,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAkGD;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC,CA0CjC"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * `lisa doctor` check: are this checkout's merge drivers actually registered?
3
+ *
4
+ * A merge driver has two halves in two places. The `merge=<name>` mapping is
5
+ * committed in `.gitattributes`; the driver COMMAND is machine-local, because
6
+ * git refuses to run a command a repository supplied. So any clone that never
7
+ * ran the registration step silently falls back to git's built-in text merge —
8
+ * a fresh CI checkout, a teammate who cloned without installing, a worktree
9
+ * created before the migration ran.
10
+ *
11
+ * That degradation is far less catastrophic than it sounds: the text merge
12
+ * leaves conflict markers, which downstream gates diagnose, rather than
13
+ * resolving a file to empty. What it is not is visible. Nothing tells an
14
+ * operator that the driver they believe is protecting a path is not registered
15
+ * here — and invisibility is precisely what let one fleet project lose 19
16
+ * captured learnings. This check is the missing sentence.
17
+ *
18
+ * ## The roster is derived, not named
19
+ *
20
+ * This check used to name `lisa-learnings` and only `lisa-learnings`. That
21
+ * shape has a scheduled failure: Lisa's SECOND merge driver
22
+ * (`lisa-generated-artifact`, CodySwannGT/lisa#3084) would have been uncovered
23
+ * until somebody remembered to widen the check — which is the same
24
+ * "declared, and inert" defect family the driver itself exists to close.
25
+ * The roster now comes from `.gitattributes`, so a driver is covered the day
26
+ * its mapping lands rather than the day someone remembers.
27
+ *
28
+ * Per-driver knowledge is reduced to the one thing that genuinely differs: the
29
+ * remedy sentence, and the learnings driver's documented host opt-out.
30
+ * @module cli/doctor-merge-drivers
31
+ */
32
+ import { readFile } from "node:fs/promises";
33
+ import * as path from "node:path";
34
+ import { mergeDriversInAttributes } from "../core/gitattributes-merge-drivers.js";
35
+ import { isLearningsMergeDriverEnabled } from "../core/learnings-merge-driver-config.js";
36
+ import { probeLearningsMergeDriverRegistration } from "../core/learnings-merge-driver-install.js";
37
+ import { LEARNINGS_MERGE_DRIVER_NAME } from "../core/learnings-merge-driver.js";
38
+ import { probeMergeDriverRegistration } from "../core/merge-driver-registration.js";
39
+ /** Name of the merge-driver check as doctor reports it. */
40
+ export const MERGE_DRIVERS_CHECK_NAME = "Merge drivers registered?";
41
+ /**
42
+ * Build one check result under this check's name.
43
+ * @param status - Reported status
44
+ * @param detail - Operator-readable explanation
45
+ * @returns Doctor check result
46
+ */
47
+ function result(status, detail) {
48
+ return { name: MERGE_DRIVERS_CHECK_NAME, status, detail };
49
+ }
50
+ /**
51
+ * The remedy that registers one driver.
52
+ *
53
+ * Only the learnings driver rides on `lisa apply`; the generated-artifact
54
+ * driver is registered from Lisa's own `postinstall`, because apply is
55
+ * self-restricted in the source repository and would never reach it.
56
+ * @param driver - Merge-driver name
57
+ * @returns One-sentence repair instruction
58
+ */
59
+ function remedyFor(driver) {
60
+ if (driver === LEARNINGS_MERGE_DRIVER_NAME) {
61
+ return "Fix it with `lisa install-merge-driver` (or any `lisa apply`) run here. Hosts that do not want the driver set learnings.mergeDriver: false in .lisa.config.json.";
62
+ }
63
+ return "Fix it by running your package manager's install here, which registers it from postinstall.";
64
+ }
65
+ /**
66
+ * The sentence naming one mapped-but-unregistered driver.
67
+ * @param driver - Merge-driver name
68
+ * @returns Operator-readable detail
69
+ */
70
+ function unregisteredDetail(driver) {
71
+ return `.gitattributes maps a path to the ${driver} merge driver, but merge.${driver}.driver is not registered in this checkout — git silently falls back to its built-in text merge, so those paths conflict on every merge as if the mapping did not exist. ${remedyFor(driver)}`;
72
+ }
73
+ /**
74
+ * Read the merge drivers this checkout's `.gitattributes` asks for.
75
+ *
76
+ * The file is read directly rather than confirmed through `git check-attr`,
77
+ * and the imprecision runs in the safe direction: a pattern git would not
78
+ * actually apply yields one spurious warn, never a missed one, and this check
79
+ * warns rather than fails. The INSTALLER
80
+ * (`scripts/install-generated-artifact-merge-driver.mjs`) does confirm through
81
+ * git, because it writes config and must not act on a mapping git disagrees
82
+ * with.
83
+ * @param targetPath - Project path to inspect
84
+ * @returns Driver names, empty when there is no `.gitattributes`
85
+ */
86
+ async function mappedDrivers(targetPath) {
87
+ try {
88
+ return mergeDriversInAttributes(await readFile(path.join(targetPath, ".gitattributes"), "utf8"));
89
+ }
90
+ catch {
91
+ return [];
92
+ }
93
+ }
94
+ /**
95
+ * The drivers this checkout maps but cannot run.
96
+ *
97
+ * Probed in parallel: the roster is small, and one sequential `git config` per
98
+ * driver would put doctor's cost on a curve nobody expects it to be on.
99
+ * @param targetPath - Project path to inspect
100
+ * @param drivers - Driver names expected to be registered here
101
+ * @returns The subset with no resolvable command
102
+ */
103
+ async function unregisteredAmong(targetPath, drivers) {
104
+ const states = await Promise.all(drivers.map(driver => probeMergeDriverRegistration(targetPath, driver)));
105
+ return drivers.filter((_, index) => states[index] !== "registered");
106
+ }
107
+ /**
108
+ * The "everything is fine" sentence, which says WHICH fine it is.
109
+ * @param expected - Drivers this checkout is expected to have registered
110
+ * @param optedOut - Drivers a host config has declined
111
+ * @returns Operator-readable detail
112
+ */
113
+ function satisfiedDetail(expected, optedOut) {
114
+ const optOut = optedOut.length === 0
115
+ ? ""
116
+ : ` (${optedOut.join(", ")} opted out via learnings.mergeDriver: false)`;
117
+ return expected.length === 0
118
+ ? `No merge driver is expected in this checkout${optOut}`
119
+ : `Every mapped merge driver is registered here: ${expected.join(", ")}${optOut}`;
120
+ }
121
+ /**
122
+ * Report whether this checkout can actually run the merge drivers it maps.
123
+ *
124
+ * Warn, never fail: an unregistered driver degrades to a merge that conflicts
125
+ * loudly instead of one that loses content, so reddening a CI checkout over it
126
+ * would trade a real signal for noise. The states that are genuinely fine — a
127
+ * host that opted out, a directory that is not a git repository, a repository
128
+ * with nothing mapped — report ok and say which one they are, rather than
129
+ * sharing one indistinguishable "skipped".
130
+ * @param targetPath - Project path to inspect
131
+ * @returns Doctor check result
132
+ */
133
+ export async function checkMergeDrivers(targetPath) {
134
+ try {
135
+ // Any driver answers the repository/git question; the learnings probe is
136
+ // reused because it already distinguishes a missing git binary from a real
137
+ // non-repository, and reporting "not a git repository" about a directory
138
+ // that plainly is one is the failure that probe exists to prevent.
139
+ const repository = await probeLearningsMergeDriverRegistration(targetPath);
140
+ if (repository === "not-a-repository") {
141
+ return result("ok", "Not a git repository, so merge-driver registration does not apply");
142
+ }
143
+ if (repository === "git-unavailable") {
144
+ return result("warn", "git executable not found, so merge-driver registration could not be verified — install git, then re-run `lisa doctor`");
145
+ }
146
+ const drivers = await mappedDrivers(targetPath);
147
+ if (drivers.length === 0) {
148
+ return result("ok", "Nothing in .gitattributes maps a path to a custom merge driver, so there is nothing to register");
149
+ }
150
+ const optedOut = (await isLearningsMergeDriverEnabled(targetPath))
151
+ ? []
152
+ : [LEARNINGS_MERGE_DRIVER_NAME];
153
+ const expected = drivers.filter(driver => !optedOut.includes(driver));
154
+ const unregistered = await unregisteredAmong(targetPath, expected);
155
+ return unregistered.length === 0
156
+ ? result("ok", satisfiedDetail(expected, optedOut))
157
+ : result("warn", unregistered.map(unregisteredDetail).join(" "));
158
+ }
159
+ catch (error) {
160
+ return result("warn", `Could not inspect this checkout's merge drivers: ${error instanceof Error ? error.message : String(error)}`);
161
+ }
162
+ }
163
+ //# sourceMappingURL=doctor-merge-drivers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-merge-drivers.js","sourceRoot":"","sources":["../../src/cli/doctor-merge-drivers.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { createDetectorRegistry } from "../detection/index.js";
10
10
  import { checkApplyFreshness, checkYamlRuntime, } from "./doctor-apply-freshness.js";
11
11
  import { checkKaneProvider } from "./doctor-kane.js";
12
12
  import { checkLearningsLedger } from "./doctor-learnings-ledger.js";
13
- import { checkLearningsMergeDriver } from "./doctor-learnings-merge-driver.js";
13
+ import { checkMergeDrivers } from "./doctor-merge-drivers.js";
14
14
  import { checkReadinessReportTracking } from "./doctor-readiness-tracking.js";
15
15
  import { checkSonarProvider } from "./doctor-sonar.js";
16
16
  import { checkLegacyCodexOverlay } from "./doctor-legacy-overlay.js";
@@ -304,7 +304,7 @@ export async function runDoctor(targetPath, options, dependencies = {}) {
304
304
  // have just relocated. Reporting the merge arm second is also the order an
305
305
  // operator can act in — which ledger is canonical, then whether this
306
306
  // checkout can actually run the union merge that protects it.
307
- await checkLearningsMergeDriver(resolvedTarget),
307
+ await checkMergeDrivers(resolvedTarget),
308
308
  // The readiness report's protection is a .gitignore line rather than a
309
309
  // merge driver, because the report is derived and a blend of two
310
310
  // assessments describes a tree that never existed. An ignore rule only
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The roster of merge drivers a repository's `.gitattributes` asks for.
3
+ *
4
+ * A merge driver has two halves and only one of them is committed:
5
+ * `.gitattributes` names WHICH driver a path uses, while `merge.<name>.driver`
6
+ * — the command — is machine-local, because git refuses to run a command a
7
+ * repository supplies. A mapping whose driver is unregistered is an error
8
+ * nowhere: git falls back to its built-in text merge and says nothing.
9
+ *
10
+ * Deriving the roster rather than hardcoding it is the point. Lisa's first
11
+ * driver had a registration check that named it, so Lisa's second driver would
12
+ * have been uncovered until somebody widened it — the same "declared, and
13
+ * inert" shape the checks exist to catch.
14
+ *
15
+ * This is duplicated, deliberately, in
16
+ * `scripts/lib/gitattributes-merge-drivers.mjs`, which runs from `postinstall`
17
+ * before any TypeScript build exists and therefore cannot import this module. A
18
+ * unit test asserts the two agree on the repository's real `.gitattributes`, so
19
+ * they cannot drift.
20
+ * @module core/gitattributes-merge-drivers
21
+ */
22
+ /**
23
+ * Custom driver names named by a `.gitattributes` file.
24
+ * @param contents - Whole `.gitattributes` file contents
25
+ * @returns Sorted, de-duplicated custom driver names
26
+ */
27
+ export declare function mergeDriversInAttributes(contents: string): readonly string[];
28
+ //# sourceMappingURL=gitattributes-merge-drivers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitattributes-merge-drivers.d.ts","sourceRoot":"","sources":["../../src/core/gitattributes-merge-drivers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA4BH;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAW5E"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * The roster of merge drivers a repository's `.gitattributes` asks for.
3
+ *
4
+ * A merge driver has two halves and only one of them is committed:
5
+ * `.gitattributes` names WHICH driver a path uses, while `merge.<name>.driver`
6
+ * — the command — is machine-local, because git refuses to run a command a
7
+ * repository supplies. A mapping whose driver is unregistered is an error
8
+ * nowhere: git falls back to its built-in text merge and says nothing.
9
+ *
10
+ * Deriving the roster rather than hardcoding it is the point. Lisa's first
11
+ * driver had a registration check that named it, so Lisa's second driver would
12
+ * have been uncovered until somebody widened it — the same "declared, and
13
+ * inert" shape the checks exist to catch.
14
+ *
15
+ * This is duplicated, deliberately, in
16
+ * `scripts/lib/gitattributes-merge-drivers.mjs`, which runs from `postinstall`
17
+ * before any TypeScript build exists and therefore cannot import this module. A
18
+ * unit test asserts the two agree on the repository's real `.gitattributes`, so
19
+ * they cannot drift.
20
+ * @module core/gitattributes-merge-drivers
21
+ */
22
+ /**
23
+ * Built-in merge strategies, which need no registration.
24
+ *
25
+ * Reporting one of these as unregistered would be noise, and noise is how a
26
+ * check teaches an operator to stop reading it.
27
+ */
28
+ const BUILT_IN_STRATEGIES = new Set([
29
+ "text",
30
+ "binary",
31
+ "union",
32
+ "ours",
33
+ ]);
34
+ /** Prefix of the attribute that names a driver. */
35
+ const MERGE_ATTRIBUTE = "merge=";
36
+ /**
37
+ * Compare driver names for a stable, locale-independent roster order.
38
+ * @param left - First driver name
39
+ * @param right - Second driver name
40
+ * @returns Negative, zero, or positive per the usual comparator contract
41
+ */
42
+ function compareNames(left, right) {
43
+ return left.localeCompare(right, "en");
44
+ }
45
+ /**
46
+ * Custom driver names named by a `.gitattributes` file.
47
+ * @param contents - Whole `.gitattributes` file contents
48
+ * @returns Sorted, de-duplicated custom driver names
49
+ */
50
+ export function mergeDriversInAttributes(contents) {
51
+ const named = contents
52
+ .split("\n")
53
+ .map(line => line.trim())
54
+ .filter(line => line !== "" && !line.startsWith("#"))
55
+ // The first field is the path pattern; every field after it is an attribute.
56
+ .flatMap(line => line.split(/\s+/u).slice(1))
57
+ .filter(attribute => attribute.startsWith(MERGE_ATTRIBUTE))
58
+ .map(attribute => attribute.slice(MERGE_ATTRIBUTE.length))
59
+ .filter(name => name !== "" && !BUILT_IN_STRATEGIES.has(name));
60
+ return [...new Set(named)].sort(compareNames);
61
+ }
62
+ //# sourceMappingURL=gitattributes-merge-drivers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitattributes-merge-drivers.js","sourceRoot":"","sources":["../../src/core/gitattributes-merge-drivers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IACvD,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEjC;;;;;GAKG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,MAAM,KAAK,GAAG,QAAQ;SACnB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrD,6EAA6E;SAC5E,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5C,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;SAC1D,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACzD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,CAAC"}
@@ -53,19 +53,6 @@ export type MergeDriverRegistration = "registered" | "unregistered" | "not-a-rep
53
53
  * @returns Closed registration state
54
54
  */
55
55
  export declare function probeLearningsMergeDriverRegistration(projectRoot: string): Promise<MergeDriverRegistration>;
56
- /**
57
- * Report whether git resolves one path's `merge` attribute to this driver.
58
- *
59
- * Asks git rather than parsing `.gitattributes`, because the answer depends on
60
- * pattern precedence and on every attributes source git consults (the working
61
- * tree file, `.git/info/attributes`, a configured `core.attributesFile`).
62
- * Reading the root file alone would claim a mapping the repository may not
63
- * actually have — or miss one it does.
64
- * @param projectRoot - Project directory to inspect
65
- * @param ledgerPath - Project-relative path to the learnings ledger
66
- * @returns True when the path is mapped to the learnings merge driver
67
- */
68
- export declare function isLearningsPathMappedToDriver(projectRoot: string, ledgerPath: string): Promise<boolean>;
69
56
  /**
70
57
  * Register the union merge driver in one project's local git config.
71
58
  *
@@ -1 +1 @@
1
- {"version":3,"file":"learnings-merge-driver-install.d.ts","sourceRoot":"","sources":["../../src/core/learnings-merge-driver-install.ts"],"names":[],"mappings":"AAiCA;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChE,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAuFD;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAC/B,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;;;;;GASG;AACH,wBAAsB,qCAAqC,CACzD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CASlC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,8BAAmC,GAChD,OAAO,CAAC,wBAAwB,CAAC,CAkDnC"}
1
+ {"version":3,"file":"learnings-merge-driver-install.d.ts","sourceRoot":"","sources":["../../src/core/learnings-merge-driver-install.ts"],"names":[],"mappings":"AAiCA;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChE,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAuFD;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAC/B,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB;;;;;;;;;GASG;AACH,wBAAsB,qCAAqC,CACzD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CASlC;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,8BAAmC,GAChD,OAAO,CAAC,wBAAwB,CAAC,CAkDnC"}
@@ -127,22 +127,6 @@ export async function probeLearningsMergeDriverRegistration(projectRoot) {
127
127
  const current = await tryGit(["config", "--get", DRIVER_KEY], projectRoot);
128
128
  return current.ok && current.stdout !== "" ? "registered" : "unregistered";
129
129
  }
130
- /**
131
- * Report whether git resolves one path's `merge` attribute to this driver.
132
- *
133
- * Asks git rather than parsing `.gitattributes`, because the answer depends on
134
- * pattern precedence and on every attributes source git consults (the working
135
- * tree file, `.git/info/attributes`, a configured `core.attributesFile`).
136
- * Reading the root file alone would claim a mapping the repository may not
137
- * actually have — or miss one it does.
138
- * @param projectRoot - Project directory to inspect
139
- * @param ledgerPath - Project-relative path to the learnings ledger
140
- * @returns True when the path is mapped to the learnings merge driver
141
- */
142
- export async function isLearningsPathMappedToDriver(projectRoot, ledgerPath) {
143
- const result = await tryGit(["check-attr", "merge", "--", ledgerPath], projectRoot);
144
- return (result.ok && result.stdout.endsWith(`merge: ${LEARNINGS_MERGE_DRIVER_NAME}`));
145
- }
146
130
  /**
147
131
  * Register the union merge driver in one project's local git config.
148
132
  *
@@ -1 +1 @@
1
- {"version":3,"file":"learnings-merge-driver-install.js","sourceRoot":"","sources":["../../src/core/learnings-merge-driver-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learnings-merge-driver-install.js","sourceRoot":"","sources":["../../src/core/learnings-merge-driver-install.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA4nBjC,CAAC"}
1
+ {"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAmoBjC,CAAC"}