@kiwidata/grimoire 0.1.6 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +5 -1
  3. package/dist/cli/program.d.ts.map +1 -1
  4. package/dist/cli/program.js +2 -0
  5. package/dist/cli/program.js.map +1 -1
  6. package/dist/commands/comment-lint.d.ts +3 -0
  7. package/dist/commands/comment-lint.d.ts.map +1 -0
  8. package/dist/commands/comment-lint.js +14 -0
  9. package/dist/commands/comment-lint.js.map +1 -0
  10. package/dist/core/branch-check.d.ts.map +1 -1
  11. package/dist/core/branch-check.js +2 -16
  12. package/dist/core/branch-check.js.map +1 -1
  13. package/dist/core/check-complexity.d.ts +4 -0
  14. package/dist/core/check-complexity.d.ts.map +1 -0
  15. package/dist/core/check-complexity.js +79 -0
  16. package/dist/core/check-complexity.js.map +1 -0
  17. package/dist/core/check-llm.d.ts +5 -0
  18. package/dist/core/check-llm.d.ts.map +1 -0
  19. package/dist/core/check-llm.js +108 -0
  20. package/dist/core/check-llm.js.map +1 -0
  21. package/dist/core/check.d.ts +1 -2
  22. package/dist/core/check.d.ts.map +1 -1
  23. package/dist/core/check.js +2 -179
  24. package/dist/core/check.js.map +1 -1
  25. package/dist/core/comment-lint.d.ts +18 -0
  26. package/dist/core/comment-lint.d.ts.map +1 -0
  27. package/dist/core/comment-lint.js +215 -0
  28. package/dist/core/comment-lint.js.map +1 -0
  29. package/dist/core/doc-style.d.ts +1 -0
  30. package/dist/core/doc-style.d.ts.map +1 -1
  31. package/dist/core/doc-style.js +1 -1
  32. package/dist/core/doc-style.js.map +1 -1
  33. package/dist/core/docs.js +1 -1
  34. package/dist/core/docs.js.map +1 -1
  35. package/dist/core/health.js +1 -1
  36. package/dist/core/health.js.map +1 -1
  37. package/dist/core/hooks.js +39 -28
  38. package/dist/core/hooks.js.map +1 -1
  39. package/dist/core/init-config.d.ts +22 -0
  40. package/dist/core/init-config.d.ts.map +1 -0
  41. package/dist/core/init-config.js +118 -0
  42. package/dist/core/init-config.js.map +1 -0
  43. package/dist/core/init-prompts.d.ts +8 -0
  44. package/dist/core/init-prompts.d.ts.map +1 -0
  45. package/dist/core/init-prompts.js +166 -0
  46. package/dist/core/init-prompts.js.map +1 -0
  47. package/dist/core/init.d.ts +0 -1
  48. package/dist/core/init.d.ts.map +1 -1
  49. package/dist/core/init.js +3 -278
  50. package/dist/core/init.js.map +1 -1
  51. package/dist/core/list.js +2 -2
  52. package/dist/core/list.js.map +1 -1
  53. package/dist/core/status.js +2 -2
  54. package/dist/core/status.js.map +1 -1
  55. package/dist/core/update.d.ts.map +1 -1
  56. package/dist/core/update.js +22 -0
  57. package/dist/core/update.js.map +1 -1
  58. package/dist/core/validate.js +1 -1
  59. package/dist/core/validate.js.map +1 -1
  60. package/dist/utils/config.d.ts +2 -0
  61. package/dist/utils/config.d.ts.map +1 -1
  62. package/dist/utils/config.js +4 -0
  63. package/dist/utils/config.js.map +1 -1
  64. package/dist/utils/frontmatter.d.ts +6 -0
  65. package/dist/utils/frontmatter.d.ts.map +1 -0
  66. package/dist/utils/frontmatter.js +13 -0
  67. package/dist/utils/frontmatter.js.map +1 -0
  68. package/dist/utils/paths.d.ts +1 -1
  69. package/dist/utils/paths.d.ts.map +1 -1
  70. package/dist/utils/paths.js +5 -4
  71. package/dist/utils/paths.js.map +1 -1
  72. package/dist/utils/stdin.d.ts +3 -0
  73. package/dist/utils/stdin.d.ts.map +1 -0
  74. package/dist/utils/stdin.js +13 -0
  75. package/dist/utils/stdin.js.map +1 -0
  76. package/package.json +6 -2
  77. package/skills/grimoire-apply/SKILL.md +4 -3
  78. package/skills/grimoire-draft/SKILL.md +147 -215
  79. package/skills/grimoire-plan/SKILL.md +4 -1
  80. package/skills/grimoire-pr/SKILL.md +14 -15
  81. package/skills/grimoire-refactor/SKILL.md +3 -1
  82. package/skills/references/artifact-map.md +2 -1
  83. package/skills/references/code-quality.md +1 -1
  84. package/skills/references/principles.md +4 -3
  85. package/skills/references/refactor-scan-categories.md +15 -0
  86. package/skills/references/review-personas.md +30 -13
  87. package/skills/references/testing-contracts.md +19 -0
  88. package/templates/draft.md +108 -0
@@ -81,6 +81,9 @@ function parsePrecommitReview(projectRaw) {
81
81
  block_on: blockOn === "blocker" || blockOn === "none" ? blockOn : undefined,
82
82
  };
83
83
  }
84
+ function parseCommentLint(val) {
85
+ return val === "block" || val === "warn" || val === "off" ? val : undefined;
86
+ }
84
87
  function parseSurface(projectRaw) {
85
88
  const surfaceRaw = str(projectRaw.surface);
86
89
  return PROJECT_SURFACES.includes(surfaceRaw) ? surfaceRaw : undefined;
@@ -96,6 +99,7 @@ function parseProject(raw) {
96
99
  commit_style: String(projectRaw.commit_style ?? raw.commit_style ?? DEFAULT_CONFIG.project.commit_style),
97
100
  doc_tool: str(projectRaw.doc_tool ?? raw.doc_tool),
98
101
  comment_style: str(projectRaw.comment_style ?? raw.comment_style),
102
+ comment_lint: parseCommentLint(projectRaw.comment_lint),
99
103
  caveman: str(projectRaw.caveman),
100
104
  compliance: parseStringArray(projectRaw.compliance),
101
105
  design_tool: parseDesignTool(projectRaw),
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface ParsedFrontmatter {
2
+ data: Record<string, unknown>;
3
+ content: string;
4
+ }
5
+ export declare function matter(input: string): ParsedFrontmatter;
6
+ //# sourceMappingURL=frontmatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAOvD"}
@@ -0,0 +1,13 @@
1
+ import { parse } from "yaml";
2
+ const FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n([\s\S]*))?$/;
3
+ // Parse leading YAML frontmatter; empty data when absent.
4
+ export function matter(input) {
5
+ const text = input.charCodeAt(0) === 0xfeff ? input.slice(1) : input;
6
+ const match = FRONTMATTER.exec(text);
7
+ if (!match)
8
+ return { data: {}, content: text };
9
+ const parsed = match[1].trim() ? parse(match[1]) : null;
10
+ const data = parsed && typeof parsed === "object" ? parsed : {};
11
+ return { data, content: match[2] ?? "" };
12
+ }
13
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAO7B,MAAM,WAAW,GAAG,uDAAuD,CAAC;AAE5E,0DAA0D;AAC1D,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC3C,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare function findProjectRoot(): Promise<string>;
1
+ export declare function findProjectRoot(startDir?: string): Promise<string>;
2
2
  export declare function resolveChangePath(root: string, changeId: string): string;
3
3
  export declare function safePath(root: string, filePath: string): string;
4
4
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxE;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/D"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBxE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxE;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/D"}
@@ -1,7 +1,8 @@
1
1
  import { join, resolve } from "node:path";
2
2
  import { fileExists } from "./fs.js";
3
- export async function findProjectRoot() {
4
- let dir = process.cwd();
3
+ export async function findProjectRoot(startDir) {
4
+ const start = startDir ?? process.cwd();
5
+ let dir = start;
5
6
  const root = resolve("/");
6
7
  while (dir !== root) {
7
8
  if ((await fileExists(join(dir, ".grimoire"))) ||
@@ -10,8 +11,8 @@ export async function findProjectRoot() {
10
11
  }
11
12
  dir = resolve(dir, "..");
12
13
  }
13
- // Fall back to cwd
14
- return process.cwd();
14
+ // Fall back to the starting directory
15
+ return start;
15
16
  }
16
17
  export function resolveChangePath(root, changeId) {
17
18
  if (/[/\\]/.test(changeId) || changeId === ".." || changeId.includes("..")) {
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IACE,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;YAC1C,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACzC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,mBAAmB;IACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAGD,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAgB;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAiB;IACrD,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IACE,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;YAC1C,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACzC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,sCAAsC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAGD,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAgB;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Read all of stdin as a string. Resolves to "" when stdin is a TTY (no piped payload). */
2
+ export declare function readStdin(): Promise<string>;
3
+ //# sourceMappingURL=stdin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../../src/utils/stdin.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,wBAAgB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAS3C"}
@@ -0,0 +1,13 @@
1
+ /** Read all of stdin as a string. Resolves to "" when stdin is a TTY (no piped payload). */
2
+ export function readStdin() {
3
+ return new Promise((resolve) => {
4
+ if (process.stdin.isTTY)
5
+ return resolve("");
6
+ let data = "";
7
+ process.stdin.setEncoding("utf-8");
8
+ process.stdin.on("data", (chunk) => (data += chunk));
9
+ process.stdin.on("end", () => resolve(data));
10
+ process.stdin.on("error", () => resolve(data));
11
+ });
12
+ }
13
+ //# sourceMappingURL=stdin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/utils/stdin.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiwidata/grimoire",
3
- "version": "0.1.6",
3
+ "version": "0.2.1",
4
4
  "description": "Gherkin + MADR spec-driven development for AI coding assistants",
5
5
  "type": "module",
6
6
  "bin": {
@@ -65,7 +65,6 @@
65
65
  "chalk": "^5.5.0",
66
66
  "commander": "^14.0.0",
67
67
  "fast-glob": "^3.3.0",
68
- "gray-matter": "^4.0.3",
69
68
  "simple-git": "^3.33.0",
70
69
  "yaml": "^2.8.0"
71
70
  },
@@ -81,5 +80,10 @@
81
80
  "typescript": "^5.7.0",
82
81
  "vitepress": "^1.6.4",
83
82
  "vitest": "^3.0.0"
83
+ },
84
+ "overrides": {
85
+ "@eslint/eslintrc": {
86
+ "js-yaml": "4.2.0"
87
+ }
84
88
  }
85
89
  }
@@ -230,7 +230,7 @@ Work through `tasks.md` sequentially. **Every task follows the same cycle: test
230
230
  1. Announce which task you're working on
231
231
  - Read the task's `verify:` tag — it decides the test vehicle. `scenario` → write/extend step definitions for the named scenario. `unit-invariant` → write a unit/integration test asserting the constraint. `characterization` → write a unit test pinning current/intended behavior. If a `unit-invariant` task has no matching constraint in `.grimoire/docs/constraints.md`, STOP and flag — don't invent a scenario to fill the gap.
232
232
  - **Pattern brief** (before writing anything): classify code type → `search_graph` for 3–5 peers (excluding last 60 days) → `get_code_snippet` → extract modal pattern across the four critical seams (error handling, dependency access, abstraction depth, return shape) → write a 5–8 rule brief. Skip if graph not indexed or < 3 peers. Full instructions in `../references/pattern-guard.md`.
233
- 2. Write the test FIRST, at the task's level (step definitions for `scenario`; unit/integration test for `unit-invariant`/`characterization`)
233
+ 2. Write the test FIRST, at the task's level (step definitions for `scenario`; unit/integration test for `unit-invariant`/`characterization`). **Generate test data, don't ask for it and don't hand-invent it** — build records through the project's data factory / property-based tool (`../references/testing-contracts.md` §Test Data Generation; detect it from `config.tools` / existing test imports), overriding only the fields this case pins. AI-authored literal data is a last resort, only when the user explicitly asked for it or no factory exists and a specific crafted value is needed — and note why when you do.
234
234
  3. Run the test — **it MUST FAIL (red)**
235
235
  4. If the test passes immediately, STOP. The test is broken — it's not actually testing anything. Fix it so it makes a real assertion that fails without production code. Common causes:
236
236
  - Empty step definition body (passes by default)
@@ -243,7 +243,8 @@ Work through `tasks.md` sequentially. **Every task follows the same cycle: test
243
243
  - **Names reveal intent.** No `data` / `result` / `temp` / `info` / `obj` when a specific name fits. Booleans read as yes/no questions (`is_expired`, `has_admin_role`).
244
244
  - **Branching budget ~7.** If a function has more `if` / `else` / `case` / `&&` than that, split or drop dead guards.
245
245
  - **Function size ~30 lines.** One job per function. If the name needs "and", split.
246
- - **No premature abstraction.** Three near-identical copies is fine. No new `BaseX` / factory / strategy / config object for a single caller.
246
+ - **No premature abstraction (YAGNI).** Three near-identical copies is fine. No new `BaseX` / factory / strategy / config object for a single caller.
247
+ - **Guardrails — the floor YAGNI never cuts below.** Simplicity stops at safety. Never drop, in the name of less code: input validation at a trust boundary, error handling that prevents data loss, a security control (authn/authz, output escaping, secret handling — see `../references/security-compliance.md`), an accessibility basic, or anything the task explicitly requested. Edge validation (above) is *required* code, not defensive slop — the trust-your-callers rule governs the interior only. Non-trivial logic (a branch, loop, parser, money/security path) leaves one runnable check behind (`../references/testing-contracts.md`); a lazy version without its check is unfinished, not done.
247
248
  - **Comments: terse, self-contained, no essays** (`../references/code-quality.md` §7). Default to none; add only a one-line non-obvious *why*. Terse voice — drop "this function", filler, restated types. **Self-contained:** never name an external artifact that moves independently — no feature/scenario/`.feature`, MADR/ADR number, change-id, ticket/PR, test name, or tag code (`LOG-OBS-003`) in a comment; describe the behavior, not where it's specced. **No paragraphs:** summary is 1–2 lines, then the `comment_style` params if the project requires them — no prose block before them. No comments restating the code (`# loop over users`). If removing it wouldn't confuse a future reader, don't write it.
248
249
  6. Run the step definitions again — they should PASS (green)
249
250
  7. If still red, fix the production code (not the test)
@@ -289,7 +290,7 @@ When all tests are green. Features, decisions, and constraints were edited live
289
290
  2. Constraints (`.grimoire/docs/constraints.md`) were edited in place — nothing to move.
290
291
  3. If the change has a `data.yml` (schema delta), apply its `add`/`modify`/`remove` entries to the live `.grimoire/docs/data/schema.yml` so the baseline schema stays current. `data.yml` is a migration-delta spec (ephemeral scaffolding carrying nullability/safety/ordering intent a raw diff wouldn't), not a copy of the schema — `schema.yml` is the live target; the delta is discarded with the change folder.
291
292
  4. Refresh the project overview: run `grimoire docs`. It regenerates `.grimoire/docs/OVERVIEW.md` (the human entry point) from the now-current features, constraints, decisions, and schema — superseded decisions drop out automatically. This is the existing `docs` command, not a new one.
292
- 5. Remove the change directory `.grimoire/changes/<change-id>/`. Its `manifest.md` + `tasks.md` (+ any `data.yml`) are ephemeral process scaffolding. The durable record is the branch, the PR, and `git log` — linked by the `Change: <change-id>` trailer. **There is no archive tree** (don't reinvent git history).
293
+ 5. Remove the change directory `.grimoire/changes/<change-id>/`. Its `manifest.md` + `tasks.md` (+ any `data.yml`) and the `draft.md` design doc are ephemeral process scaffolding. `draft.md` was retained read-only through the pipeline as the agreed-design reference; this is its closing deletion. The durable record is the branch, the PR, and `git log` — linked by the `Change: <change-id>` trailer; git history still preserves `draft.md` if ever needed. **There is no archive tree** (don't reinvent git history).
293
294
 
294
295
  ### 8. Commit
295
296