@erclx/canon 5.27.0 → 5.29.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 (177) hide show
  1. package/claude/.claude-plugin/plugin.json +1 -1
  2. package/claude/skills/draft-ready/SKILL.md +3 -1
  3. package/claude/skills/git-pr/references/evidence.md +1 -1
  4. package/claude/skills/review-address/REQUIREMENT.md +4 -2
  5. package/claude/skills/review-address/SKILL.md +16 -7
  6. package/claude/skills/review-address/references/rebase-conflicts.md +4 -2
  7. package/claude/skills/review-craft/references/ui.md +4 -4
  8. package/claude/skills/review-ui/REQUIREMENT.md +2 -2
  9. package/claude/skills/review-ui/SKILL.md +13 -11
  10. package/claude/skills/review-ui/references/driving.md +8 -8
  11. package/claude/skills/review-ui/references/post.md +19 -7
  12. package/claude/skills/review-ui/references/tick.md +22 -0
  13. package/claude/skills/role-orchestrator/REQUIREMENT.md +15 -15
  14. package/claude/skills/role-orchestrator/SKILL.md +24 -26
  15. package/claude/skills/role-orchestrator/references/orchestrator-dispatch.md +18 -16
  16. package/claude/skills/role-orchestrator/references/orchestrator-handback.md +12 -2
  17. package/claude/skills/role-orchestrator/references/orchestrator-inbound.md +1 -1
  18. package/claude/skills/role-orchestrator/references/orchestrator-launch.md +1 -1
  19. package/claude/skills/role-orchestrator/references/orchestrator-output.md +4 -4
  20. package/claude/skills/role-orchestrator/references/orchestrator-parked.md +5 -5
  21. package/claude/skills/role-orchestrator/references/orchestrator-poll.md +11 -2
  22. package/claude/skills/role-orchestrator/references/orchestrator-refill.md +6 -6
  23. package/claude/skills/role-orchestrator/references/orchestrator-sweep.md +2 -2
  24. package/claude/skills/role-orchestrator/scripts/poll.ts +304 -10
  25. package/claude/skills/role-planner/REQUIREMENT.md +1 -1
  26. package/claude/skills/role-planner/SKILL.md +2 -2
  27. package/claude/skills/role-reviewer/SKILL.md +1 -1
  28. package/claude/skills/role-worker/SKILL.md +3 -2
  29. package/claude/skills/ui-checklist/SKILL.md +1 -1
  30. package/docs/agents/canvas.md +12 -4
  31. package/docs/agents/gate.md +3 -1
  32. package/docs/agents/index.md +2 -1
  33. package/docs/agents/pr-evidence.md +15 -14
  34. package/docs/agents/pr-tick.md +72 -0
  35. package/docs/agents/sandbox.md +2 -2
  36. package/docs/agents/tasks-plans.md +1 -1
  37. package/docs/agents/tasks-validate.md +18 -18
  38. package/docs/agents/tasks.md +1 -1
  39. package/docs/workflow/operating-model.md +10 -15
  40. package/docs/workflow/parallel-features.md +7 -7
  41. package/package.json +1 -1
  42. package/src/audits/baseline.ts +1 -1
  43. package/src/audits/run.ts +1 -1
  44. package/src/canvas/capture.ts +1 -1
  45. package/src/canvas/client/app.tsx +105 -4
  46. package/src/canvas/client/inspector/field.tsx +61 -2
  47. package/src/canvas/client/inspector/fields.css +78 -0
  48. package/src/canvas/client/inspector/token-select.tsx +109 -0
  49. package/src/canvas/client/inspector/values.ts +74 -2
  50. package/src/canvas/client/inspector.tsx +134 -15
  51. package/src/canvas/client/keys.ts +71 -0
  52. package/src/canvas/client/pages-panel.tsx +5 -1
  53. package/src/canvas/client/panel-handle.tsx +90 -0
  54. package/src/canvas/client/selection.tsx +3 -1
  55. package/src/canvas/client/shell.css +194 -4
  56. package/src/canvas/client/state.ts +255 -11
  57. package/src/canvas/client/surface.tsx +231 -18
  58. package/src/canvas/client/tools.tsx +153 -0
  59. package/src/canvas/content.ts +66 -1
  60. package/src/canvas/edit.ts +207 -25
  61. package/src/canvas/history.ts +116 -0
  62. package/src/canvas/server.ts +119 -13
  63. package/src/canvas/tokens.ts +1 -1
  64. package/src/claude/seeds.ts +2 -2
  65. package/src/claude/skills-reach.ts +1 -1
  66. package/src/{exec.ts → cli/exec.ts} +2 -2
  67. package/src/{help.ts → cli/help.ts} +1 -1
  68. package/src/cli.ts +1 -1
  69. package/src/commands/audits.ts +9 -1
  70. package/src/commands/autoship.ts +1 -1
  71. package/src/commands/canvas.ts +2 -2
  72. package/src/commands/capture.ts +1 -1
  73. package/src/commands/census.ts +1 -1
  74. package/src/commands/claude.ts +5 -5
  75. package/src/commands/comments.ts +1 -1
  76. package/src/commands/context.ts +1 -1
  77. package/src/commands/demo.ts +9 -1
  78. package/src/commands/deps.ts +1 -1
  79. package/src/commands/design.ts +12 -4
  80. package/src/commands/docs.ts +2 -2
  81. package/src/commands/driver.ts +9 -1
  82. package/src/commands/feedback.ts +3 -3
  83. package/src/commands/gate.ts +10 -3
  84. package/src/commands/gov.ts +3 -3
  85. package/src/commands/indexes.ts +1 -1
  86. package/src/commands/init.ts +11 -3
  87. package/src/commands/intake.ts +1 -1
  88. package/src/commands/inventory.ts +9 -1
  89. package/src/commands/labels.ts +1 -1
  90. package/src/commands/markdown.ts +1 -1
  91. package/src/commands/migrate.ts +2 -2
  92. package/src/commands/pr.ts +324 -9
  93. package/src/commands/records.ts +1 -1
  94. package/src/commands/repo.ts +1 -1
  95. package/src/commands/sandbox.ts +11 -14
  96. package/src/commands/secrets.ts +9 -1
  97. package/src/commands/sessions.ts +1 -1
  98. package/src/commands/slides.ts +2 -2
  99. package/src/commands/standards.ts +1 -1
  100. package/src/commands/sync.ts +3 -3
  101. package/src/commands/targets.ts +1 -1
  102. package/src/commands/tasks.ts +20 -3
  103. package/src/commands/teach.ts +1 -1
  104. package/src/commands/tooling.ts +2 -2
  105. package/src/commands/transcripts.ts +2 -2
  106. package/src/commands/upgrade.ts +2 -2
  107. package/src/commands/wiki.ts +2 -2
  108. package/src/commands/worktrees.ts +1 -1
  109. package/src/context/architecture.ts +1 -1
  110. package/src/context/citations.ts +2 -2
  111. package/src/context/classify/extract.ts +1 -1
  112. package/src/context/folders.ts +2 -2
  113. package/src/context/requirements.ts +1 -1
  114. package/src/docs/read.ts +1 -1
  115. package/src/feedback/github.ts +1 -1
  116. package/src/gate/measures.ts +2 -2
  117. package/src/gate/sequencer.ts +55 -3
  118. package/src/gate/stages.ts +8 -0
  119. package/src/gate/suite-lock.ts +214 -0
  120. package/src/init/run.ts +1 -1
  121. package/src/intake/folder.ts +1 -1
  122. package/src/labels/map.ts +1 -1
  123. package/src/labels/phase.ts +3 -3
  124. package/src/migrate/record-layout.ts +1 -1
  125. package/src/migrate/records.ts +11 -11
  126. package/src/migrate/rename.ts +1 -1
  127. package/src/migrate/scratch-evidence.ts +1 -1
  128. package/src/migrate/surface-roots.ts +6 -6
  129. package/src/pr/evidence.ts +188 -16
  130. package/src/pr/tick.ts +56 -0
  131. package/src/process/harness.ts +1 -1
  132. package/src/records/backup.ts +1 -1
  133. package/src/records/ordinal.ts +1 -1
  134. package/src/records/prune.ts +1 -1
  135. package/src/records/size.ts +1 -1
  136. package/src/records/stale-canonical.ts +1 -1
  137. package/src/records/stale.ts +1 -1
  138. package/src/records/validate.ts +2 -2
  139. package/src/{project-root.ts → roots/project.ts} +2 -2
  140. package/src/{record-root.ts → roots/record.ts} +1 -1
  141. package/src/sandbox/coverage.ts +11 -12
  142. package/src/sandbox/equivalence.ts +57 -26
  143. package/src/sandbox/headless/run.ts +1 -1
  144. package/src/sandbox/hooks.ts +1 -1
  145. package/src/sandbox/provision.ts +79 -29
  146. package/src/sandbox/scenario.ts +588 -0
  147. package/src/serve/report.ts +1 -1
  148. package/src/sessions/live.ts +4 -1
  149. package/src/sessions/transfer/bundle.ts +1 -1
  150. package/src/slides/decks.ts +1 -1
  151. package/src/standards/read.ts +1 -1
  152. package/src/sync/engine.ts +2 -2
  153. package/src/sync/git.ts +1 -1
  154. package/src/sync/layout.ts +2 -2
  155. package/src/sync/stamp.ts +1 -1
  156. package/src/sync/workflow.ts +1 -1
  157. package/src/targets/validate.ts +2 -2
  158. package/src/tasks/answers.ts +1 -1
  159. package/src/tasks/archive.ts +1 -1
  160. package/src/tasks/label.ts +1 -1
  161. package/src/tasks/reach.ts +1 -1
  162. package/src/tasks/validate.ts +38 -14
  163. package/src/teach/nav.ts +1 -1
  164. package/src/teach/workspace.ts +1 -1
  165. package/src/tooling/inject.ts +2 -2
  166. package/src/tooling/read.ts +1 -1
  167. package/src/tooling/scan.ts +1 -1
  168. package/src/tooling/verify-stack.ts +1 -1
  169. package/src/version/installed.ts +1 -1
  170. package/src/version/skew.ts +1 -1
  171. package/standards/board.md +3 -3
  172. package/standards/plan.md +13 -7
  173. package/tsconfig.json +1 -1
  174. /package/src/{cli-run.ts → cli/run.ts} +0 -0
  175. /package/src/{ui.ts → cli/ui.ts} +0 -0
  176. /package/src/{legacy-path.ts → roots/legacy.ts} +0 -0
  177. /package/src/{surface-root.ts → roots/surface.ts} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  type FailedTest,
5
5
  classifyChanges,
6
6
  } from '@/autoship/classify'
7
- import { intro, logInfo, logStep, logWarn, outro, plural } from '@/ui'
7
+ import { intro, logInfo, logStep, logWarn, outro, plural } from '@/cli/ui'
8
8
 
9
9
  interface ClassifyOptions {
10
10
  readonly json?: boolean
@@ -27,7 +27,7 @@ import {
27
27
  readEditing,
28
28
  } from '@/canvas/editing'
29
29
  import { CANVAS_PORT, startCanvas } from '@/canvas/server'
30
- import { PROJECT_ROOT } from '@/project-root'
30
+ import { PROJECT_ROOT } from '@/roots/project'
31
31
  import { resolveFrameTokens } from '@/canvas/tokens'
32
32
  import { displayPath, parsePort, waitForInterrupt } from '@/serve/report'
33
33
  import {
@@ -45,7 +45,7 @@ import {
45
45
  logWarn,
46
46
  outro,
47
47
  plural,
48
- } from '@/ui'
48
+ } from '@/cli/ui'
49
49
  import { mainWorktreeRoot } from '@/git/worktree'
50
50
 
51
51
  const BANNER = 'canon canvas'
@@ -15,7 +15,7 @@ import {
15
15
  logWarn,
16
16
  outro,
17
17
  pipeOutput,
18
- } from '@/ui'
18
+ } from '@/cli/ui'
19
19
 
20
20
  /**
21
21
  * Kept rather than removed, unlike the selector's default that came out for
@@ -1,7 +1,7 @@
1
1
  import { resolve } from 'node:path'
2
2
  import type { Command } from 'commander'
3
3
  import { census, type CensusRefusal } from '@/census/count'
4
- import { intro, logInfo, logStep, logWarn, outro, plural } from '@/ui'
4
+ import { intro, logInfo, logStep, logWarn, outro, plural } from '@/cli/ui'
5
5
 
6
6
  interface CensusCommandOptions {
7
7
  readonly json?: boolean
@@ -70,10 +70,10 @@ import {
70
70
  writeSettings,
71
71
  } from '@/claude/settings'
72
72
  import { copyPreservingMode } from '@/sync/copy'
73
- import { execScript } from '@/exec'
74
- import { checkoutMismatchWarning, PROJECT_ROOT } from '@/project-root'
75
- import { recordDir } from '@/record-root'
76
- import { SURFACE_ENTRIES, surfaceDir } from '@/surface-root'
73
+ import { execScript } from '@/cli/exec'
74
+ import { checkoutMismatchWarning, PROJECT_ROOT } from '@/roots/project'
75
+ import { recordDir } from '@/roots/record'
76
+ import { SURFACE_ENTRIES, surfaceDir } from '@/roots/surface'
77
77
  import { isDirectory, resolveTarget } from '@/targets/validate'
78
78
  import { injectGitignore, pruneGitignore } from '@/tooling/inject'
79
79
  import {
@@ -90,7 +90,7 @@ import {
90
90
  pipeOutput,
91
91
  plural,
92
92
  select,
93
- } from '@/ui'
93
+ } from '@/cli/ui'
94
94
  import { describeSkew, readSkew, type SkewReport } from '@/version/skew'
95
95
 
96
96
  interface SeedsListOptions {
@@ -9,7 +9,7 @@ import {
9
9
  } from '@/comments/scan'
10
10
  import { type TrendPoint, trend } from '@/comments/trend'
11
11
  import { loadVocabulary, type Vocabulary } from '@/comments/vocabulary'
12
- import { intro, logInfo, logStep, logWarn, outro, pipeOutput } from '@/ui'
12
+ import { intro, logInfo, logStep, logWarn, outro, pipeOutput } from '@/cli/ui'
13
13
 
14
14
  interface ScanCommandOptions {
15
15
  readonly json?: boolean
@@ -80,7 +80,7 @@ import {
80
80
  outro,
81
81
  pipeOutput,
82
82
  plural,
83
- } from '@/ui'
83
+ } from '@/cli/ui'
84
84
 
85
85
  /** Returned when a gating finding is present. */
86
86
  const EXIT_GATE = 2
@@ -12,7 +12,15 @@ import {
12
12
  } from '@/demo/container'
13
13
  import { DEFAULT_CURSORS } from '@/demo/cursors'
14
14
  import { loadCursorTheme } from '@/demo/theme'
15
- import { intro, logError, logInfo, logStep, logWarn, outro, plural } from '@/ui'
15
+ import {
16
+ intro,
17
+ logError,
18
+ logInfo,
19
+ logStep,
20
+ logWarn,
21
+ outro,
22
+ plural,
23
+ } from '@/cli/ui'
16
24
 
17
25
  const DEFAULT_OUT = 'demos'
18
26
 
@@ -15,7 +15,7 @@ import {
15
15
  outro,
16
16
  pipeOutput,
17
17
  plural,
18
- } from '@/ui'
18
+ } from '@/cli/ui'
19
19
 
20
20
  interface AuditCommandOptions {
21
21
  readonly json?: boolean
@@ -11,12 +11,20 @@ import { HAND_DRAWN_FONT_FACES } from '@/design/fonts'
11
11
  import { addProjectFace, listProjectFaces } from '@/design/project-fonts'
12
12
  import { renderDesignDoc } from '@/design/render'
13
13
  import { DESIGN_BASE_CSS, DESIGN_DOCUMENT, regenDesign } from '@/design/regen'
14
- import { checkoutMismatchWarning, PROJECT_ROOT } from '@/project-root'
15
- import { creationRel, SCRATCH } from '@/record-root'
16
- import { surfaceDir } from '@/surface-root'
14
+ import { checkoutMismatchWarning, PROJECT_ROOT } from '@/roots/project'
15
+ import { creationRel, SCRATCH } from '@/roots/record'
16
+ import { surfaceDir } from '@/roots/surface'
17
17
  import { recordStamp, runDomainSync } from '@/sync/engine'
18
18
  import { isDirectory, resolveTarget } from '@/targets/validate'
19
- import { intro, logAdd, logError, logInfo, logWarn, outro, palette } from '@/ui'
19
+ import {
20
+ intro,
21
+ logAdd,
22
+ logError,
23
+ logInfo,
24
+ logWarn,
25
+ outro,
26
+ palette,
27
+ } from '@/cli/ui'
20
28
 
21
29
  export function register(program: Command): void {
22
30
  const design = program
@@ -1,8 +1,8 @@
1
1
  import type { Command } from 'commander'
2
2
  import { type DocEntry, listDocs } from '@/docs/list'
3
3
  import { listTopics, readTopic, resolveTopic } from '@/docs/read'
4
- import { checkoutMismatchWarning, PROJECT_ROOT } from '@/project-root'
5
- import { intro, logError, logInfo, logStep, logWarn, outro } from '@/ui'
4
+ import { checkoutMismatchWarning, PROJECT_ROOT } from '@/roots/project'
5
+ import { intro, logError, logInfo, logStep, logWarn, outro } from '@/cli/ui'
6
6
 
7
7
  export function register(program: Command): void {
8
8
  const docs = program
@@ -6,7 +6,15 @@ import type { DriverRefusal } from '@/driver/drive'
6
6
  import { describeViewport } from '@/driver/probes/viewport'
7
7
  import { PROBE_NAMES, readDriverPlan } from '@/driver/steps'
8
8
  import type { PlanRefusal } from '@/driver/steps'
9
- import { intro, logError, logInfo, logStep, logWarn, outro, plural } from '@/ui'
9
+ import {
10
+ intro,
11
+ logError,
12
+ logInfo,
13
+ logStep,
14
+ logWarn,
15
+ outro,
16
+ plural,
17
+ } from '@/cli/ui'
10
18
 
11
19
  /**
12
20
  * Holds wiring only. Every browser reference sits behind `loadDriver`, because
@@ -8,11 +8,11 @@ import {
8
8
  missingField,
9
9
  missingFieldMessage,
10
10
  } from '@/feedback/body'
11
- import { checkoutMismatchWarning, PROJECT_ROOT } from '@/project-root'
12
- import { creationRel } from '@/record-root'
11
+ import { checkoutMismatchWarning, PROJECT_ROOT } from '@/roots/project'
12
+ import { creationRel } from '@/roots/record'
13
13
  import { createGithubIssue } from '@/feedback/github'
14
14
  import { issueFailureMessage } from '@/feedback/github-format'
15
- import { frameError, frameSuccess, logWarn, palette } from '@/ui'
15
+ import { frameError, frameSuccess, logWarn, palette } from '@/cli/ui'
16
16
 
17
17
  function readStdin(): Promise<string> {
18
18
  return new Promise((resolveStream, rejectStream) => {
@@ -11,7 +11,7 @@ import {
11
11
  summarize,
12
12
  } from '@/gate/sequencer'
13
13
  import { STAGES } from '@/gate/stages'
14
- import { checkoutMismatchWarning, PROJECT_ROOT } from '@/project-root'
14
+ import { checkoutMismatchWarning, PROJECT_ROOT } from '@/roots/project'
15
15
  import {
16
16
  intro,
17
17
  logError,
@@ -22,7 +22,7 @@ import {
22
22
  palette,
23
23
  pipeOutput,
24
24
  plural,
25
- } from '@/ui'
25
+ } from '@/cli/ui'
26
26
  import { repairBareFlag } from '@/worktrees/bare-flag'
27
27
 
28
28
  interface RunCommandOptions {
@@ -113,6 +113,12 @@ async function runGate(opts: RunCommandOptions): Promise<number> {
113
113
  cli: cliRunner(root),
114
114
  write,
115
115
  changed: changed.scoped ? changed.files : undefined,
116
+ onQueue: (label, holder) => {
117
+ const text = `${label} is waiting for the suite pid ${holder.pid} runs at ${holder.root}`
118
+ // stderr in both modes, so a JSON caller's stdout stays one record.
119
+ if (emitJson) process.stderr.write(`${text}\n`)
120
+ else logWarn(text)
121
+ },
116
122
  }
117
123
 
118
124
  const results = await runStages(
@@ -138,12 +144,13 @@ async function runGate(opts: RunCommandOptions): Promise<number> {
138
144
  changed: changed.files.length,
139
145
  summary,
140
146
  ms: results.reduce((total, result) => total + result.ms, 0),
141
- stages: results.map(({ id, label, status, failure, ms }) => ({
147
+ stages: results.map(({ id, label, status, failure, ms, queuedMs }) => ({
142
148
  id,
143
149
  label,
144
150
  status,
145
151
  failure,
146
152
  ms,
153
+ queuedMs,
147
154
  })),
148
155
  })}\n`,
149
156
  )
@@ -8,8 +8,8 @@ import {
8
8
  type CountsReport,
9
9
  scanCounts,
10
10
  } from '@/counts/scan'
11
- import { checkoutMismatchWarning, PROJECT_ROOT } from '@/project-root'
12
- import { creationRel, SCRATCH } from '@/record-root'
11
+ import { checkoutMismatchWarning, PROJECT_ROOT } from '@/roots/project'
12
+ import { creationRel, SCRATCH } from '@/roots/record'
13
13
  import { createGovAdapter } from '@/gov/adapter'
14
14
  import { regenConsumedRules } from '@/gov/consumed'
15
15
  import { regenStandardRules } from '@/gov/standard-rules'
@@ -65,7 +65,7 @@ import {
65
65
  outro,
66
66
  palette,
67
67
  select,
68
- } from '@/ui'
68
+ } from '@/cli/ui'
69
69
 
70
70
  /**
71
71
  * Where the rules payload lands, resolved per target rather than once at import.
@@ -6,7 +6,7 @@ import { buildIndexCatalog } from '@/indexes/list'
6
6
  import { exitCodeFor, type RegenResult, regenOne } from '@/indexes/regen'
7
7
  import { gitEnv } from '@/git/env'
8
8
  import { findIndexedAncestor, isIgnored, listIndexes } from '@/indexes/walk'
9
- import { intro, logAdd, logInfo, logStep, logWarn, outro } from '@/ui'
9
+ import { intro, logAdd, logInfo, logStep, logWarn, outro } from '@/cli/ui'
10
10
 
11
11
  interface RegenCommandOptions {
12
12
  readonly dryRun?: boolean
@@ -1,12 +1,20 @@
1
1
  import type { Command } from 'commander'
2
- import { cliPath, cliRun } from '@/cli-run'
3
- import { PROJECT_ROOT } from '@/project-root'
2
+ import { cliPath, cliRun } from '@/cli/run'
3
+ import { PROJECT_ROOT } from '@/roots/project'
4
4
  import { applyInitOptions, flagsProvided } from '@/init/flags'
5
5
  import { type InitFlags, parseSkip, planInit } from '@/init/plan'
6
6
  import { runDomains } from '@/init/run'
7
7
  import { buildSteps } from '@/init/steps'
8
8
  import { resolveTarget } from '@/targets/validate'
9
- import { intro, logInfo, logStep, logWarn, outro, palette, select } from '@/ui'
9
+ import {
10
+ intro,
11
+ logInfo,
12
+ logStep,
13
+ logWarn,
14
+ outro,
15
+ palette,
16
+ select,
17
+ } from '@/cli/ui'
10
18
 
11
19
  interface InitOptions {
12
20
  /** Always present: the option falls back to `DEFAULT_STACK`. */
@@ -20,7 +20,7 @@ import {
20
20
  logWarn,
21
21
  outro,
22
22
  pipeOutput,
23
- } from '@/ui'
23
+ } from '@/cli/ui'
24
24
  import { mainWorktreeRoot } from '@/git/worktree'
25
25
 
26
26
  /**
@@ -9,7 +9,15 @@ import {
9
9
  import { abbreviate, groupByTreatment } from '@/inventory/group'
10
10
  import { findSubject, SUBJECTS } from '@/inventory/subjects'
11
11
  import type { WalkRefusal } from '@/inventory/walk'
12
- import { intro, logError, logInfo, logStep, logWarn, outro, plural } from '@/ui'
12
+ import {
13
+ intro,
14
+ logError,
15
+ logInfo,
16
+ logStep,
17
+ logWarn,
18
+ outro,
19
+ plural,
20
+ } from '@/cli/ui'
13
21
 
14
22
  /**
15
23
  * Holds wiring only. Every browser reference sits behind `loadWalker`, because
@@ -6,7 +6,7 @@ import { checkTitleFormat, type TitleFormatIssue } from '@/labels/format'
6
6
  import { MAP_REL } from '@/labels/map'
7
7
  import { scanPhaseLabels } from '@/labels/phase'
8
8
  import { scanTitleSpelling } from '@/labels/spelling'
9
- import { intro, logInfo, logStep, logWarn, outro, plural } from '@/ui'
9
+ import { intro, logInfo, logStep, logWarn, outro, plural } from '@/cli/ui'
10
10
 
11
11
  interface AuditOptions {
12
12
  readonly base?: string
@@ -29,7 +29,7 @@ import {
29
29
  outro,
30
30
  pipeOutput,
31
31
  plural,
32
- } from '@/ui'
32
+ } from '@/cli/ui'
33
33
 
34
34
  const EXIT_REFUSED = 1
35
35
  const EXIT_GATE = 2
@@ -44,9 +44,9 @@ import {
44
44
  type ScratchEvidencePlan,
45
45
  walkScratchEvidenceCorpus,
46
46
  } from '@/migrate/scratch-evidence'
47
- import { checkoutMismatchWarning, PROJECT_ROOT } from '@/project-root'
47
+ import { checkoutMismatchWarning, PROJECT_ROOT } from '@/roots/project'
48
48
  import { readStamp, stampedHashes } from '@/sync/stamp'
49
- import { logError, logInfo, logStep, logWarn, plural } from '@/ui'
49
+ import { logError, logInfo, logStep, logWarn, plural } from '@/cli/ui'
50
50
 
51
51
  interface SweepOptions {
52
52
  readonly json?: boolean