@isaacriehm/cairn 0.4.2 → 0.5.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.
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `cairn align <subcommand>` — Layer C/D operator surface.
3
+ *
4
+ * cairn align drain Layer C SessionStart drain (plan §4.3) —
5
+ * reads the deferred logs written by Layer A +
6
+ * Layer B, re-checks each block, runs the Haiku
7
+ * dedup judge for ambiguous candidates, and
8
+ * applies cite / drop / alignment-pending. Capped
9
+ * at 30 Haiku calls by default.
10
+ *
11
+ * Future subcommands (block 9 — Layer D):
12
+ * cairn fix align full-repo Haiku-judge sweep (`fix` namespace).
13
+ * cairn align undo rollback recent auto-resolutions.
14
+ */
15
+ export declare function alignCli(argv: string[]): Promise<void>;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * `cairn align <subcommand>` — Layer C/D operator surface.
3
+ *
4
+ * cairn align drain Layer C SessionStart drain (plan §4.3) —
5
+ * reads the deferred logs written by Layer A +
6
+ * Layer B, re-checks each block, runs the Haiku
7
+ * dedup judge for ambiguous candidates, and
8
+ * applies cite / drop / alignment-pending. Capped
9
+ * at 30 Haiku calls by default.
10
+ *
11
+ * Future subcommands (block 9 — Layer D):
12
+ * cairn fix align full-repo Haiku-judge sweep (`fix` namespace).
13
+ * cairn align undo rollback recent auto-resolutions.
14
+ */
15
+ import { resolveRepoRoot, runDrain } from "@isaacriehm/cairn-core";
16
+ import { resolve } from "node:path";
17
+ function usage() {
18
+ console.error("Usage: cairn align <subcommand>\n" +
19
+ " drain Layer C SessionStart drain.\n" +
20
+ " [--session-id <id>] push drain blips to this session\n" +
21
+ " [--max-haiku-calls <n>] cap Haiku judge calls (default 30)\n" +
22
+ " [--dry-run] classify only; no source / log writes\n" +
23
+ " [--repo <path>] override the cairn repo root\n");
24
+ process.exit(1);
25
+ }
26
+ function parseDrainFlags(argv) {
27
+ let sessionId = null;
28
+ let maxHaikuCalls = null;
29
+ let dryRun = false;
30
+ let repoOverride = null;
31
+ for (let i = 0; i < argv.length; i++) {
32
+ const a = argv[i];
33
+ if (a === "--session-id") {
34
+ const v = argv[i + 1];
35
+ if (v === undefined) {
36
+ console.error("--session-id requires a value");
37
+ process.exit(2);
38
+ }
39
+ sessionId = v;
40
+ i += 1;
41
+ }
42
+ else if (a === "--max-haiku-calls") {
43
+ const v = argv[i + 1];
44
+ if (v === undefined) {
45
+ console.error("--max-haiku-calls requires a value");
46
+ process.exit(2);
47
+ }
48
+ const n = Number.parseInt(v, 10);
49
+ if (!Number.isFinite(n) || n < 0) {
50
+ console.error(`--max-haiku-calls invalid: ${v}`);
51
+ process.exit(2);
52
+ }
53
+ maxHaikuCalls = n;
54
+ i += 1;
55
+ }
56
+ else if (a === "--dry-run") {
57
+ dryRun = true;
58
+ }
59
+ else if (a === "--repo") {
60
+ const v = argv[i + 1];
61
+ if (v === undefined) {
62
+ console.error("--repo requires a path");
63
+ process.exit(2);
64
+ }
65
+ repoOverride = resolve(v);
66
+ i += 1;
67
+ }
68
+ else {
69
+ console.error(`cairn align drain: unknown flag "${a}"`);
70
+ usage();
71
+ }
72
+ }
73
+ const repoRoot = repoOverride ?? resolveRepoRoot(process.cwd());
74
+ if (repoRoot === null) {
75
+ console.error("cairn align drain: not inside a cairn-adopted repo");
76
+ process.exit(2);
77
+ }
78
+ return { repoRoot, sessionId, maxHaikuCalls, dryRun };
79
+ }
80
+ export async function alignCli(argv) {
81
+ const sub = argv[0];
82
+ switch (sub) {
83
+ case undefined:
84
+ case "drain": {
85
+ const flags = parseDrainFlags(argv.slice(1));
86
+ const args = {
87
+ repoRoot: flags.repoRoot,
88
+ sessionId: flags.sessionId,
89
+ };
90
+ if (flags.maxHaikuCalls !== null)
91
+ args.maxHaikuCalls = flags.maxHaikuCalls;
92
+ if (flags.dryRun)
93
+ args.dryRun = true;
94
+ const result = await runDrain(args);
95
+ const summary = [
96
+ `cairn align drain — ${flags.dryRun ? "DRY-RUN " : ""}done`,
97
+ ` total entries: ${result.totalEntries}`,
98
+ ` cited (deterministic) ${result.citedDeterministic}`,
99
+ ` cited (Haiku) ${result.citedHaiku}`,
100
+ ` dropped (different) ${result.droppedDifferent}`,
101
+ ` dropped (missing) ${result.droppedMissing}`,
102
+ ` alignment-pending ${result.pending}`,
103
+ ` deferred (cap/offline) ${result.deferred}`,
104
+ ` Haiku calls ${result.haikuCalls}`,
105
+ ` Haiku fallback ${result.haikuFallback ? "yes (offline)" : "no"}`,
106
+ ].join("\n");
107
+ process.stdout.write(`${summary}\n`);
108
+ return;
109
+ }
110
+ default:
111
+ console.error(`cairn align: unknown subcommand "${sub}"`);
112
+ usage();
113
+ }
114
+ }
115
+ //# sourceMappingURL=align.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"align.js","sourceRoot":"","sources":["../../src/cli/align.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,8 @@
11
11
  import { existsSync, readFileSync, readdirSync, } from "node:fs";
12
12
  import { join, resolve } from "node:path";
13
13
  import { parse as parseYaml } from "yaml";
14
- import { bulkAcceptObvious, restoreDec, } from "@isaacriehm/cairn-core";
14
+ import { spawn } from "node:child_process";
15
+ import { bulkAcceptObvious, restoreDec, runAttentionUndo, startAttentionServer, } from "@isaacriehm/cairn-core";
15
16
  const FINDINGS_PER_SENSOR = 3;
16
17
  function parseRepoFlag(argv) {
17
18
  const idx = argv.indexOf("--repo");
@@ -291,9 +292,9 @@ function renderBulkAcceptResult(result, threshold) {
291
292
  }
292
293
  }
293
294
  async function restoreCli(repoRoot, argv) {
294
- const decId = argv.find((a) => /^DEC-\d{4,}$/.test(a));
295
+ const decId = argv.find((a) => /^DEC-[0-9a-f]{7,}$/.test(a));
295
296
  if (decId === undefined) {
296
- console.error("cairn attention restore: missing or invalid DEC id (expected DEC-NNNN)");
297
+ console.error("cairn attention restore: missing or invalid DEC id (expected DEC-<hash7>)");
297
298
  process.exit(2);
298
299
  }
299
300
  const result = await restoreDec({ repoRoot, decId });
@@ -312,6 +313,97 @@ async function restoreCli(repoRoot, argv) {
312
313
  `\n Run cairn-attention (or cairn_resolve_attention) to re-triage.\n`);
313
314
  process.exit(0);
314
315
  }
316
+ function parseDurationToMs(raw) {
317
+ const m = raw.match(/^(\d+(?:\.\d+)?)(ms|s|m|h|d)?$/);
318
+ if (m === null)
319
+ return null;
320
+ const n = Number.parseFloat(m[1]);
321
+ if (!Number.isFinite(n) || n < 0)
322
+ return null;
323
+ const unit = m[2] ?? "h";
324
+ switch (unit) {
325
+ case "ms":
326
+ return n;
327
+ case "s":
328
+ return n * 1_000;
329
+ case "m":
330
+ return n * 60_000;
331
+ case "h":
332
+ return n * 3_600_000;
333
+ case "d":
334
+ return n * 86_400_000;
335
+ default:
336
+ return null;
337
+ }
338
+ }
339
+ function renderUndoSummary(result) {
340
+ const lines = [];
341
+ lines.push(` entries in window: ${result.windowEntries}`);
342
+ lines.push(` entries outside window: ${result.outsideWindow}`);
343
+ lines.push(` reverted: ${result.reverted}`);
344
+ lines.push(` already reverted: ${result.alreadyReverted}`);
345
+ lines.push(` not supported (deferred): ${result.notSupported}`);
346
+ lines.push(` source missing: ${result.sourceMissing}`);
347
+ lines.push(` errors: ${result.errors}`);
348
+ if (result.outcomes.length > 0) {
349
+ lines.push("");
350
+ lines.push(" per-entry:");
351
+ for (const o of result.outcomes) {
352
+ const tag = o.status.padEnd(18, " ");
353
+ lines.push(` ${tag} ${o.entry.kind} ${o.entry.file} → ${o.entry.primary_id}`);
354
+ if (o.detail !== undefined)
355
+ lines.push(` ${o.detail}`);
356
+ }
357
+ }
358
+ return lines.join("\n");
359
+ }
360
+ async function undoCli(repoRoot, argv) {
361
+ let sinceMs = null;
362
+ let dryRun = false;
363
+ for (let i = 0; i < argv.length; i++) {
364
+ const a = argv[i];
365
+ if (a === "--since") {
366
+ const v = argv[i + 1];
367
+ if (v === undefined) {
368
+ console.error("--since requires a duration (e.g. 30m, 2h, 1d)");
369
+ process.exit(2);
370
+ }
371
+ const ms = parseDurationToMs(v);
372
+ if (ms === null) {
373
+ console.error(`--since invalid: ${v} (expected NNh / NNm / NNd / NNs / NNms)`);
374
+ process.exit(2);
375
+ }
376
+ sinceMs = ms;
377
+ i += 1;
378
+ }
379
+ else if (a === "--dry-run") {
380
+ dryRun = true;
381
+ }
382
+ else if (a === "--repo") {
383
+ i += 1;
384
+ }
385
+ else {
386
+ console.error(`cairn attention undo: unknown flag "${a}"`);
387
+ process.exit(2);
388
+ }
389
+ }
390
+ const args = { repoRoot };
391
+ if (sinceMs !== null)
392
+ args.sinceMs = sinceMs;
393
+ if (dryRun)
394
+ args.dryRun = true;
395
+ process.stdout.write(` ⬡ cairn attention undo${dryRun ? " --dry-run" : ""} — ${repoRoot}\n` +
396
+ ` since: ${sinceMs ?? 3_600_000}ms\n\n`);
397
+ const result = await runAttentionUndo(args);
398
+ process.stdout.write(`${renderUndoSummary(result)}\n`);
399
+ if (dryRun) {
400
+ process.stdout.write(`\n Dry-run complete. Re-run without --dry-run to apply.\n`);
401
+ }
402
+ else {
403
+ process.stdout.write(`\n Undo log pruned. Run again with a larger --since to undo older entries.\n`);
404
+ }
405
+ process.exit(result.errors > 0 ? 2 : 0);
406
+ }
315
407
  async function bulkAcceptCli(repoRoot, argv) {
316
408
  const dryRun = argv.includes("--dry-run");
317
409
  const threshold = parseThresholdFlag(argv);
@@ -327,11 +419,58 @@ async function bulkAcceptCli(repoRoot, argv) {
327
419
  renderBulkAcceptResult(result, threshold);
328
420
  process.exit(0);
329
421
  }
422
+ async function serveCli(repoRoot, argv) {
423
+ const portIdx = argv.indexOf("--port");
424
+ const port = portIdx >= 0 && argv[portIdx + 1] !== undefined
425
+ ? Number.parseInt(argv[portIdx + 1], 10)
426
+ : 0;
427
+ if (Number.isNaN(port) || port < 0 || port > 65535) {
428
+ console.error(`--port must be 0-65535, got ${argv[portIdx + 1]}`);
429
+ process.exit(2);
430
+ }
431
+ const noOpen = argv.includes("--no-open");
432
+ const idleIdx = argv.indexOf("--idle-timeout-min");
433
+ const idleTimeoutMs = idleIdx >= 0 && argv[idleIdx + 1] !== undefined
434
+ ? Number.parseInt(argv[idleIdx + 1], 10) * 60_000
435
+ : undefined;
436
+ const handle = await startAttentionServer({
437
+ repoRoot,
438
+ port,
439
+ ...(idleTimeoutMs !== undefined ? { idleTimeoutMs } : {}),
440
+ });
441
+ process.stdout.write(` ⬡ cairn attention serve — ${repoRoot}\n` +
442
+ ` listening on ${handle.url}\n` +
443
+ ` sentinel: ${handle.sentinelPath}\n`);
444
+ if (!noOpen) {
445
+ const opener = process.platform === "darwin"
446
+ ? "open"
447
+ : process.platform === "win32"
448
+ ? "start"
449
+ : "xdg-open";
450
+ try {
451
+ spawn(opener, [handle.url], {
452
+ stdio: "ignore",
453
+ detached: true,
454
+ }).unref();
455
+ }
456
+ catch {
457
+ /* if open fails, operator clicks the URL manually */
458
+ }
459
+ }
460
+ process.on("SIGINT", () => {
461
+ handle.close().then(() => process.exit(0));
462
+ });
463
+ const state = await handle.done;
464
+ process.stdout.write(` ✓ triage ${state.reason} — accepted ${state.accepted} · rejected ${state.rejected} · merged ${state.merged} · edited ${state.edited}\n`);
465
+ process.exit(0);
466
+ }
330
467
  export async function attentionCli(argv) {
331
468
  if (argv[0] === "--help" || argv[0] === "-h") {
332
469
  process.stdout.write("Usage: cairn attention [--repo <path>]\n" +
333
470
  " cairn attention bulk-accept [--threshold high|medium|low] [--dry-run] [--repo <path>]\n" +
334
471
  " cairn attention restore <DEC-id> [--repo <path>]\n" +
472
+ " cairn attention serve [--port <n>] [--no-open] [--idle-timeout-min <n>] [--repo <path>]\n" +
473
+ " cairn attention undo [--since <duration>] [--dry-run] [--repo <path>]\n" +
335
474
  " Default: list DEC drafts pending confirm + latest baseline sensor findings.\n" +
336
475
  " bulk-accept: score drafts by confidence, auto-promote ≥threshold (default high)\n" +
337
476
  " out of _inbox/ to .cairn/ground/decisions/, and stamp\n" +
@@ -339,8 +478,16 @@ export async function attentionCli(argv) {
339
478
  " accepts all drafts; only use after reviewing the dry-run output.\n" +
340
479
  " restore: move a previously rejected or accepted DEC back to _inbox/<id>.draft.md\n" +
341
480
  " so the operator can re-evaluate via cairn-attention. Accepted-to-draft\n" +
342
- " keeps the inline `// §DEC-NNNN` source cite (re-accept is idempotent).\n" +
343
- " Exit 0 when nothing pending or after bulk-accept/restore; 2 when any items remain.\n");
481
+ " keeps the inline `// §DEC-<hash>` source cite (re-accept is idempotent).\n" +
482
+ " serve: launch the browser triage UI on 127.0.0.1:<port>. Default port = OS-assigned.\n" +
483
+ " Auto-opens the browser unless --no-open. Blocks until the operator clicks Done\n" +
484
+ " or the server idles out (default 10 min). Writes a sentinel at\n" +
485
+ " .cairn/cache/attention-done.json on exit.\n" +
486
+ " undo: revert recent Layer A auto-resolutions logged at\n" +
487
+ " .cairn/state/align-undo-log.jsonl. --since accepts NNms / NNs / NNm / NNh / NNd\n" +
488
+ " (default 1h). Currently reverts tier1-cite + tier2-cite. tier3-creation /\n" +
489
+ " augments-sibling undo is reported as not-supported (manual surgery for now).\n" +
490
+ " Exit 0 when nothing pending or after bulk-accept/restore/serve/undo; 2 when any items remain.\n");
344
491
  process.exit(0);
345
492
  }
346
493
  if (argv[0] === "bulk-accept") {
@@ -350,6 +497,13 @@ export async function attentionCli(argv) {
350
497
  await bulkAcceptCli(repoRoot, rest);
351
498
  return;
352
499
  }
500
+ if (argv[0] === "undo") {
501
+ const rest = argv.slice(1);
502
+ const repoRoot = parseRepoFlag(rest);
503
+ ensureAdopted(repoRoot);
504
+ await undoCli(repoRoot, rest);
505
+ return;
506
+ }
353
507
  if (argv[0] === "restore") {
354
508
  const rest = argv.slice(1);
355
509
  const repoRoot = parseRepoFlag(rest);
@@ -357,6 +511,13 @@ export async function attentionCli(argv) {
357
511
  await restoreCli(repoRoot, rest);
358
512
  return;
359
513
  }
514
+ if (argv[0] === "serve") {
515
+ const rest = argv.slice(1);
516
+ const repoRoot = parseRepoFlag(rest);
517
+ ensureAdopted(repoRoot);
518
+ await serveCli(repoRoot, rest);
519
+ return;
520
+ }
360
521
  const repoRoot = parseRepoFlag(argv);
361
522
  ensureAdopted(repoRoot);
362
523
  const drafts = listDrafts(repoRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/cli/attention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/cli/attention.ts"],"names":[],"mappings":"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"}
package/dist/cli/fix.js CHANGED
@@ -34,7 +34,7 @@ import { existsSync, readFileSync, readdirSync, rmSync, writeFileSync, } from "n
34
34
  import { dirname, join, resolve } from "node:path";
35
35
  import { fileURLToPath } from "node:url";
36
36
  import { parse as parseYaml } from "yaml";
37
- import { applyBrandAnswers, deriveBrandFromProject, derivedToBrandAnswers, parseDraftMeta, readMapperOutputFile, runDecSourceStrip, } from "@isaacriehm/cairn-core";
37
+ import { applyBrandAnswers, deriveBrandFromProject, derivedToBrandAnswers, parseDraftMeta, readMapperOutputFile, runDecSourceStrip, runFixAlign, } from "@isaacriehm/cairn-core";
38
38
  import { fixCli as doctorFixCli } from "./doctor.js";
39
39
  function parseRepoFlag(argv) {
40
40
  const idx = argv.indexOf("--repo");
@@ -131,7 +131,7 @@ async function fixDecStrip(repoRoot, dryRun) {
131
131
  console.error(`cairn fix dec-strip: cannot read decisions dir: ${err instanceof Error ? err.message : String(err)}`);
132
132
  process.exit(2);
133
133
  }
134
- const decFiles = entries.filter((n) => /^DEC-\d{4,}\.md$/.test(n) && !n.endsWith(".draft.md"));
134
+ const decFiles = entries.filter((n) => /^DEC-[0-9a-f]{7,}\.md$/.test(n) && !n.endsWith(".draft.md"));
135
135
  process.stdout.write(` ⬡ cairn fix dec-strip${dryRun ? " --dry-run" : ""} — ${repoRoot}\n` +
136
136
  ` Scanning ${decFiles.length} accepted DEC(s) under .cairn/ground/decisions/\n\n`);
137
137
  let scanned = 0;
@@ -378,6 +378,7 @@ async function fixGitignore(repoRoot, dryRun) {
378
378
  process.exit(0);
379
379
  }
380
380
  const RETROACTIVE_SUBCOMMANDS = new Set([
381
+ "align",
381
382
  "brand",
382
383
  "dec-strip",
383
384
  "gitignore",
@@ -386,11 +387,152 @@ const RETROACTIVE_SUBCOMMANDS = new Set([
386
387
  "confidence",
387
388
  "duration_ms",
388
389
  ]);
390
+ function parseAlignFlags(argv) {
391
+ const flags = {
392
+ dryRun: false,
393
+ maxCost: null,
394
+ include: [],
395
+ exclude: [],
396
+ skipCreation: false,
397
+ };
398
+ for (let i = 0; i < argv.length; i++) {
399
+ const a = argv[i];
400
+ if (a === "--dry-run") {
401
+ flags.dryRun = true;
402
+ }
403
+ else if (a === "--no-creation") {
404
+ flags.skipCreation = true;
405
+ }
406
+ else if (a === "--max-cost") {
407
+ const v = argv[i + 1];
408
+ if (v === undefined) {
409
+ console.error("--max-cost requires a token value");
410
+ process.exit(2);
411
+ }
412
+ const n = Number.parseInt(v, 10);
413
+ if (!Number.isFinite(n) || n < 0) {
414
+ console.error(`--max-cost invalid: ${v}`);
415
+ process.exit(2);
416
+ }
417
+ flags.maxCost = n;
418
+ i += 1;
419
+ }
420
+ else if (a === "--include") {
421
+ const v = argv[i + 1];
422
+ if (v === undefined) {
423
+ console.error("--include requires a glob");
424
+ process.exit(2);
425
+ }
426
+ flags.include.push(v);
427
+ i += 1;
428
+ }
429
+ else if (a === "--exclude") {
430
+ const v = argv[i + 1];
431
+ if (v === undefined) {
432
+ console.error("--exclude requires a glob");
433
+ process.exit(2);
434
+ }
435
+ flags.exclude.push(v);
436
+ i += 1;
437
+ }
438
+ else if (a === "--repo") {
439
+ // Consumed by parseRepoFlag earlier; skip its value too.
440
+ i += 1;
441
+ }
442
+ else {
443
+ console.error(`cairn fix align: unknown flag "${a}"`);
444
+ process.exit(2);
445
+ }
446
+ }
447
+ return flags;
448
+ }
449
+ function formatTokens(n) {
450
+ if (n >= 1_000_000)
451
+ return `${(n / 1_000_000).toFixed(2)}M`;
452
+ if (n >= 1_000)
453
+ return `${(n / 1_000).toFixed(1)}k`;
454
+ return `${n}`;
455
+ }
456
+ function renderPreflight(result) {
457
+ const p = result.preflight;
458
+ const lines = [];
459
+ lines.push(` files scanned: ${p.filesScanned}`);
460
+ lines.push(` blocks considered: ${p.blocksConsidered}`);
461
+ lines.push(` short / sub-floor blocks: ${p.shortBlocks}`);
462
+ lines.push(` blocks w/ Tier 1 candidates: ${p.blocksWithTier1Candidates}`);
463
+ lines.push(` blocks w/o candidates: ${p.blocksWithoutCandidates}`);
464
+ lines.push(` Pass-1 Haiku calls (est): ${p.estimatedPass1Calls}`);
465
+ lines.push(` Pass-2 Haiku calls (est): ${p.estimatedPass2Calls}`);
466
+ lines.push(` Tier 3 creation calls (est): ${p.estimatedCreationCalls}`);
467
+ lines.push(` total tokens (est): ~${formatTokens(p.estimatedTokens)}`);
468
+ return lines.join("\n");
469
+ }
470
+ function renderApply(result) {
471
+ if (result.apply === null)
472
+ return " (apply phase did not run)";
473
+ const a = result.apply;
474
+ const lines = [];
475
+ lines.push(` files aligned: ${a.filesAligned}`);
476
+ lines.push(` Tier 1 deterministic cites: ${a.tier1Aligned}`);
477
+ lines.push(` Tier 2 Haiku-confirmed cites: ${a.tier2Aligned}`);
478
+ lines.push(` fresh DECs created: ${a.decsCreated}`);
479
+ lines.push(` fresh INVs created: ${a.invsCreated}`);
480
+ lines.push(` augments DECs: ${a.augmentsDecs}`);
481
+ lines.push(` augments INVs: ${a.augmentsInvs}`);
482
+ lines.push(` descriptive (no-op): ${a.descriptive}`);
483
+ lines.push(` alignment-pending queued: ${a.pending}`);
484
+ lines.push(` deferred to staleness: ${a.deferredToStaleness}`);
485
+ lines.push(` skipped (length / token): ${a.skipped}`);
486
+ lines.push(` Pass-1 Haiku calls (actual): ${a.haikuPass1Calls}`);
487
+ lines.push(` Pass-2 Haiku calls (actual): ${a.haikuPass2Calls}`);
488
+ lines.push(` total Haiku calls: ${a.haikuCalls}`);
489
+ return lines.join("\n");
490
+ }
491
+ async function fixAlign(repoRoot, argv) {
492
+ const flags = parseAlignFlags(argv);
493
+ process.stdout.write(` ⬡ cairn fix align${flags.dryRun ? " --dry-run" : ""} — ${repoRoot}\n\n` +
494
+ ` pre-flight…\n`);
495
+ const args = { repoRoot };
496
+ if (flags.dryRun)
497
+ args.dryRun = true;
498
+ if (flags.maxCost !== null)
499
+ args.maxCost = flags.maxCost;
500
+ if (flags.include.length > 0)
501
+ args.include = flags.include;
502
+ if (flags.exclude.length > 0)
503
+ args.exclude = flags.exclude;
504
+ if (flags.skipCreation)
505
+ args.skipCreation = true;
506
+ const result = await runFixAlign(args);
507
+ process.stdout.write(`${renderPreflight(result)}\n`);
508
+ if (result.abortedOverBudget) {
509
+ process.stdout.write(`\n ✗ aborted — estimated tokens (${formatTokens(result.preflight.estimatedTokens)})` +
510
+ ` exceeds --max-cost (${formatTokens(args.maxCost ?? 500_000)}).\n` +
511
+ ` Re-run with a higher --max-cost or scope via --include / --exclude.\n`);
512
+ process.exit(2);
513
+ }
514
+ if (flags.dryRun) {
515
+ process.stdout.write(`\n Dry-run complete. Re-run without --dry-run to apply.\n`);
516
+ process.exit(0);
517
+ }
518
+ process.stdout.write(`\n apply…\n${renderApply(result)}\n`);
519
+ process.exit(0);
520
+ }
389
521
  export async function fixCli(argv) {
390
522
  if (argv[0] === "--help" || argv[0] === "-h") {
391
523
  process.stdout.write("Usage: cairn fix [<subcommand>] [--repo <path>] [--dry-run]\n" +
392
524
  " No subcommand: runs the doctor auto-fix pass (rebuild ledgers,\n" +
393
525
  " scope-index, etc.).\n" +
526
+ " Subcommands:\n" +
527
+ " align Layer D — full-repo Haiku-judge sweep over every\n" +
528
+ " prose block × every DEC. Use --dry-run for the\n" +
529
+ " pre-flight cost estimate; re-run without --dry-run\n" +
530
+ " to apply. Flags:\n" +
531
+ " --max-cost <tokens> abort if estimate exceeds\n" +
532
+ " budget (default 500k).\n" +
533
+ " --include <glob> repeatable — scope the sweep.\n" +
534
+ " --exclude <glob> repeatable — atop defaults.\n" +
535
+ " --no-creation skip Tier 3; consolidate only.\n" +
394
536
  " Subcommands (retroactive — for projects adopted on older versions):\n" +
395
537
  " brand re-run the Haiku brand-derive call against the\n" +
396
538
  " mapper output already on disk; rewrite the 4 brand\n" +
@@ -433,6 +575,9 @@ export async function fixCli(argv) {
433
575
  ensureAdopted(repoRoot);
434
576
  const dryRun = rest.includes("--dry-run");
435
577
  switch (sub) {
578
+ case "align":
579
+ await fixAlign(repoRoot, rest);
580
+ return;
436
581
  case "brand":
437
582
  await fixBrand(repoRoot, dryRun);
438
583
  return;