@printpractical/cruze 0.0.13 → 0.0.14

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 (298) hide show
  1. package/README.md +61 -118
  2. package/dist/adapters/inbound/cli/cli_context.js +0 -27
  3. package/dist/adapters/inbound/cli/commands/code.js +5 -18
  4. package/dist/adapters/inbound/cli/commands/documents.js +11 -37
  5. package/dist/adapters/inbound/cli/commands/init.js +1 -1
  6. package/dist/adapters/inbound/cli/commands/review.js +2 -9
  7. package/dist/adapters/inbound/cli/commands/status.js +16 -63
  8. package/dist/adapters/inbound/cli/commands.js +10 -37
  9. package/dist/adapters/inbound/cli/parse_command.js +0 -54
  10. package/dist/adapters/outbound/git_repository.js +2 -71
  11. package/dist/app/ports/repository.js +0 -12
  12. package/dist/app/project_context.js +15 -25
  13. package/dist/app/use_cases/approve_document.js +29 -0
  14. package/dist/app/use_cases/check_code.js +21 -56
  15. package/dist/app/use_cases/new_document.js +25 -0
  16. package/dist/app/use_cases/project_status.js +43 -67
  17. package/dist/app/use_cases/run_review.js +11 -30
  18. package/dist/app/use_cases/validate_project.js +4 -4
  19. package/dist/domain/approvals.js +51 -0
  20. package/dist/domain/check/check_source.js +2 -31
  21. package/dist/domain/config.js +8 -84
  22. package/dist/domain/hashing.js +16 -30
  23. package/dist/domain/ids.js +13 -27
  24. package/dist/domain/next_step.js +41 -0
  25. package/dist/domain/project/features.js +71 -0
  26. package/dist/domain/project/layout.js +11 -27
  27. package/dist/domain/project/project_docs.js +48 -0
  28. package/dist/domain/project/release.js +30 -0
  29. package/dist/domain/scaffold.js +0 -1
  30. package/dist/domain/skill_budget.js +4 -4
  31. package/dist/domain/trace.js +8 -25
  32. package/dist/domain/validation/document_rules.js +70 -0
  33. package/dist/domain/validation/release_rules.js +45 -0
  34. package/dist/domain/validation/validate_project.js +20 -27
  35. package/dist/domain/versions/cruze_version.js +3 -9
  36. package/dist/main.js +1 -1
  37. package/package.json +1 -1
  38. package/skills/asking/SKILL.md +51 -0
  39. package/skills/behavioural-testing/SKILL.md +14 -16
  40. package/skills/behavioural-testing/examples.md +1 -2
  41. package/skills/behavioural-testing/fakes.md +2 -2
  42. package/skills/build/SKILL.md +34 -38
  43. package/skills/dependency-approval/SKILL.md +34 -31
  44. package/skills/envision/SKILL.md +23 -18
  45. package/skills/envision/architecture.md +16 -0
  46. package/skills/envision/breakdown.md +14 -0
  47. package/skills/envision/possibilities.md +6 -7
  48. package/skills/fix/SKILL.md +34 -0
  49. package/skills/formats/SKILL.md +39 -87
  50. package/skills/formats/config.md +47 -0
  51. package/skills/formats/templates/architecture.md +18 -74
  52. package/skills/formats/templates/feature.md +18 -34
  53. package/skills/formats/templates/vision.md +15 -27
  54. package/skills/hexagonal-design/SKILL.md +11 -11
  55. package/skills/hexagonal-design/contracts.md +3 -3
  56. package/skills/hexagonal-design/fundamentals.md +1 -1
  57. package/skills/hexagonal-design/languages/cpp.md +1 -1
  58. package/skills/hexagonal-design/languages/rust.md +1 -1
  59. package/skills/hexagonal-design/languages/swift.md +2 -2
  60. package/skills/hexagonal-design/runtime.md +2 -2
  61. package/skills/research/SKILL.md +4 -4
  62. package/skills/research/evaluation.md +1 -1
  63. package/skills/review/SKILL.md +27 -0
  64. package/skills/roles/SKILL.md +8 -59
  65. package/skills/roles/code-reviewer.md +21 -32
  66. package/skills/roles/researcher.md +3 -3
  67. package/skills/shape/SKILL.md +37 -0
  68. package/skills/shape/self-check.md +12 -0
  69. package/src/adapters/inbound/cli/cli_context.ts +0 -27
  70. package/src/adapters/inbound/cli/commands/code.ts +5 -18
  71. package/src/adapters/inbound/cli/commands/documents.ts +11 -37
  72. package/src/adapters/inbound/cli/commands/init.ts +1 -1
  73. package/src/adapters/inbound/cli/commands/review.ts +2 -9
  74. package/src/adapters/inbound/cli/commands/status.ts +16 -63
  75. package/src/adapters/inbound/cli/commands.ts +10 -37
  76. package/src/adapters/inbound/cli/parse_command.ts +0 -54
  77. package/src/adapters/outbound/git_repository.ts +2 -71
  78. package/src/app/ports/repository.ts +0 -12
  79. package/src/app/project_context.ts +15 -25
  80. package/src/app/use_cases/approve_document.ts +29 -0
  81. package/src/app/use_cases/check_code.ts +21 -56
  82. package/src/app/use_cases/new_document.ts +25 -0
  83. package/src/app/use_cases/project_status.ts +49 -73
  84. package/src/app/use_cases/run_review.ts +11 -30
  85. package/src/app/use_cases/validate_project.ts +4 -4
  86. package/src/domain/approvals.ts +51 -0
  87. package/src/domain/check/check_source.ts +2 -31
  88. package/src/domain/config.ts +9 -85
  89. package/src/domain/hashing.ts +16 -30
  90. package/src/domain/ids.ts +13 -27
  91. package/src/domain/next_step.ts +41 -0
  92. package/src/domain/project/features.ts +71 -0
  93. package/src/domain/project/layout.ts +11 -27
  94. package/src/domain/project/project_docs.ts +48 -0
  95. package/src/domain/project/release.ts +30 -0
  96. package/src/domain/scaffold.ts +0 -1
  97. package/src/domain/skill_budget.ts +4 -4
  98. package/src/domain/trace.ts +8 -25
  99. package/src/domain/validation/document_rules.ts +70 -0
  100. package/src/domain/validation/release_rules.ts +45 -0
  101. package/src/domain/validation/validate_project.ts +21 -28
  102. package/src/domain/versions/cruze_version.ts +3 -9
  103. package/src/main.ts +1 -1
  104. package/templates/init/AGENTS.md +4 -12
  105. package/templates/init/ci.yml +3 -3
  106. package/templates/init/config.yaml +8 -17
  107. package/templates/init/review/claude.yaml +2 -2
  108. package/dist/adapters/inbound/cli/argument_files.js +0 -29
  109. package/dist/adapters/inbound/cli/commands/diff.js +0 -23
  110. package/dist/adapters/inbound/cli/commands/journal.js +0 -32
  111. package/dist/adapters/inbound/cli/commands/progress.js +0 -55
  112. package/dist/adapters/inbound/cli/commands/realign.js +0 -28
  113. package/dist/adapters/inbound/cli/commands/show.js +0 -96
  114. package/dist/app/use_cases/abandon_work.js +0 -42
  115. package/dist/app/use_cases/approve_artifact.js +0 -197
  116. package/dist/app/use_cases/journal_events.js +0 -64
  117. package/dist/app/use_cases/land_change.js +0 -134
  118. package/dist/app/use_cases/new_project_doc.js +0 -48
  119. package/dist/app/use_cases/new_work_item.js +0 -75
  120. package/dist/app/use_cases/realign_done.js +0 -45
  121. package/dist/app/use_cases/realign_status.js +0 -106
  122. package/dist/app/use_cases/record_progress.js +0 -118
  123. package/dist/app/use_cases/show_elements.js +0 -18
  124. package/dist/app/use_cases/show_notes.js +0 -11
  125. package/dist/app/use_cases/show_scope.js +0 -51
  126. package/dist/app/use_cases/upstream_diff.js +0 -55
  127. package/dist/domain/approvals/agent_approval.js +0 -68
  128. package/dist/domain/approvals/evaluate.js +0 -36
  129. package/dist/domain/approvals/fingerprint.js +0 -52
  130. package/dist/domain/approvals/rebase.js +0 -39
  131. package/dist/domain/approvals/records.js +0 -50
  132. package/dist/domain/approvals/upstream_text.js +0 -36
  133. package/dist/domain/architecture_sections.js +0 -23
  134. package/dist/domain/check/decision_comments.js +0 -38
  135. package/dist/domain/decision_citations.js +0 -62
  136. package/dist/domain/edits/agents_file.js +0 -58
  137. package/dist/domain/edits/managed_tables.js +0 -60
  138. package/dist/domain/edits/progress_block.js +0 -33
  139. package/dist/domain/edits/status_lines.js +0 -52
  140. package/dist/domain/elements.js +0 -126
  141. package/dist/domain/journal.js +0 -109
  142. package/dist/domain/land/bookkeeping.js +0 -54
  143. package/dist/domain/land/merge_plan.js +0 -137
  144. package/dist/domain/land/text_ops.js +0 -66
  145. package/dist/domain/line_diff.js +0 -56
  146. package/dist/domain/project/artifact_ref.js +0 -42
  147. package/dist/domain/project/deltas.js +0 -49
  148. package/dist/domain/project/element_lookup.js +0 -124
  149. package/dist/domain/project/living_model.js +0 -55
  150. package/dist/domain/project/new_items.js +0 -48
  151. package/dist/domain/project/notes.js +0 -74
  152. package/dist/domain/project/plan_parts.js +0 -111
  153. package/dist/domain/project/progress.js +0 -43
  154. package/dist/domain/project/project_view.js +0 -72
  155. package/dist/domain/project/roadmap.js +0 -43
  156. package/dist/domain/project/scope_view.js +0 -134
  157. package/dist/domain/project/work_items.js +0 -68
  158. package/dist/domain/status/next_step.js +0 -181
  159. package/dist/domain/status/pending_rethink.js +0 -22
  160. package/dist/domain/status/verification.js +0 -29
  161. package/dist/domain/status/work_status.js +0 -125
  162. package/dist/domain/validation/decision_rules.js +0 -76
  163. package/dist/domain/validation/delta_rules.js +0 -81
  164. package/dist/domain/validation/element_rules.js +0 -104
  165. package/dist/domain/validation/future_rules.js +0 -40
  166. package/dist/domain/validation/living_rules.js +0 -99
  167. package/dist/domain/validation/plan_rules.js +0 -124
  168. package/dist/domain/validation/project_rules.js +0 -115
  169. package/dist/domain/validation/size_rules.js +0 -45
  170. package/dist/domain/validation/vision_rules.js +0 -41
  171. package/dist/domain/validation/work_item_rules.js +0 -175
  172. package/dist/domain/versions/realign_notes.js +0 -72
  173. package/dist/domain/versions/rule_versions.js +0 -29
  174. package/dist/domain/versions/scheduled_exceptions.js +0 -41
  175. package/skills/about/SKILL.md +0 -21
  176. package/skills/architect/SKILL.md +0 -49
  177. package/skills/architect/feature.md +0 -40
  178. package/skills/architect/project.md +0 -71
  179. package/skills/architect/tweak.md +0 -22
  180. package/skills/architect/walkthrough.md +0 -35
  181. package/skills/domain-language/SKILL.md +0 -37
  182. package/skills/envision/feature.md +0 -25
  183. package/skills/envision/intake.md +0 -28
  184. package/skills/envision/project.md +0 -24
  185. package/skills/explore/SKILL.md +0 -39
  186. package/skills/formats/reference/architecture.md +0 -84
  187. package/skills/formats/reference/config.md +0 -80
  188. package/skills/formats/reference/durable-docs.md +0 -74
  189. package/skills/formats/reference/specs.md +0 -65
  190. package/skills/formats/reference/work-items.md +0 -100
  191. package/skills/formats/templates/adr.md +0 -7
  192. package/skills/formats/templates/change.md +0 -29
  193. package/skills/formats/templates/glossary.md +0 -8
  194. package/skills/formats/templates/roadmap.md +0 -32
  195. package/skills/formats/templates/spec.md +0 -11
  196. package/skills/formats/templates/standalone-change.md +0 -46
  197. package/skills/grilling/SKILL.md +0 -90
  198. package/skills/grilling/illustrating.md +0 -38
  199. package/skills/improve/SKILL.md +0 -51
  200. package/skills/land/SKILL.md +0 -48
  201. package/skills/next/SKILL.md +0 -31
  202. package/skills/plan/SKILL.md +0 -62
  203. package/skills/plan/tasks.md +0 -35
  204. package/skills/plan/test-plan.md +0 -14
  205. package/skills/realign/SKILL.md +0 -37
  206. package/skills/realign/notes/0.0.10.md +0 -131
  207. package/skills/realign/notes/0.0.11.md +0 -15
  208. package/skills/realign/notes/0.0.12.md +0 -31
  209. package/skills/realign/notes/0.0.13.md +0 -11
  210. package/skills/realign/notes/0.0.2.md +0 -69
  211. package/skills/realign/notes/0.0.3.md +0 -11
  212. package/skills/realign/notes/0.0.4.md +0 -27
  213. package/skills/realign/notes/0.0.5.md +0 -38
  214. package/skills/realign/notes/0.0.6.md +0 -44
  215. package/skills/realign/notes/0.0.7.md +0 -11
  216. package/skills/realign/notes/0.0.8.md +0 -97
  217. package/skills/realign/notes/0.0.9.md +0 -59
  218. package/skills/realign/notes.md +0 -40
  219. package/skills/rethink/SKILL.md +0 -62
  220. package/skills/rethink/levels.md +0 -54
  221. package/skills/roadmap/SKILL.md +0 -54
  222. package/skills/roles/auditor.md +0 -35
  223. package/skills/roles/design-reviewer.md +0 -43
  224. package/skills/roles/design-rubric.md +0 -41
  225. package/skills/roles/plan-rubric.md +0 -11
  226. package/skills/roles/surveyor.md +0 -41
  227. package/skills/roles/verifier.md +0 -42
  228. package/skills/triage/SKILL.md +0 -37
  229. package/skills/verify/SKILL.md +0 -45
  230. package/skills/verify/manual-test.md +0 -23
  231. package/src/adapters/inbound/cli/argument_files.ts +0 -29
  232. package/src/adapters/inbound/cli/commands/diff.ts +0 -23
  233. package/src/adapters/inbound/cli/commands/journal.ts +0 -32
  234. package/src/adapters/inbound/cli/commands/progress.ts +0 -55
  235. package/src/adapters/inbound/cli/commands/realign.ts +0 -28
  236. package/src/adapters/inbound/cli/commands/show.ts +0 -96
  237. package/src/app/use_cases/abandon_work.ts +0 -42
  238. package/src/app/use_cases/approve_artifact.ts +0 -197
  239. package/src/app/use_cases/journal_events.ts +0 -64
  240. package/src/app/use_cases/land_change.ts +0 -134
  241. package/src/app/use_cases/new_project_doc.ts +0 -48
  242. package/src/app/use_cases/new_work_item.ts +0 -75
  243. package/src/app/use_cases/realign_done.ts +0 -45
  244. package/src/app/use_cases/realign_status.ts +0 -106
  245. package/src/app/use_cases/record_progress.ts +0 -118
  246. package/src/app/use_cases/show_elements.ts +0 -18
  247. package/src/app/use_cases/show_notes.ts +0 -11
  248. package/src/app/use_cases/show_scope.ts +0 -51
  249. package/src/app/use_cases/upstream_diff.ts +0 -55
  250. package/src/domain/approvals/agent_approval.ts +0 -68
  251. package/src/domain/approvals/evaluate.ts +0 -36
  252. package/src/domain/approvals/fingerprint.ts +0 -52
  253. package/src/domain/approvals/rebase.ts +0 -39
  254. package/src/domain/approvals/records.ts +0 -50
  255. package/src/domain/approvals/upstream_text.ts +0 -36
  256. package/src/domain/architecture_sections.ts +0 -23
  257. package/src/domain/check/decision_comments.ts +0 -38
  258. package/src/domain/decision_citations.ts +0 -62
  259. package/src/domain/edits/agents_file.ts +0 -58
  260. package/src/domain/edits/managed_tables.ts +0 -60
  261. package/src/domain/edits/progress_block.ts +0 -33
  262. package/src/domain/edits/status_lines.ts +0 -52
  263. package/src/domain/elements.ts +0 -126
  264. package/src/domain/journal.ts +0 -109
  265. package/src/domain/land/bookkeeping.ts +0 -54
  266. package/src/domain/land/merge_plan.ts +0 -137
  267. package/src/domain/land/text_ops.ts +0 -66
  268. package/src/domain/line_diff.ts +0 -56
  269. package/src/domain/project/artifact_ref.ts +0 -42
  270. package/src/domain/project/deltas.ts +0 -49
  271. package/src/domain/project/element_lookup.ts +0 -124
  272. package/src/domain/project/living_model.ts +0 -55
  273. package/src/domain/project/new_items.ts +0 -48
  274. package/src/domain/project/notes.ts +0 -74
  275. package/src/domain/project/plan_parts.ts +0 -111
  276. package/src/domain/project/progress.ts +0 -43
  277. package/src/domain/project/project_view.ts +0 -72
  278. package/src/domain/project/roadmap.ts +0 -43
  279. package/src/domain/project/scope_view.ts +0 -134
  280. package/src/domain/project/work_items.ts +0 -68
  281. package/src/domain/status/next_step.ts +0 -181
  282. package/src/domain/status/pending_rethink.ts +0 -22
  283. package/src/domain/status/verification.ts +0 -29
  284. package/src/domain/status/work_status.ts +0 -125
  285. package/src/domain/validation/decision_rules.ts +0 -76
  286. package/src/domain/validation/delta_rules.ts +0 -81
  287. package/src/domain/validation/element_rules.ts +0 -104
  288. package/src/domain/validation/future_rules.ts +0 -40
  289. package/src/domain/validation/living_rules.ts +0 -99
  290. package/src/domain/validation/plan_rules.ts +0 -124
  291. package/src/domain/validation/project_rules.ts +0 -115
  292. package/src/domain/validation/size_rules.ts +0 -45
  293. package/src/domain/validation/vision_rules.ts +0 -41
  294. package/src/domain/validation/work_item_rules.ts +0 -175
  295. package/src/domain/versions/realign_notes.ts +0 -72
  296. package/src/domain/versions/rule_versions.ts +0 -29
  297. package/src/domain/versions/scheduled_exceptions.ts +0 -41
  298. package/templates/init/gitattributes +0 -2
@@ -1,97 +0,0 @@
1
- # Realign notes: 0.0.8
2
-
3
- ## Existing code
4
-
5
- ### module-path-glob: A module's Path is a directory or a file, never a glob
6
- - Applies to: existing code
7
- - Rule: `.agents/skills/cruze-formats/reference/architecture.md`, "Element facts"
8
- - Detect: validate:module-path-glob
9
- - Migrate: replace each glob in a `MOD` element's `Path` with the directories it meant, each ending in `/`, or the files, through `rethink` at architecture level.
10
-
11
- ### budget-not-a-shape: No code is bent to fit a file budget
12
- - Applies to: existing code
13
- - Rule: `.agents/skills/cruze-hexagonal-design/SKILL.md`, "Many small modules"
14
- - Ask: is any code shaped to stay under `check.max_lines` or `check.max_types`, such as a type alias, a string where an error type belongs, merged types, a function placed away from its owner, or Rust domain tests moved out of their file only for its length?
15
- - Migrate: write the code as it would be with no budget. Split a file that then passes its budget along a second responsibility, or list it under `check.exceptions` with the reason it has one. Rust domain tests may move back inline, since their `#[cfg(test)]` modules no longer count.
16
-
17
- ### no-dependency-workarounds: No code works around a dependency or feature nobody asked for
18
- - Applies to: existing code
19
- - Rule: `.agents/skills/cruze-dependency-approval/SKILL.md`, "Weighing"
20
- - Ask: does any code hand-write, shell out for, or use a less idiomatic construct for something a dependency or a feature of an approved dependency does cleanly, where the design or a deviation gives avoiding the dependency as the reason?
21
- - Migrate: ask the user for the dependency as the dependency-approval skill says, then replace the workaround through `rethink`: at architecture level when the workaround is in an `XC` rule or an import allowlist, at feature level otherwise.
22
-
23
- ### size-exceptions: An accepted size warning is recorded under changes.exceptions
24
- - Applies to: existing code
25
- - Rule: `.agents/skills/cruze-formats/reference/config.md`, "changes.exceptions"
26
- - Ask: does `cruze validate` report a `change-too-small`, `change-too-large`, `plan-too-large` or `feature-size` warning that a `D<n>` line records the user accepting? `cruze approve` now refuses the item until it is listed.
27
- - Migrate: list each such feature or change under `changes.exceptions` in `.cruze/config.yaml`, as its ref and the decision's reason.
28
-
29
- ## New work only
30
-
31
- ### fresh-session: Every step runs in a new session
32
- - Applies to: new work only
33
- - Rule: `.agents/skills/cruze-next/SKILL.md`, "Steps", step 3
34
-
35
- ### show-scope: Plan, build and the roles read the scope through cruze show
36
- - Applies to: new work only
37
- - Rule: `.agents/skills/cruze-plan/SKILL.md`, "Steps", step 6
38
-
39
- ### scoped-ledger: The settled ledger is the item's, and journal list leaves landed work out
40
- - Applies to: new work only
41
- - Rule: `.agents/skills/cruze-roles/SKILL.md`, "The settled ledger"
42
-
43
- ### round-2-by-agent: Round 2 is checked by the agent
44
- - Applies to: new work only
45
- - Rule: `.agents/skills/cruze-roles/SKILL.md`, "Round 2"
46
-
47
- ### verifier-front-doors: The verifier drives the scenarios that have a front door and never idles
48
- - Applies to: new work only
49
- - Rule: `.agents/skills/cruze-roles/verifier.md`, "Work", step 3
50
-
51
- ### design-gives-every-value: The design gives every error, limit, timeout, transition and message owner
52
- - Applies to: new work only
53
- - Rule: `.agents/skills/cruze-roles/design-rubric.md`, "Design rubric", item 6
54
-
55
- ### one-owner-per-rule: Plan gives each rule one owner, and each item to its first handler's task
56
- - Applies to: new work only
57
- - Rule: `.agents/skills/cruze-plan/tasks.md`, steps 2 and 4
58
-
59
- ### deviations-reviewed: The code reviewer reports a deviation that needed a rethink
60
- - Applies to: new work only
61
- - Rule: `.agents/skills/cruze-roles/code-reviewer.md`, "Rubric", item 11
62
-
63
- ### depends-on-gate: Building waits for every change a change depends on to land
64
- - Applies to: new work only
65
- - Rule: `.agents/skills/cruze-build/SKILL.md`, "Steps", step 1
66
-
67
- ### build-checks-ci: Build runs the same check as verify and CI
68
- - Applies to: new work only
69
- - Rule: `.agents/skills/cruze-build/SKILL.md`, "The task loop", step 4
70
-
71
- ### check-in-flight-modules: cruze check knows the modules that work in progress adds
72
- - Applies to: new work only
73
- - Rule: `.agents/skills/cruze-build/SKILL.md`, "The task loop", step 4
74
-
75
- ### cites-dropped: Work doesn't cite a scenario its delta drops
76
- - Applies to: new work only
77
- - Rule: `.agents/skills/cruze-formats/reference/specs.md`, "Spec delta"
78
-
79
- ### planned-breaks: Plans name a break as the wrong behaviour, and put each test in the task that builds what it checks
80
- - Applies to: new work only
81
- - Rule: `.agents/skills/cruze-plan/tasks.md`, step 2
82
-
83
- ### declaring-files: A task lists the file that declares what it adds
84
- - Applies to: new work only
85
- - Rule: `.agents/skills/cruze-plan/tasks.md`, step 3
86
-
87
- ### named-dependencies: Every outside name the design uses comes from a dependency the using target declares
88
- - Applies to: new work only
89
- - Rule: `.agents/skills/cruze-research/SKILL.md`, "Adopt or build", step 7
90
-
91
- ### nits-are-counts: Review nits get no disposition
92
- - Applies to: new work only
93
- - Rule: `.agents/skills/cruze-roles/SKILL.md`, "Running a review"
94
-
95
- ### illustrated-questions: Questions, review exceptions and the walkthrough show what each option looks like
96
- - Applies to: new work only
97
- - Rule: `.agents/skills/cruze-grilling/illustrating.md`
@@ -1,59 +0,0 @@
1
- # Realign notes: 0.0.9
2
-
3
- ## Existing code
4
-
5
- ### budget-backstop: File budgets are a backstop, and files split by responsibility, never by length
6
- - Applies to: existing code
7
- - Rule: `.agents/skills/cruze-hexagonal-design/SKILL.md`, "Many small modules"
8
- - Ask: does `.cruze/config.yaml` still set the old defaults, `check.max_lines: 250` and `check.max_types: 5`? Is any `check.exceptions` entry, or any split of one owner across files, there only to meet them?
9
- - Migrate: raise the budgets to `max_lines: 600` and `max_types: 12`, unless the user chose the old ones, and remove each exception whose file is now within budget. A split made only for length, whose files share one responsibility, merges back in a prefactor; waive it when the files read well apart.
10
-
11
- ### flow-control-review: A design says how its work flows, waits and recovers
12
- - Applies to: existing code
13
- - Rule: `.agents/skills/cruze-roles/design-rubric.md`, "Design rubric", item 11
14
- - Ask: for each feature in flight, does its design leave out any check in rubric item 11 that a scenario or an `XC` rule depends on, such as what a sender does when a queue is full, or what happens when a reconnect fails?
15
- - Migrate: settle each gap through `rethink` at feature level before the feature's next change is planned. Code a landed change built goes to a prefactor.
16
-
17
- ### references: External specifications the design must follow are listed under references
18
- - Applies to: existing code
19
- - Rule: `.agents/skills/cruze-formats/reference/config.md`, "references"
20
- - Ask: does the project rely on an external document it must comply with, such as a protocol specification in the repository, that `references:` in `.cruze/config.yaml` doesn't list?
21
- - Migrate: list each under `references:` with its path and what it governs, as the user confirms.
22
-
23
- ## New work only
24
-
25
- ### plan-splits-by-responsibility: Plan splits a file for a second responsibility, never for its length
26
- - Applies to: new work only
27
- - Rule: `.agents/skills/cruze-plan/tasks.md`, step 6
28
-
29
- ### name-clash-review: The design reviewer checks new names against the ones a caller already reaches
30
- - Applies to: new work only
31
- - Rule: `.agents/skills/cruze-roles/design-rubric.md`, "Design rubric", item 8
32
-
33
- ### architecture-rethink-review: An architecture rethink that changes a contract gets a design review of the diff
34
- - Applies to: new work only
35
- - Rule: `.agents/skills/cruze-rethink/levels.md`, "Architecture", step 2
36
-
37
- ### missed-by-design-review: A gap the design review's rubric covers is missed by design-review
38
- - Applies to: new work only
39
- - Rule: `.agents/skills/cruze-rethink/SKILL.md`, "Steps", step 7
40
-
41
- ### sent-back-to: A sent-back verification says whether the change goes back to build or to rethink
42
- - Applies to: new work only
43
- - Rule: `.agents/skills/cruze-verify/SKILL.md`, "Steps", step 10
44
-
45
- ### standalone-plan-approval: The user approves the plan of a standalone change
46
- - Applies to: new work only
47
- - Rule: `.agents/skills/cruze-plan/SKILL.md`, "Steps", step 13
48
-
49
- ### deviation-read-back: Build reads a deviation back, and one that names a value the design didn't give is a rethink
50
- - Applies to: new work only
51
- - Rule: `.agents/skills/cruze-build/SKILL.md`, "Deviations"
52
-
53
- ### prefactor-verify: The verifier runs no suite again for a change that delivers no scenarios
54
- - Applies to: new work only
55
- - Rule: `.agents/skills/cruze-roles/verifier.md`, "Work", step 3
56
-
57
- ### design-on-main: The approved design reaches main before plan branches from it
58
- - Applies to: new work only
59
- - Rule: `.agents/skills/cruze-architect/SKILL.md`, "Next step"
@@ -1,40 +0,0 @@
1
- # Realign notes
2
-
3
- Each release that changes what Cruze expects of a project ships a notes file, `notes/<version>.md`. `cruze realign status` reads the notes between the project's `standards:` and the installed version.
4
-
5
- ## Releases
6
-
7
- - [0.0.2](notes/0.0.2.md)
8
- - [0.0.3](notes/0.0.3.md)
9
- - [0.0.4](notes/0.0.4.md)
10
- - [0.0.5](notes/0.0.5.md)
11
- - [0.0.6](notes/0.0.6.md)
12
- - [0.0.7](notes/0.0.7.md)
13
- - [0.0.8](notes/0.0.8.md)
14
- - [0.0.9](notes/0.0.9.md)
15
- - [0.0.10](notes/0.0.10.md)
16
- - [0.0.11](notes/0.0.11.md)
17
- - [0.0.12](notes/0.0.12.md)
18
- - [0.0.13](notes/0.0.13.md)
19
-
20
- ## Format
21
-
22
- A note is a `###` heading with an ID and a title, then facts:
23
-
24
- ```markdown
25
- ### test-placement: Rust tests live in tests/
26
- - Applies to: existing code
27
- - Rule: `.agents/skills/cruze-hexagonal-design/languages/rust.md`, "Dependencies and tooling"
28
- - Detect: check:test-placement
29
- - Migrate: move `src/<module>/tests.rs` to `tests/<module>.rs`
30
- ```
31
-
32
- | Fact | Holds |
33
- | --- | --- |
34
- | `Applies to` | `existing code`, when work that met the last release must change; `new work only`, when only future work follows it |
35
- | `Rule` | The skill file and heading that state the rule |
36
- | `Detect` | The CLI rule that finds it, as `check:<rule>` or `validate:<rule>` |
37
- | `Ask` | The question the auditor answers when no CLI rule can |
38
- | `Migrate` | How existing work changes to meet it |
39
-
40
- A note for existing code has `Migrate`, and `Detect` or `Ask`.
@@ -1,62 +0,0 @@
1
- ---
2
- name: cruze-rethink
3
- description: Steps back from any point, before or after landing, when something decided upstream turns out wrong or new information arrives. It amends only the level the discovery touches, keeps completed work, re-approves what went stale, and records the rethink for improving Cruze.
4
- ---
5
-
6
- # Rethink
7
-
8
- Finding a design flaw mid-build is information, not failure. Rethink amends the highest document the discovery touches and lets computed status show what went stale downstream. Then it re-approves exactly that, keeping every completed task the amendment doesn't touch. There is no state to reset: approvals follow content, so editing a document is how you step back.
9
-
10
- ## Steps
11
-
12
- 1. **State the discovery.** Say what is wrong or new, and quote the evidence: the failing test, the output, the document line, or what the user said. When `cruze next` sent you here for findings decided `rethink`, those findings are the discovery: `cruze show <ref>` lists them in its ledger.
13
- 2. **Classify it.** Pick the level from the table below, using the highest level the discovery touches. Pick its kind:
14
- - **Defect:** a Cruze step should have caught it.
15
- - **Discovery:** it is new information no step could have had.
16
-
17
- Tell the user the level and the kind in one line, and let them correct it.
18
- 3. **Load the standards.** Read `.agents/skills/cruze-grilling/SKILL.md`. At feature or architecture level, also read `.agents/skills/cruze-hexagonal-design/SKILL.md`, `.agents/skills/cruze-research/SKILL.md` and `.agents/skills/cruze-dependency-approval/SKILL.md`. Also read the format reference for the document you will amend: `.agents/skills/cruze-formats/reference/architecture.md`, `specs.md`, `work-items.md` or `durable-docs.md`.
19
- 4. **Amend that level,** following the level's section in [levels.md](levels.md). Settle any decision the amendment needs with the user, and record it as that level records decisions. At feature level and above, design the amendment as architect designs a feature, following the Rules in `.agents/skills/cruze-architect/SKILL.md`: read the vision's principles and capabilities that must stay possible, the feature map and the roadmap, and design for the features ahead while building only what the work in hand needs. Each option you offer says how the features ahead would use it, which capabilities it keeps open, and what it does to a running device or service, such as across a restart, an upgrade or a downgrade. In one architecture rethink, the user had to ask whether an option would still work for the apps the product plans to host, and point out that refusing to start after a downgrade could brick a router.
20
- 5. **Keep completed work.** A ticked task stays ticked unless the amendment changes its owner, its files, or what it proves. Reopen each task that changed with `cruze task reopen T<n> "<what changed>"`. Its commits stay in history, and build redoes the task.
21
- 6. **Re-approve what went stale.** Run `cruze status` and work from the top down. The amended document comes first, and the user approves it as its level says. Then take each feature or change it lists as `upstream changed`, whose own text you didn't edit:
22
- - Run `cruze diff <ref>`. It shows each changed element's approved and current text, and whether the work's delta needs a rebase. Check the work still holds against it. When it doesn't, amend it too, and the user approves it as an amended document.
23
- - When it holds, re-stamp it with `cruze approve <ref> --restamp-unchanged`. The CLI refuses work whose own text changed, a project document, and a change with a task reopened since its approval; the user re-approves those.
24
-
25
- Tell the user, in one line each, what you re-stamped and why it still holds. They can object, and that document goes to them. A change's verification carries over when its own design didn't change.
26
- 7. **Record the rethink.** Draft the entry and show it to the user in one line. When they confirm, run:
27
-
28
- ```sh
29
- cruze journal add rethink --set level=<task|detail|change|feature|architecture|vision> --set kind=<defect|discovery> \
30
- --set summary="<what changed>" --set wrong="<document and element, and what was wrong>" \
31
- --set found_by=<step> [--set missed_by=<step>] \
32
- --set agent="<the agent you run in>" [--item <ref>]
33
- ```
34
-
35
- Name the feature or change with `--item` whenever the rethink amends one: a rethink recorded for it closes the findings decided `rethink` on it.
36
-
37
- `found_by` is the step that found it. A defect also needs `missed_by`, the earliest step whose job was to catch it. Both take one of `envision`, `architect`, `research`, `design-review`, `walkthrough`, `plan`, `plan-review`, `build`, `code-review`, `verify`, `land`, `realign`, `improve`, `validate`, `check` or `user`. When a design review ran over the element and an item of its rubric, `.agents/skills/cruze-roles/design-rubric.md` or `.agents/skills/cruze-roles/plan-rubric.md`, covers the gap, `missed_by` is `design-review`, not `architect`: a retro reads it to know which rubric to fix.
38
-
39
- Done when `cruze status` shows every document approved and current, or names only work the user chose to leave for later.
40
-
41
- ## Levels
42
-
43
- | Level | Example | Amend | Then |
44
- | --- | --- | --- | --- |
45
- | Task | A helper belongs in a different file of the same module | Nothing. Record it with `cruze task deviation` | Carry on building. This is not a rethink, so record no rethink entry |
46
- | Detail | Build or verify needs a limit, timeout, message or error case | The element's text, with the code | The user approves it, with no review. Run from build or verify, as [levels.md](levels.md) says |
47
- | Change | A test plan row or a task's file is wrong, with no design change | `change.md`: its test plan or tasks | Plan review of the diff, then re-approve the change |
48
- | Feature | A use case needs a second port operation; a scenario is wrong | `feature.md`: its deltas and Changes table, or a standalone `change.md`'s deltas | Design review of the diff, walkthrough of the changed parts, then re-approve the feature and its changes |
49
- | Architecture | An entity boundary is wrong, or a new port is needed | `docs/architecture.md` directly, plus an ADR when it passes the ADR test | Design review of the diff when it changes an operation, port, error or `XC` rule, walkthrough of the diff, then `cruze approve architecture`, with `--replan` for built elements whose code must change |
50
- | Vision | The release's scope was wrong, or a new goal appears | `docs/vision.md`, and `docs/roadmap.md` | Re-approve the vision and the roadmap. Decide what happens to features that served a dropped goal |
51
-
52
- ## After landing
53
-
54
- Landed work is history, so rethink never edits an archived folder.
55
-
56
- - A discovery about behaviour that already shipped becomes a tweak or a feature through `architect`.
57
- - A discovery about the design becomes an architecture-level rethink, whose `--replan` hands the rebuild to a change.
58
- - A `merge-conflict` from `cruze land`, or a `rebase-required` from `cruze approve`, is a feature-level rethink, reconciled as described in [levels.md](levels.md).
59
-
60
- ## Next step
61
-
62
- Run `cruze next`, and name what it says. Start it in a new session, so its context starts empty.
@@ -1,54 +0,0 @@
1
- # Amending each level
2
-
3
- ## Detail
4
-
5
- A detail settles a limit, timeout, buffer size, message or error case that an element of the work in progress doesn't give, with no new element, port operation or dependency, and no change to an approved scenario. Build and verify run it without leaving their step: one message length settled as a full rethink took 75 minutes.
6
-
7
- 1. Ask the user, recommending a value and showing what the code then does, as `.agents/skills/cruze-grilling/illustrating.md` says.
8
- 2. Amend the element where it lives, in the delta or `docs/architecture.md`, adding at most one failure scenario and its test plan row for a new error case. Run `cruze validate`; done when it reports no errors.
9
- 3. Commit the text with the code and its test, naming the task. Tasks stay ticked.
10
- 4. The user approves the amended document. Re-stamp what went stale, and record the rethink with `level=detail`, as the skill's steps 6 and 7 say.
11
-
12
- ## Change
13
-
14
- 1. Edit the change's `## Test plan` or `## Tasks` so they are right. The scope doesn't change at this level; a scope change is a feature-level rethink.
15
- 2. Run `cruze validate`. Done when it reports no errors for the change.
16
- 3. Run the plan review from `.agents/skills/cruze-roles/SKILL.md` on the diff alone, with the design reviewer's plan rubric, `.agents/skills/cruze-roles/plan-rubric.md`, and `review=plan`.
17
- 4. Re-approve with `cruze approve <change> --by-agent` once the review has closed, as plan does.
18
-
19
- ## Feature
20
-
21
- 1. Edit the feature's `## Spec delta`, `## Architecture delta` or `## Changes`. Read the elements the discovery touches with `cruze show <ID>`, which prints the living body and this feature's version side by side, and the rest of `feature.md` when the amendment reaches beyond them. For a standalone change, edit its own deltas and scope. Write complete bodies, as `architect` does, and keep the scope rules.
22
- 2. Run `cruze validate`. Done when it reports no errors for the feature or its changes.
23
- 3. Run the design review from the roles skill on the diff alone, with `review=design`. Run the walkthrough of the changed parts, following `.agents/skills/cruze-architect/walkthrough.md`.
24
- 4. Re-approve the feature. For each of its changes that shows as stale, check it against the diff. When the amendment touches the change's scope, test plan or tasks, update them to match, reopen touched tasks, run the plan review on the diff, and re-approve it with `cruze approve <change> --by-agent`. When it doesn't, re-stamp the change as the skill's step 6 describes.
25
- 5. When a change hasn't been created yet, only the feature's Changes row changes; `plan` picks it up.
26
-
27
- ## Architecture
28
-
29
- 1. Edit `docs/architecture.md` directly. Keep every element's ID, and write complete bodies. Write an ADR with `cruze new adr` when the decision passes the ADR test, and link it under `## Decisions`.
30
- 2. Run `cruze validate`. When the amendment adds, renames or changes an operation, a port, a use case's `Errors` or an `XC` rule, run the review in `.agents/skills/cruze-roles/SKILL.md` on the diff with the design reviewer, `review=design`: a realign amendment once named a method that clashed with one the type already had, found only at plan. Then run the walkthrough of the diff only, following `.agents/skills/cruze-architect/walkthrough.md`.
31
- 3. List the elements you changed that are already `built`, whose code must now change. When the user approves, run `cruze approve architecture`, adding `--replan <ID>` for each of them. They go back to `planned` until a change rebuilds them, and only a land sets them back to `built`. A `- Status:` line belongs to the CLI: when an element was replanned by mistake, tell the user, and let the change rebuild or re-check it.
32
- 4. Commit the amendment, and get it onto main on its own, as a pull request or a merge. Every branch and every later change must build on it. Then merge main into the branch you were working on.
33
- 5. Hand each replanned element to a change that rebuilds it:
34
- - **The current change**, when the rebuild belongs to its work. Add the element to the feature's Changes row for that change and to the change's `Builds`, then re-plan and re-approve the change.
35
- - **A prefactor**, otherwise. From an up-to-date main, run `architect "<prefactor>"`, which designs it as a standalone change, then `plan`, `build`, `verify` and `land` it before the current change continues.
36
- 6. Run `cruze status`. Every document citing a changed element shows `upstream changed`:
37
- - When the document's own delta still changes that element, rewrite the delta so it keeps your amendment. `cruze approve` refuses it with `rebase-required` until you do, and `cruze diff <ref>` names each such element. Then approve it with `--rebase <ID>`.
38
- - Otherwise, check the document against `cruze diff <ref>`, and re-stamp it or amend it as the skill's step 6 describes. An element the feature already merged, with its delta entry unchanged since, needs no rebase: the living text now holds it, and later lands keep your amendment.
39
-
40
- ## Vision
41
-
42
- 1. Edit `docs/vision.md` with the user: goals, non-goals or constraints. The feature map changes only through `cruze features add`, `cruze features update` and `cruze features drop`. When the problem, users or goals changed, update the overview under the title of `README.md` to match.
43
- 2. Update `docs/roadmap.md` to match, following `.agents/skills/cruze-roadmap/SKILL.md`.
44
- 3. For each feature in progress that served a dropped goal, the user decides: keep it, or stop it with `cruze abandon <ref> --reason "<why>"`. Abandoning archives the folder and puts the feature back on the future list; changes that already landed stay.
45
- 4. Re-approve with `cruze approve vision`, then `cruze approve roadmap`.
46
-
47
- ## A conflict with living text
48
-
49
- `cruze approve` refuses a feature or standalone change with `rebase-required` when an element its delta changes was edited in the living docs since its last approval, by a rethink, a realign or another branch's land, and the delta would still write that element: the work hasn't merged it yet, or has changed its delta entry since merging it. `cruze land` refuses with `merge-conflict` for the same reason when the approval came first. Either way, the delta would overwrite that edit. Record the rethink at feature level.
50
-
51
- 1. Show the user `cruze diff <feature>`, which has the element's approved and current text, and the feature's delta for it.
52
- 2. Rewrite the delta's body so that it holds both: their edit, and what this feature needs.
53
- 3. Re-approve the feature with `cruze approve <feature> --rebase <ID>`. This records that the feature now builds on the current text.
54
- 4. Re-approve the change that is landing, when it shows stale; its verification carries over. Then run `land` again.
@@ -1,54 +0,0 @@
1
- ---
2
- name: cruze-roadmap
3
- description: Orders the release's features and standalone changes into phases with blocking edges and goal coverage, adds or reorders items as work starts or plans change, and closes a finished release to plan the next.
4
- ---
5
-
6
- # Roadmap
7
-
8
- `docs/roadmap.md` is the index of the current release. It changes only when an item is added, reordered or dropped, or a release closes. The CLI keeps its managed `## Status` table current as work starts and lands. Format: `.agents/skills/cruze-formats/reference/durable-docs.md`.
9
-
10
- ## Steps
11
-
12
- 1. **Read the state.** Read `docs/vision.md` (goals and feature map), `docs/roadmap.md`, and `docs/architecture.md` as "Reading it" in `.agents/skills/cruze-formats/reference/architecture.md` says, and run `cruze status`. The vision must be approved. When no roadmap exists, stop: project-scope `architect` creates the first one with the foundation.
13
- 2. **Pick the job.**
14
- - **Add an item:** a feature or standalone change the user wants in this release. Its slug comes from the feature map when it is there.
15
- - **Reorder or drop:** the order or scope of the release changed.
16
- - **Close the release:** every item in `## Status` is `landed`, or the user decides to ship what has landed.
17
- 3. **Load the standard.** Read `.agents/skills/cruze-grilling/SKILL.md`. The order of work is the user's decision, so put each ordering question to them with your recommendation.
18
- 4. **Do the job,** as described in the matching section below.
19
- 5. **Check the rules.**
20
- - Every item names the goals it serves.
21
- - `Blocked by` names only items in this or an earlier phase, and the blocking graph has no cycle.
22
- - Every goal the release covers has at least one item in `## Coverage`.
23
- - A phase holds items that can proceed in parallel once their blockers land.
24
- - Done when `cruze validate` reports no errors in `docs/roadmap.md`.
25
- 6. **Approve.** Show the user the phases, the blocking edges and the coverage table. When they approve the ordering, run `cruze approve roadmap` and quote its result.
26
-
27
- ## Adding an item
28
-
29
- - Place it in the earliest phase whose items don't block it. Name its blockers: an item blocks it when it builds an element this item extends, or delivers behaviour this item changes.
30
- - A prefactor restructures code that later items build on, so it goes first: each item it overlaps names it under `Blocked by`. The exception is an item already building, with a change planned or in progress, which the prefactor would rebuild under: the prefactor waits for it and names it under `Blocked by` instead. Put the order to the user either way. One project's realign put a prefactor behind a feature that hadn't started, and the user wanted it first.
31
- - Add its slug to the coverage row of each goal it serves.
32
- - A feature that isn't on the feature map gets there first: `cruze features add <slug> --summary <text> --goals <ids>`.
33
-
34
- ## Reordering or dropping
35
-
36
- - Never move or drop an item whose `## Status` row shows it started (`designing` or `building`) without the user deciding what happens to its folder. The options are to finish it, or to stop it and supersede it later.
37
- - Move a dropped feature back to the future list with `cruze features add` when it may return. When it won't, record why with `cruze features drop <slug> --reason <text>`.
38
-
39
- ## Closing the release
40
-
41
- 1. Confirm that every feature that landed shows in the vision's implemented list. `cruze land` moves each one there when its last change lands.
42
- 2. Agree the next release with the user: its name, one sentence on what it delivers, and which future features it takes from the feature map. Grill on the goals the choice serves.
43
- 3. Replace `## Release` and `## Phases` with the next release, and rebuild `## Coverage`. Run `cruze roadmap prune` to clear the landed items from `## Status`. The feature map keeps the record.
44
-
45
- ## Next step
46
-
47
- Name the first item whose blockers have all landed:
48
-
49
- - A feature whose requirements aren't settled: `envision "<feature>"`.
50
- - A feature whose requirements are settled: `architect "<feature>"`.
51
- - A standalone change whose design exists: `plan`.
52
- - A tweak without a design yet: `architect "<tweak>"`.
53
-
54
- Start it in a new session, so its context starts empty.
@@ -1,35 +0,0 @@
1
- # Auditor
2
-
3
- You compare a project's existing code and documents with what the installed Cruze now expects, and report every place they differ. You report findings, and you edit nothing.
4
-
5
- ## Inputs
6
-
7
- - The notes to audit, from `cruze realign status`: each note's ID, `Rule`, `Ask` and `Migrate`.
8
- - In a full audit, the standards instead of notes: `.agents/skills/cruze-hexagonal-design/SKILL.md` and its language file, `.agents/skills/cruze-behavioural-testing/SKILL.md`, and `.agents/skills/cruze-formats/reference/architecture.md`. You audit one module, named with its `Path`.
9
- - `docs/architecture.md`, for the module map and the elements the code implements: `cruze show --index <context>` lists them, and `cruze show <ID>` prints each.
10
- - The files in scope: every source and test file under the project's `source` and `tests` globs in `.cruze/config.yaml`, or under the module's `Path`.
11
- - The settled ledger, as `.agents/skills/cruze-roles/SKILL.md` defines it, and the earlier realign dispositions from `cruze journal list --event disposition`. Never raise a finding they waived.
12
-
13
- ## Work
14
-
15
- 1. For each note, answer its `Ask` for every file in scope, not a sample. Work module by module.
16
- 2. For each difference, find the smallest fix the note's `Migrate` allows, and whether it changes the text of an element in `docs/architecture.md`.
17
- 3. Done when every note has findings, or evidence that the code already meets it.
18
-
19
- ## Findings
20
-
21
- Group findings by note, in this shape:
22
-
23
- ```markdown
24
- ### <n>. <note ID>: <one-line summary>
25
- - Evidence: <path:line, quoting the code>
26
- - Standard: <the rule text it departs from>
27
- - Fix: <the specific change>
28
- - Design change: <the element in docs/architecture.md whose text must change, or `no`>
29
- ```
30
-
31
- List every finding. When one pattern repeats more than 5 times, list 5 and give the count and the paths of the rest in one line.
32
-
33
- ## Report
34
-
35
- End with one line: `Findings: <n> across <m> notes.` For each note with no findings, give the evidence that the code meets it.
@@ -1,43 +0,0 @@
1
- # Design reviewer
2
-
3
- You review a design, or a change's plan, before any code exists. You find the places where it is wrong, incomplete or ambiguous enough that a competent implementer who never saw the conversation would build the wrong thing. You report findings, and you edit nothing.
4
-
5
- ## Inputs
6
-
7
- - The artifact under review:
8
- - Feature scope: the feature's `feature.md`, and the output of `cruze show <ref>` for the elements its delta cites, each with where it sits, and the settled ledger.
9
- - Project scope: `docs/architecture.md`, `.cruze/config.yaml` and `docs/roadmap.md`, plus the foundation change once it exists.
10
- - A plan: the change's `change.md`, the output of `cruze show <ref>`, and the output of `cruze status --overlap --change <ref>`.
11
- - The living docs it builds on: `docs/vision.md`, `docs/glossary.md`, the ADRs in `docs/adr/`, the specs in `docs/specs/` that the artifact cites, and, from `docs/architecture.md`, its Overview, Dependency rules, Cross-cutting concerns and Decisions sections plus each element `cruze show` lists as cited. Read any other element with `cruze show <ID>`, and find what exists with `cruze show --index`. Read the whole architecture only at project scope.
12
- - The settled ledger, as `.agents/skills/cruze-roles/SKILL.md` defines it, with the output of `cruze journal list --event disposition --item <ref>`.
13
- - The output of `cruze validate`.
14
- - The references `cruze show` lists, from `references:` in `.cruze/config.yaml`: read the sections the design cites or relies on.
15
- - The standards: `.agents/skills/cruze-hexagonal-design/SKILL.md` and `.agents/skills/cruze-formats/SKILL.md`.
16
-
17
- ## Rubric
18
-
19
- Review against one rubric and nothing else, and read only that one. Each finding names one of its items.
20
-
21
- - A design, at project scope or of a feature or a standalone change: `.agents/skills/cruze-roles/design-rubric.md`.
22
- - A change's plan: `.agents/skills/cruze-roles/plan-rubric.md`.
23
-
24
- ## Findings
25
-
26
- Each finding has this shape:
27
-
28
- ```markdown
29
- ### <n>. <rubric item>: <one-line summary>
30
- - Severity: blocker | concern
31
- - Evidence: <path:line, quoting the text>
32
- - Failure scenario: <what goes wrong, concretely, if this ships as written>
33
- - Proposed fix: <the specific edit>
34
- ```
35
-
36
- - A **blocker** means building from the design as written would produce wrong behaviour, a layering violation or an untestable scenario. Two elements that contradict each other are always a blocker, because an implementer has to pick one. Everything else is a **concern**.
37
- - List every blocker. List at most 5 concerns, or one per 5 scenarios in a feature's spec delta, or for a plan one per 5 tasks, when that is more, the most important first. Count the rest as nits: give only their number, never their text. Report only what would go wrong: no concerns is a valid report, and a small artifact usually has few.
38
- - Drop any finding that contradicts the settled ledger. The only exception is a blocker with new evidence, which you mark `New evidence:` and explain.
39
- - When a finding could be caught mechanically, add `Check: <the cruze check rule or linter setting that would catch it>`.
40
-
41
- ## Report
42
-
43
- End with one line: `Blockers: <n>. Concerns: <n>. Nits: <n>.` When there are no findings, say which rubric items you checked and give the evidence for the most important one.
@@ -1,41 +0,0 @@
1
- # Design rubric
2
-
3
- The design reviewer's rubric for a design: the architecture at project scope, or the design of a feature or a standalone change. Review against these items and nothing else. Each finding names one. At project scope, items 6 and 11 hold in full for what the foundation builds; a later part may leave a specific open when a `Future` fact names it, but not an operation or data that crosses into the foundation.
4
-
5
- 1. **Behaviour.** Every requirement has at least one scenario. Every scenario has concrete values, one WHEN, and a THEN a person could check. Failure behaviour the user will meet has its own scenario.
6
- 2. **Seams.** Every scenario can be driven through a use case, or through an inbound adapter when the outcome is what that adapter shows. Every driven port the use case needs can be faked.
7
- 3. **Placement.** Every new or changed element with code has a `Module` whose `Layer` fits its role and a `File` with a real path. No generic modules, and no file is likely to hold two responsibilities. The layout is the one normal for the kind of system and the language, and every layer, module, package or target split beyond a context's `core` and its adapters has a recorded reason. Every element, fact and value serves a requirement in scope, or a `Future` fact the feature map or a `LATER` capability calls for. Anything reserved for a need nobody stated is a finding, and so is anything built, rather than left room for, for a `LATER` capability. A field or value serves a need only when a person, a tool or another element reads it in a scenario or a `LATER` row; a scenario that only checks it is written doesn't count. A design carried over from an earlier build or a seed is checked the same way: one project built a clock port and timestamp parsing for a status field nothing read.
8
- 4. **Direction.** Every dependency points inward and is allowed by the `RULE` elements and the `layers:` in `.cruze/config.yaml`.
9
- 5. **Adopt or build.** Every component that isn't domain logic has an adopt-or-build decision with a reason, and every new dependency is named with the features the design uses. Every type, trait, macro, framework or tool the design names from outside the project comes from a dependency and feature the design approves, declared by each crate, package or target that uses it, test support included, and allowed by the import rules in `XC` and the `layers:` in `.cruze/config.yaml`. A choice whose reason is avoiding a dependency, a crate or a feature, where the idiomatic design needs one, is a concern: name the idiomatic design. Every command the design spells out, such as a CI step, is spelled as that version's `--help` or source shows it. A claim the design relies on that the research left unverified is a blocker.
10
- 6. **Contracts.** Every new or changed port's `Operations` state what each operation guarantees, how it fails, and who owns cleanup. Check each use case and each port operation for the values build would otherwise have to pick: a named error for every failure a caller can meet, where a panic, an `expect` or "caller error" counts as missing; a number for every timeout, limit, buffer and poll interval; what a caller observes after each state transition, and what happens to queued or in-flight work at it; and one owner for every message a scenario quotes. Each one missing is a blocker: two projects settled 35 of them during build, as deviations.
11
- 7. **Flows.** The key scenarios have a `FLOW` whose participants are all in its `Elements`, including the failure paths the scenarios need.
12
- 8. **Consistency.** The design agrees with `docs/architecture.md`, the accepted ADRs, the references and what earlier changes landed, or changes them explicitly through a `MODIFIED` operation or a new ADR. Its own elements agree with each other. Check every pair, not a sample:
13
- - each use case's `Output` and `Errors` against the `FLOW`s that serve it and the `XC` rules that apply to it;
14
- - each use case against every port operation it calls: it says what it does with each refusal that operation can answer, from its `Operations` and the use case behind it, and lists the port under `Uses`. A new use of an existing operation, such as the clock stamping a new kind of time, is a `MODIFIED` port whose `Operations` name the use;
15
- - each adapter's duties against the port it implements and the `XC` rules it follows;
16
- - each guarantee, such as "always fits" or "never returns", against the limits and failures that bound it;
17
- - each `XC` rule against the other `XC` rules, the `RULE` elements and the `layers:` in `.cruze/config.yaml`, such as a logging rule that every module logs against a build rule that forbids the logging import;
18
- - each pair of use cases that change the same state, for an interleaving that leaves it wrong, against the concurrency rule in `XC`;
19
- - at feature scope, the prose in `docs/architecture.md`, the ADRs and the feature itself that the delta makes untrue, such as an Overview sentence, a `D<n>` line describing an element the delta splits or replaces, or any sentence stating a rule the delta retires;
20
- - each message or value a scenario quotes from code already built, such as an error's printed form or a revision every write advances, against the code that produces it;
21
- - each new or renamed operation, method or builder step against the others the same type, trait or caller reaches, for two names a caller can't tell apart, such as an `events` method beside an `events` trait method the type also implements.
22
- 9. **Slicing.** Each change delivers scenarios end to end, through a real interface, and can land on its own. The order respects `Depends on`. At project scope, the first change builds the kind of foundation the user chose, recorded in `## Decisions`, and nothing beyond it. Each change carries enough work to be worth its own plan review, code review and verify: changes that build one or two elements each on the same adapters or screens, in a chain, are one change split too fine. A change that one verifier run can't hold is split too coarse. A `change-too-small`, `change-too-large` or `feature-size` warning from `cruze validate` is a finding, unless a decision records the user accepting it. A change `Builds` an element only when its delivered scenarios prove the whole body; an element whose duties arrive in several changes is split into elements that each arrive whole. `Depends on` names every earlier change that builds something this change's scenarios need. At project scope, the roadmap starts with the foundation, and every goal in the release is covered.
23
- 10. **Ambiguity.** Name each point where a fresh implementer could reasonably build something different from what the user expects.
24
- 11. **Flow control and recovery.** Follow each message, request and event from its source to its consumer through every task, channel and queue the design names, against `.agents/skills/cruze-hexagonal-design/runtime.md`. Check:
25
- - each bounded queue or buffer: what a sender does when it is full, and which other work waits meanwhile. One slow peer, link, subscriber or consumer holds up only its own work unless a decision says otherwise, so one queue or one task serving several peers needs a reason. A limit meant to tell a stalled consumer from a burst says how it tells them apart;
26
- - each place several sources feed one consumer: the order it takes them in, so that none starves;
27
- - each asynchronous result: how it reaches the request that waits for it, including across a reconnect or a retry;
28
- - each recovery, such as a reconnect, resubscribe, relist or retry: its schedule, its limit and when that count resets, what happens when the recovery itself fails, what is lost between the failure and the recovery and how the consumer learns of it, and the order of steps that loses nothing, such as subscribing before relisting;
29
- - each loop, task and retry: what stops it, and what shutdown does with the work it holds;
30
- - each value the design compares with observed state: an adapter can observe it, or the difference is reported for good;
31
- - each exclusive resource, such as a socket, a device or kernel state: what happens when a second instance or caller claims it.
32
-
33
- Each one missing that a scenario or an `XC` rule depends on is a blocker: in two projects, 7 of 14 defect rethinks after a design review were one of these, found as late as verify.
34
- 12. **Long-term intent.** Check the design against `## Principles` and `## Must stay possible` in `docs/vision.md`:
35
- - each principle: the design follows it, or the vision's row was amended for this design and approved;
36
- - each `LATER` capability, whatever its area: nothing in the design, such as a fixed set, a single owner or a one-way protocol, rules it out; and where the design touches its area, it leaves the room the row names, in a `Future` fact that cites the ID;
37
- - each part of the user's input handed to this work, as the Notes section of `cruze show` lists it, or `cruze show --notes architect` at project scope: settled with the user, or the design doesn't rest on it;
38
- - each settled decision of the design that states long-term intent, such as "eventually" or "later": it is a `LATER` row in the vision, since the decision is archived when the work lands.
39
-
40
- A departure from a principle with no amendment, a `likely` capability closed off, or a design resting on an open hand-off row, is a blocker; a `possible` one closed off is a concern.
41
- 13. **Typed inside.** Each value one of the system's own components passes another in the same process has its own type, as the standards' domain rules say. A serialization format between them, such as a JSON value, a raw frame or an untyped map, is a concern even when an ADR gives the reason, so the walkthrough brings it to the user.
@@ -1,11 +0,0 @@
1
- # Plan rubric
2
-
3
- The design reviewer's rubric for a change's plan. Review against these items and nothing else. Each finding names one.
4
-
5
- 1. **Test plan.** Every delivered scenario has a `behaviour` row at a real seam, with its test file. Every port that a built adapter implements has a `contract` row. Seams need fakes of driven ports only, never mocks of internal code.
6
- 2. **Tasks.** Every task names one owner and file paths the architecture assigns to that owner. Every scope ID is proved by a task. Each task is small enough to build red to green and commit on its own. A task that changes a signature, default or setting lists every file whose callers it breaks, including tests that start the real binary. A task that adds a module, file or dependency lists the file that declares it, such as a crate root, a `mod.rs`, a package manifest or an Xcode project, and the lockfile for a dependency. A task that adds a field lists every file with a literal of its type that names all the fields. A rule, text, format or conversion that several elements apply has one owning file, and each later task that applies it names that file as a callee rather than restating it. An accessor, variant or type arrives in the task whose code first handles, matches or constructs it, never in the task that only tests it.
7
- 3. **Order.** Tasks run from the inside out, domain before ports, use cases and adapters, so each task's test can fail first and then pass. A test sits in the task that builds the behaviour it checks: a test that an earlier task's code already passes is in the wrong task. A break the plan names is a behaviour the task's code could get wrong, not an edit that may not compile. The last tasks wire the composition root.
8
- 4. **No design.** Nothing in the plan changes the architecture or the specs. A plan that needs a new element, operation or scenario goes back to `architect` or `rethink`.
9
- 5. **Risks and overlap.** The riskiest task is named, with how it is checked, and that check reaches the failure rather than a value a clamp or default hides. Overlap with work on other branches is resolved or accepted.
10
- 6. **Ambiguity.** Name each task a fresh implementer could reasonably build differently from what the plan means.
11
- 7. **Prefactor.** For a change that delivers no scenarios and rebuilds built elements, as "A prefactor" in `.agents/skills/cruze-plan/SKILL.md` describes: `## Risks` names the existing tests that reach each rebuilt element, and the command that runs them; no task adds, edits or deletes a test, except one that pins current behaviour before the restructuring; and no item's visibility or public surface grows beyond what its new callers need.
@@ -1,41 +0,0 @@
1
- # Surveyor
2
-
3
- You survey existing code for structure that departs from Cruze's current standards, or that keeps causing friction, and say what it should become. You report candidates, and you edit nothing.
4
-
5
- ## Inputs
6
-
7
- - What to survey: the system's layout, or one module, named with its `Path`.
8
- - The standards: `.agents/skills/cruze-hexagonal-design/SKILL.md`, `.agents/skills/cruze-hexagonal-design/shapes.md`, the language file for the project's language when one exists, and `.agents/skills/cruze-behavioural-testing/SKILL.md`.
9
- - `docs/architecture.md`, for the module map and the elements the code implements, which `cruze show --index` lists and `cruze show <ID>` prints, and `.cruze/config.yaml`.
10
- - `## Principles` and `## Must stay possible` in `docs/vision.md`: why parts of the design exist that no current feature uses yet.
11
- - The files in scope: for the layout, the build manifests, such as `Cargo.toml` or `Package.swift`, and each module's `Path`; for a module, every source and test file under its `Path`.
12
- - The journal, landed work included: the output of `cruze journal list --event deviation --all`, `cruze journal list --event rethink --all` and `cruze journal list --event disposition --all`.
13
- - The settled ledger, as `.agents/skills/cruze-roles/SKILL.md` defines it, and the earlier `improve` and `realign` dispositions. Never raise a candidate they waived.
14
-
15
- ## Work
16
-
17
- 1. **The layout.** Name the kind of system, and compare the module map and the packages, crates or targets with the layout `shapes.md` and the language file describe. For each boundary between packages or targets, count what it costs: the declarations made public to cross it, and the bridges, re-exports and duplicated types that exist only because of it.
18
- 2. **The module's code.** Read every file in scope, not a sample. Check it against the standards: who owns each rule, dependency direction, ports and adapters, errors, and the warning signs in the hexagonal-design skill.
19
- 3. **The journal.** Find the deviations, rethinks and review findings that name a file in scope, and group them by cause. A cause that recurs is friction.
20
- 4. **The history.** Run `git log --format=%h --name-only -n 300 -- <Path>`. Name the files outside the module that change in the same commits as its files in more than half of those commits; a boundary there is often in the wrong place. Name the files that change most.
21
- 5. **One operation.** Pick one representative operation the module serves, and list the files a reader opens to follow it from the inbound adapter to the outbound one. Note modules that only forward calls, and pairs of modules that own one responsibility between them.
22
- 6. **Shape each candidate.** Give the smallest target that meets the standard or removes the friction, and say whether it changes the text of an element in `docs/architecture.md`. A target keeps behaviour, keeps small files, and keeps every technology behind a port. It follows every principle and keeps the room each `LATER` capability needs; when removing something would close one off, name the capability, and leave the choice to the user.
23
-
24
- Done when every file in scope was read, and every candidate has evidence.
25
-
26
- ## Report
27
-
28
- One block per candidate:
29
-
30
- ```markdown
31
- ### <n>. <one-line summary>
32
- - Kind: standard | friction
33
- - Evidence: <path:line quoting the code, journal entries with their timestamps, or commit counts>
34
- - Cost: <the rule text it departs from, or what the friction cost, such as five deviations>
35
- - Target: <the specific shape it should take>
36
- - Size: <prefactor changes, and tasks in each>
37
- - Risk: <what could break, and which tests cover it>
38
- - Design change: <the elements in docs/architecture.md whose text must change, or `no`>
39
- ```
40
-
41
- Report every candidate that has evidence, and none that doesn't. End with one line: `Candidates: <n>. Standard: <n>. Friction: <n>.`
@@ -1,42 +0,0 @@
1
- # Verifier
2
-
3
- You check that a change actually works when someone uses it. The tests passing is not enough: you build the real system, and run each scenario the change delivers through its real front door. You report what happened, and you change nothing in the project.
4
-
5
- ## Inputs
6
-
7
- - The change's `change.md`, for its test plan, and the output of `cruze show <ref>`: the scenarios it delivers, written out, and the flows and elements it builds.
8
- - The project's commands, from `commands:` in `.cruze/config.yaml`, and from `README.md` when they aren't there.
9
- - The mechanical checks' results, with the commit they ran at.
10
-
11
- ## Work
12
-
13
- 1. **Build.** Build the system with the project's build command, and record whether it passed. The test suite already ran at the commit in your inputs, and CI runs it again before the merge, so don't run it. Run a single test only when it is how a scenario reaches its real front door, such as a UI test that drives the app.
14
- 2. **Trace.** Run `cruze trace --change <ref>` and record its result.
15
- 3. **Run each scenario that has a front door.** A scenario whose test plan row names an inbound adapter, a screen or a real adapter as its seam is one a user meets, so run it:
16
- - Set up its GIVEN with real things where you can: configuration files, directories, a local test server, a pseudo-terminal. Put them in a temporary directory outside the project.
17
- - Perform its WHEN through the real inbound adapter, such as the CLI binary or an HTTP request, the way a user or client would.
18
- - Compare what you observe with its THEN, word for word where the scenario quotes output.
19
-
20
- A scenario whose row runs through a use case with fakes is proved by its behaviour test, which passed at the checks commit: give the test's file and name as `Ran:` and the commit as `Observed:`, and don't drive it. Driving every scenario cost one app project 31 minutes a change, for one defect in 28 runs.
21
-
22
- A change that delivers no scenarios, such as a prefactor that keeps behaviour, is proved by the suite that passed at the checks commit. Run the system once through a front door that reaches each element it rebuilds, as a smoke check, and run no test or test suite again: one prefactor's verifier re-ran a 4-minute UI suite that had passed an hour before.
23
- 4. **Probe one step further.** For each scenario you ran, try the nearest thing a user would plausibly do next or get wrong, such as the same command twice, a typo in the input, or an interrupt. Report surprises; they are not failures of the scenario.
24
- 5. **Clean up** everything you created outside the project.
25
-
26
- When a scenario needs something you don't have, such as real hardware or a remote host, don't fake it. Mark it `could not run`, and say exactly what it needs, so a person can run it by hand. The same holds for time: don't idle through a timer, a scheduled notification or a device settling. Drive time through the project's seam for it when there is one; otherwise a wait over 30 seconds is `could not run`, with the wait a person needs.
27
-
28
- ## Report
29
-
30
- One block per scenario:
31
-
32
- ```markdown
33
- ### SCN-<id>: <title>
34
- - Result: pass | fail | could not run
35
- - Setup: <what you created>
36
- - Ran: <the exact command or request>
37
- - Observed: <the exact output, exit code or response>
38
- - Expected: <the THEN, quoted>
39
- - Notes: <surprises from probing, or what a person needs to run it>
40
- ```
41
-
42
- Before the blocks, list the build and trace commands with their results, and the commit the mechanical checks ran at. End with one line: `Pass: <n>. Fail: <n>. Could not run: <n>.`