ace-docs 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/.ace-defaults/docs/config.yml +169 -0
  3. data/.ace-defaults/docs/multi-subject-example.md +130 -0
  4. data/.ace-defaults/docs/single-subject-example.md +150 -0
  5. data/.ace-defaults/nav/protocols/guide-sources/ace-docs.yml +10 -0
  6. data/.ace-defaults/nav/protocols/prompt-sources/ace-docs.yml +34 -0
  7. data/.ace-defaults/nav/protocols/tmpl-sources/ace-docs.yml +10 -0
  8. data/.ace-defaults/nav/protocols/wfi-sources/ace-docs.yml +19 -0
  9. data/CHANGELOG.md +1082 -0
  10. data/LICENSE +21 -0
  11. data/README.md +40 -0
  12. data/Rakefile +14 -0
  13. data/exe/ace-docs +14 -0
  14. data/handbook/guides/documentation/ruby.md +16 -0
  15. data/handbook/guides/documentation/rust.md +35 -0
  16. data/handbook/guides/documentation/typescript.md +18 -0
  17. data/handbook/guides/documentation.g.md +437 -0
  18. data/handbook/guides/documents-embedded-sync.g.md +473 -0
  19. data/handbook/guides/documents-embedding.g.md +276 -0
  20. data/handbook/guides/markdown-style.g.md +290 -0
  21. data/handbook/prompts/ace-change-analyzer.system.md +113 -0
  22. data/handbook/prompts/ace-change-analyzer.user.md +95 -0
  23. data/handbook/prompts/document-analysis.md +74 -0
  24. data/handbook/prompts/document-analysis.system.md +129 -0
  25. data/handbook/prompts/markdown-style.system.md +113 -0
  26. data/handbook/skills/as-docs-create-adr/SKILL.md +35 -0
  27. data/handbook/skills/as-docs-create-api/SKILL.md +35 -0
  28. data/handbook/skills/as-docs-create-user/SKILL.md +35 -0
  29. data/handbook/skills/as-docs-maintain-adrs/SKILL.md +35 -0
  30. data/handbook/skills/as-docs-squash-changelog/SKILL.md +42 -0
  31. data/handbook/skills/as-docs-update/SKILL.md +36 -0
  32. data/handbook/skills/as-docs-update-blueprint/SKILL.md +28 -0
  33. data/handbook/skills/as-docs-update-roadmap/SKILL.md +24 -0
  34. data/handbook/skills/as-docs-update-tools/SKILL.md +36 -0
  35. data/handbook/skills/as-docs-update-usage/SKILL.md +26 -0
  36. data/handbook/templates/code-docs/javascript-jsdoc.template.md +102 -0
  37. data/handbook/templates/code-docs/ruby-yard.template.md +85 -0
  38. data/handbook/templates/project-docs/README.template.md +73 -0
  39. data/handbook/templates/project-docs/architecture.template.md +300 -0
  40. data/handbook/templates/project-docs/blueprint.template.md +165 -0
  41. data/handbook/templates/project-docs/context/ownership.yml +160 -0
  42. data/handbook/templates/project-docs/decisions/adr.template.md +60 -0
  43. data/handbook/templates/project-docs/prd.template.md +144 -0
  44. data/handbook/templates/project-docs/roadmap/roadmap.template.md +47 -0
  45. data/handbook/templates/project-docs/vision.template.md +233 -0
  46. data/handbook/templates/user-docs/user-guide.template.md +107 -0
  47. data/handbook/workflow-instructions/docs/create-adr.wf.md +334 -0
  48. data/handbook/workflow-instructions/docs/create-api.wf.md +448 -0
  49. data/handbook/workflow-instructions/docs/create-cookbook.wf.md +434 -0
  50. data/handbook/workflow-instructions/docs/create-user.wf.md +399 -0
  51. data/handbook/workflow-instructions/docs/maintain-adrs.wf.md +589 -0
  52. data/handbook/workflow-instructions/docs/squash-changelog.wf.md +246 -0
  53. data/handbook/workflow-instructions/docs/update-blueprint.wf.md +361 -0
  54. data/handbook/workflow-instructions/docs/update-context.wf.md +336 -0
  55. data/handbook/workflow-instructions/docs/update-roadmap.wf.md +421 -0
  56. data/handbook/workflow-instructions/docs/update-tools.wf.md +307 -0
  57. data/handbook/workflow-instructions/docs/update-usage.wf.md +710 -0
  58. data/handbook/workflow-instructions/docs/update.wf.md +418 -0
  59. data/lib/ace/docs/atoms/diff_filterer.rb +131 -0
  60. data/lib/ace/docs/atoms/frontmatter_free_matcher.rb +20 -0
  61. data/lib/ace/docs/atoms/git_date_resolver.rb +16 -0
  62. data/lib/ace/docs/atoms/readme_metadata_inferrer.rb +60 -0
  63. data/lib/ace/docs/atoms/terminology_extractor.rb +308 -0
  64. data/lib/ace/docs/atoms/time_range_calculator.rb +96 -0
  65. data/lib/ace/docs/atoms/timestamp_parser.rb +106 -0
  66. data/lib/ace/docs/atoms/type_inferrer.rb +70 -0
  67. data/lib/ace/docs/cli/commands/analyze.rb +351 -0
  68. data/lib/ace/docs/cli/commands/analyze_consistency.rb +185 -0
  69. data/lib/ace/docs/cli/commands/discover.rb +75 -0
  70. data/lib/ace/docs/cli/commands/scope_options.rb +71 -0
  71. data/lib/ace/docs/cli/commands/status.rb +241 -0
  72. data/lib/ace/docs/cli/commands/update.rb +198 -0
  73. data/lib/ace/docs/cli/commands/validate.rb +225 -0
  74. data/lib/ace/docs/cli.rb +60 -0
  75. data/lib/ace/docs/models/analysis_report.rb +120 -0
  76. data/lib/ace/docs/models/consistency_report.rb +259 -0
  77. data/lib/ace/docs/models/document.rb +354 -0
  78. data/lib/ace/docs/molecules/change_detector.rb +389 -0
  79. data/lib/ace/docs/molecules/document_loader.rb +133 -0
  80. data/lib/ace/docs/molecules/frontmatter_manager.rb +85 -0
  81. data/lib/ace/docs/molecules/git_date_resolver.rb +30 -0
  82. data/lib/ace/docs/organisms/cross_document_analyzer.rb +274 -0
  83. data/lib/ace/docs/organisms/document_registry.rb +318 -0
  84. data/lib/ace/docs/organisms/validator.rb +164 -0
  85. data/lib/ace/docs/prompts/compact_diff_prompt.rb +119 -0
  86. data/lib/ace/docs/prompts/consistency_prompt.rb +286 -0
  87. data/lib/ace/docs/prompts/document_analysis_prompt.rb +389 -0
  88. data/lib/ace/docs/version.rb +7 -0
  89. data/lib/ace/docs.rb +82 -0
  90. data/lib/test.rb +4 -0
  91. metadata +347 -0
data/CHANGELOG.md ADDED
@@ -0,0 +1,1082 @@
1
+ # Changelog
2
+
3
+ All notable changes to ace-docs will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.31.0] - 2026-03-23
11
+
12
+ ### Changed
13
+ - Sharpened README "How It Works" steps with bold labels and inline command names matching the current package layout pattern.
14
+ - Removed negative claim about non-existent `diff` command from usage guide.
15
+ - Normalized frontmatter date quoting in usage guide for consistency.
16
+
17
+ ## [0.30.3] - 2026-03-23
18
+
19
+ ### Added
20
+ - Classify root README as `root_readme` doc-type, separate from package READMEs.
21
+ - Add timeout guard around `ace-nav resolve` subprocess in `DocumentAnalysisPrompt`.
22
+
23
+ ### Changed
24
+ - Update docs config defaults and project override for `root_readme` classification.
25
+ - Refresh documentation guide to reflect `root_readme` handling.
26
+
27
+ ## [0.30.2] - 2026-03-23
28
+
29
+ ### Fixed
30
+ - Aligned README handling to the dedicated `readme` doc type by updating README inference and frontmatter-free README metadata inference from `user` to `readme`.
31
+ - Fixed document analysis type reference resolution to call `ace-nav resolve` so template/guide protocol URLs are resolved correctly.
32
+
33
+ ### Changed
34
+ - Narrowed `readme` path matching to package-level `*/README.md` so the repository root README is not treated as a package README.
35
+
36
+ ## [0.30.1] - 2026-03-23
37
+
38
+ ### Changed
39
+ - Refreshed `README.md` to the current package layout pattern with quick-link navigation, use-case framing, and standardized section flow.
40
+
41
+ ## [0.30.0] - 2026-03-23
42
+
43
+ ### Added
44
+ - Template and guide references in document type config (`template`, `guide` fields) enabling `ace-docs analyze` to embed the correct template/guide when reviewing a document.
45
+ - New `readme` document type with narrow `README.md`/`*/README.md` paths, split from the broad `user` type to avoid applying the README template to architecture, vision, and blueprint docs.
46
+ - Template/guide verification instructions in the document analysis prompt so the LLM checks documents against their template structure and guide conventions.
47
+
48
+ ### Changed
49
+ - Rewrote `README.template.md` to match the proven ace-task pattern: logo block, pipe-separated nav row above demo, intro paragraph instead of Problem/Solution, Use Cases section with inline `/as-` skill refs and linked CLI commands.
50
+ - Updated documentation guide README section with new structure table, nav row guidance, Use Cases format, skill reference convention, implementation rule, and expanded anti-patterns list.
51
+ - Narrowed `user` document type paths to `*/docs/**/*.md` only (READMEs now use dedicated `readme` type).
52
+
53
+ ## [0.29.3] - 2026-03-22
54
+
55
+ ### Changed
56
+ - Replaced placeholder commands in `docs/demo/ace-docs-getting-started.tape.yml` with real `ace-docs` onboarding workflow commands.
57
+
58
+ ## [0.29.2] - 2026-03-22
59
+
60
+ ### Changed
61
+ - Clarified frontmatter-free documentation contract in `docs/usage.md` to state README-focused metadata inference and removed the non-README example.
62
+
63
+ ## [0.29.1] - 2026-03-22
64
+
65
+ ### Changed
66
+ - Reused shared `Ace::Core::Molecules::FrontmatterFreePolicy` through `FrontmatterFreeMatcher` to align frontmatter-free matching behavior across packages.
67
+ - Moved git-backed README last-updated resolution into molecule layer and injected the resolved date into `ReadmeMetadataInferrer`.
68
+ - Updated `TypeInferrer` precedence so configured `pattern_type` wins before README basename fallback.
69
+ - Narrowed default `frontmatter_free` patterns from `**/README.md` to `README.md` and `*/README.md` to avoid nested fixture/test README auto-discovery.
70
+
71
+ ## [0.29.0] - 2026-03-22
72
+
73
+ ### Added
74
+ - Configurable frontmatter-free document support via `frontmatter_free` config key (default: `**/README.md`).
75
+ - New `FrontmatterFreeMatcher` atom for centralized glob matching of frontmatter-free paths.
76
+ - New `ReadmeMetadataInferrer` atom to infer doc-type, purpose, and title from README file path and content.
77
+ - New `GitDateResolver` atom to resolve `last-updated` from git history with nil-safe fallback.
78
+
79
+ ### Changed
80
+ - `DocumentLoader` now loads frontmatter-free files as managed documents with inferred metadata.
81
+ - `TypeInferrer` infers `user` doc-type for README files without explicit frontmatter.
82
+ - `Update` command skips frontmatter writes for frontmatter-free files with explicit skip message.
83
+ - Removed YAML frontmatter blocks from all package `README.md` files.
84
+
85
+ ## [0.28.0] - 2026-03-22
86
+
87
+ ### Changed
88
+ - Rewrote `README.md` into a value-first landing page and split reference material into dedicated `docs/getting-started.md`, `docs/usage.md`, and `docs/handbook.md` documents.
89
+ - Added demo artifacts under `docs/demo/` (`ace-docs-getting-started.tape` and `ace-docs-getting-started.gif`) and aligned gemspec summary/description messaging with the new landing-page tagline.
90
+
91
+ ## [0.27.1] - 2026-03-21
92
+
93
+ ### Fixed
94
+ - Restored `Document#last_checked` compatibility with current frontmatter writes by reading `ace-docs.last-checked` before falling back to the legacy `update.last-checked` field.
95
+
96
+ ## [0.27.0] - 2026-03-20
97
+
98
+ ### Changed
99
+ - Expanded `TS-DOCS-001` E2E coverage with a new `TC-004` update-command goal and tightened discover/validate/status runner/verifier evidence contracts.
100
+
101
+ ## [0.26.1] - 2026-03-18
102
+
103
+ ### Changed
104
+ - Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
105
+
106
+
107
+ ## [0.26.0] - 2026-03-18
108
+
109
+ ### Changed
110
+ - Removed legacy backward-compatibility behavior as part of the 0.10 cleanup release.
111
+
112
+
113
+ ## [0.25.6] - 2026-03-17
114
+
115
+ ### Fixed
116
+ - Updated CLI routing tests to match current `ace-support-cli` help rendering and avoid false regressions.
117
+
118
+ ## [0.25.5] - 2026-03-15
119
+
120
+ ### Changed
121
+ - Migrated CLI framework from dry-cli to ace-support-cli
122
+
123
+ ## [0.25.4] - 2026-03-13
124
+
125
+ ### Technical
126
+ - Updated canonical docs skills to align with shared workflow execution standards.
127
+
128
+ ## [0.25.3] - 2026-03-13
129
+
130
+ ### Changed
131
+ - Updated canonical docs skills to explicitly run bundled workflows in the current project and execute them end-to-end.
132
+
133
+ ## [0.25.2] - 2026-03-13
134
+
135
+ ### Changed
136
+ - Removed the Codex-specific delegated execution metadata from the canonical `as-docs-squash-changelog` skill so provider projections now inherit the canonical skill body unchanged.
137
+
138
+ ## [0.25.1] - 2026-03-12
139
+
140
+ ### Changed
141
+ - Updated documentation guides and README examples to use current gem-scoped handbook paths and bundle-first workflow references.
142
+
143
+ ## [0.25.0] - 2026-03-12
144
+
145
+ ### Added
146
+ - Added Codex-specific delegated execution metadata to the canonical `as-docs-squash-changelog` skill so the generated Codex skill runs in fork context on `gpt-5.3-codex-spark`.
147
+
148
+ ## [0.24.1] - 2026-03-12
149
+
150
+ ### Fixed
151
+ - Updated shipped prompt-source override guidance to use `.ace-handbook` and `~/.ace-handbook` instead of the old `.ace/handbook` locations.
152
+
153
+ ## [0.24.0] - 2026-03-10
154
+
155
+ ### Added
156
+ - Added canonical handbook-owned documentation skills for ADR, API, user-doc, update, and changelog maintenance workflows.
157
+
158
+
159
+ ## [0.23.0] - 2026-03-08
160
+
161
+ ### Added
162
+ - Added repeatable document scope options across core doc-selection commands:
163
+ - `--package <ace-package>` for package-root scoping
164
+ - `--glob <pattern>` for explicit glob scoping, including bare-path normalization (for example, `--glob ace-assign` -> `ace-assign/**/*.md`)
165
+
166
+ ### Changed
167
+ - Scoped selection is now applied during registry discovery, reducing out-of-scope traversal for status/discover/update/validate/analyze-consistency command flows.
168
+ - Updated docs/update workflow guidance and user-facing usage examples to include package/glob scoped operations.
169
+
170
+ ### Technical
171
+ - Added command/integration/registry regression coverage for scope normalization and scoped selection behavior.
172
+ - Suppressed expected loader noise for markdown files without frontmatter (`No frontmatter found`) to keep scoped command output readable.
173
+
174
+ ## [0.22.4] - 2026-03-04
175
+
176
+ ### Changed
177
+ - Default docs cache directory now uses `.ace-local/docs`.
178
+
179
+
180
+ ## [0.22.3] - 2026-03-04
181
+
182
+ ### Fixed
183
+ - `docs/update.wf.md` workflow instruction corrected to short-name path convention (`.ace-local/docs/` not `.ace-local/ace-docs/`)
184
+
185
+ ## [0.22.2] - 2026-03-04
186
+
187
+ ### Fixed
188
+ - Usage docs corrected to short-name convention (`.ace-local/docs/` not `.ace-local/ace-docs/`)
189
+
190
+ ## [0.22.1] - 2026-03-04
191
+
192
+ ### Fixed
193
+ - README `cache_dir` example corrected to short-name convention (`.ace-local/docs` not `.ace-local/ace-docs`)
194
+
195
+ ## [0.22.0] - 2026-03-04
196
+
197
+ ### Changed
198
+ - Default cache directories migrated from `.cache/ace-docs` to `.ace-local/docs`
199
+
200
+ ## [0.21.1] - 2026-02-23
201
+
202
+ ### Technical
203
+ - Updated internal dependency version constraints to current releases
204
+
205
+ ## [0.21.0] - 2026-02-22
206
+
207
+ ### Added
208
+ - Standard help pattern with `HELP_EXAMPLES` constant and formatted help output
209
+ - No-args behavior now shows help (consistent with other ace-* CLIs)
210
+
211
+ ### Changed
212
+ - Migrate from DWIM DefaultRouting to standard dry-cli help pattern
213
+ - Remove `KNOWN_COMMANDS`, `BUILTIN_COMMANDS`, `DEFAULT_COMMAND` constants
214
+ - CLI invocation now uses `Dry::CLI.new().call()` pattern
215
+
216
+ ## [0.20.3] - 2026-02-22
217
+
218
+ ### Technical
219
+ - Update `ace-bundle project` → `ace-bundle load project` in markdown-style guide
220
+
221
+ ## [0.20.1] - 2026-02-19
222
+
223
+ ### Technical
224
+ - Namespace workflow instructions into docs/ subdirectory with updated wfi:// URIs
225
+ - Migrate update-usage and update-roadmap workflows from ace-taskflow
226
+
227
+ ## [0.20.0] - 2026-02-13
228
+
229
+ ### Added
230
+ - Squash-changelog workflow instruction for consolidating multiple CHANGELOG.md entries on feature branches before merge
231
+
232
+ ## [0.19.2] - 2026-02-12
233
+
234
+ ### Fixed
235
+ - Anchor ignore patterns to project root in `DocumentRegistry` to prevent matching system paths (e.g., `/tmp/` no longer matches project ignore rule `**/tmp/**`)
236
+ - `glob_to_regex` now anchors converted patterns to `@project_root`, distinguishing `**/` (anywhere under project) from bare patterns (at project root)
237
+
238
+ ## [0.19.1] - 2026-01-31
239
+
240
+ ### Technical
241
+ - Stub ace-nav subprocess calls in document_analysis_prompt tests (3.4s → 0.7s, 80% faster)
242
+
243
+ ## [0.19.0] - 2026-01-22
244
+
245
+ ### Changed
246
+ - Move embedded-testing-guide to ace-test package
247
+ - Guide now available via ace-test package
248
+
249
+ ## [0.18.1] - 2026-01-16
250
+
251
+ ### Changed
252
+ - Rename context: to bundle: keys in configuration files
253
+
254
+ ## [0.18.0] - 2025-01-14
255
+
256
+ ### Added
257
+ - Migrate CLI commands to Hanami pattern (task 213)
258
+ - Move all command logic into `CLI::Commands::*` namespace under `cli/commands/` directory
259
+ - Remove separate `Commands::` wrapper classes - business logic now integrated into CLI commands
260
+ - Update command file naming to match class names (remove `_command` suffix)
261
+ - Delete legacy `commands/` directory
262
+ - Full implementation for all 6 commands: analyze, analyze_consistency, discover, status, update, validate
263
+
264
+ ### Changed
265
+ - Consolidate CLI structure following Hanami/dry-cli authoritative pattern
266
+ - Use `CLI::Commands::*` namespace throughout
267
+ - Clean up require paths for proper module resolution
268
+
269
+ ### Technical
270
+ - Remove obsolete unit tests for deleted `Commands::*` classes
271
+ - Remove obsolete integration test for `StatusCommand`
272
+
273
+
274
+ ## [0.17.2] - 2026-01-10
275
+
276
+ ### Changed
277
+ - Use shared `Ace::Core::CLI::DryCli::DefaultRouting` module for CLI routing
278
+ - Removed duplicate routing code in favor of shared implementation
279
+ - Maintains same behavior with less code duplication
280
+
281
+ ## [0.17.1] - 2026-01-10
282
+
283
+ ### Fixed
284
+ - Fix CLI default command routing to properly handle flags
285
+ - Added complete default routing infrastructure with REGISTERED_COMMANDS, BUILTIN_COMMANDS, KNOWN_COMMANDS, DEFAULT_COMMAND constants
286
+ - Added `known_command?` helper method for routing logic
287
+ - Flags now correctly route to default `status` command
288
+ - Built-in flags (`--help`, `--version`) continue working via KNOWN_COMMANDS
289
+
290
+ ## [0.17.0] - 2026-01-07
291
+
292
+ ### Changed
293
+ - **BREAKING**: Migrated CLI framework from Thor to dry-cli (task 179.10)
294
+ - Replaced `thor` dependency with `dry-cli ~> 1.0`
295
+ - Created dry-cli command classes (analyze, analyze_consistency, discover, status, update, validate)
296
+
297
+ ## [0.16.0] - 2026-01-07
298
+
299
+ ### Changed
300
+ - **BREAKING**: Session and analysis filenames changed from 14-character timestamps to 6-character Base36 compact IDs
301
+ - Session directories: `analyze-20251129-143000` → `analyze-i50jj3`
302
+ - Analysis reports: `analysis-20251129-143000.md` → `analysis-i50jj3.md`
303
+ - Migrate to Base36 compact IDs for session and file naming (via ace-timestamp)
304
+
305
+ ### Added
306
+ - Dependency on ace-timestamp for compact ID generation
307
+
308
+ ## [0.15.0] - 2026-01-05
309
+
310
+ ### Added
311
+ - Thor CLI migration with standardized command structure
312
+ - ConfigSummary display for effective configuration with sensitive key filtering
313
+ - Comprehensive CLI help documentation across all commands
314
+
315
+ ### Changed
316
+ - Adopted Ace::Core::CLI::Base for standardized options (--quiet, --verbose, --debug)
317
+ - Migrated from OptionParser to Thor framework
318
+ - Added method_missing for default subcommand support
319
+
320
+ ## [0.14.1] - 2026-01-03
321
+
322
+ ### Changed
323
+
324
+ - Migrated 7 workflow instructions from `ace-nav wfi://` to `ace-bundle wfi://` for consistency
325
+ - Updated workflows: create-adr, create-api-docs, create-cookbook, create-user-docs, maintain-adrs, update-blueprint, update-context-docs
326
+
327
+ ## [0.14.0] - 2026-01-03
328
+
329
+ ### Changed
330
+ - **BREAKING**: Minimum Ruby version raised to 3.3.0 (was 3.1.0)
331
+ - Standardized gemspec file patterns with deterministic Dir.glob
332
+ - Added MIT LICENSE file
333
+
334
+ ## [0.13.3] - 2026-01-03
335
+
336
+ ### Fixed
337
+
338
+ - Mock correct git operations in ChangeDetector tests - stub `DiffOrchestrator.generate` instead of `execute_git_command` to avoid real git I/O (89% test performance improvement: 14s → 1.5s)
339
+
340
+ ### Technical
341
+
342
+ - Extract `with_empty_git_diff` test helper to reduce duplication (6 instances)
343
+ - Add benchmark command and Lessons Learned section to task documentation
344
+
345
+ ## [0.13.2] - 2026-01-01
346
+
347
+ ### Fixed
348
+
349
+ - Restore historical freshness thresholds for monthly documents (30/45 days instead of 14/30)
350
+ - Add frequency-specific threshold configuration in `.ace-defaults/docs/config.yml`
351
+ - Migrate DocumentRegistry to use ace-config cascade for configuration loading
352
+
353
+ ## [0.13.1] - 2025-12-30
354
+
355
+ ### Changed
356
+
357
+ - Add ace-config dependency for configuration cascade management
358
+ - Migrate from Ace::Core to Ace::Config.create() API
359
+ - Migrate from `resolve_for` to `resolve_namespace` for cleaner config loading
360
+
361
+ ## [0.13.0] - 2025-12-30
362
+
363
+ ### Changed
364
+
365
+ * Rename `.ace.example/` to `.ace-defaults/` for gem defaults directory
366
+
367
+ ## [0.12.0] - 2025-12-29
368
+
369
+ ### Changed
370
+ - Migrate ProjectRootFinder dependency from `Ace::Core::Molecules` to `Ace::Support::Fs::Molecules` for direct ace-support-fs usage
371
+
372
+ ## [0.11.0] - 2025-12-28
373
+
374
+ ### Added
375
+ - **ADR-022 Configuration Pattern**: Migrate to gem defaults from `.ace.example/` with user override support
376
+ - Load defaults from `.ace.example/docs/config.yml` at runtime
377
+ - Deep merge with user config via ace-core cascade
378
+ - Follows "gem defaults < user config" priority
379
+
380
+ ### Changed
381
+ - **Dependency Migration**: Migrated from `ace-git-diff` to `ace-git` for unified git operations
382
+
383
+ ## [0.10.1] - 2025-12-27
384
+
385
+ ### Fixed
386
+
387
+ - **CLI Option Mapping Regression**: Fixed `--exclude-renames`/`--exclude-moves` flags being silently ignored
388
+ - AnalyzeCommand.build_diff_options was emitting legacy `include_*` keys instead of new `exclude_*` keys
389
+ - CLI flags now correctly propagate to ace-git DiffOrchestrator
390
+
391
+ ### Changed
392
+
393
+ - **Deprecation Warning for Legacy Option Keys**: Added warning when using `include_renames`/`include_moves`
394
+ - Callers should migrate to `exclude_renames`/`exclude_moves` keys
395
+ - Warning: `[DEPRECATED] Use exclude_renames/exclude_moves instead of include_renames/include_moves`
396
+
397
+ - **Centralized Option Construction**: Extracted `build_diff_options` helper method in ChangeDetector
398
+ - Centralizes ace-git option mapping logic
399
+ - Improves maintainability and reduces duplication
400
+
401
+ ### Technical
402
+
403
+ - Added 5 command-level tests for CLI option propagation (analyze_command_test.rb)
404
+ - Added 3 tests for legacy option key deprecation warnings
405
+ - Updated test using legacy `include_renames` key to use new `exclude_renames` key
406
+
407
+ ## [0.10.0] - 2025-12-27
408
+
409
+ ### Changed
410
+
411
+ - **Dependency Migration**: Migrated from ace-git-diff to ace-git
412
+ - Updated dependency from `ace-git-diff (~> 0.1)` to `ace-git (~> 0.3)`
413
+ - Changed `require "ace/git_diff"` to `require "ace/git"`
414
+ - Updated namespace from `Ace::GitDiff::*` to `Ace::Git::*`
415
+ - Part of ace-git consolidation (ace-git-diff merged into ace-git)
416
+
417
+ ### Fixed
418
+
419
+ - **Option Mapping for ace-git API**: Fixed incorrect option names passed to DiffOrchestrator
420
+ - Changed `detect_moves` (invalid) to `exclude_moves` (ace-git API)
421
+ - Fixed `exclude_renames` default to `false` (was inverting caller intent when nil)
422
+ - Renames and moves are now correctly included by default
423
+
424
+ - **Test Isolation**: Fixed DocumentRegistry and StatusCommand test failures caused by ProjectRootFinder discovering actual project files
425
+ - Added `project_root` parameter to DocumentRegistry.new and StatusCommand.new for test isolation
426
+ - DocumentRegistry tests now pass `project_root: @temp_dir` to ensure isolation
427
+ - StatusCommand integration tests now pass `project_root: @temp_dir` to ensure isolation
428
+ - All 15 document_registry tests now pass (was 13 failures, 1 error)
429
+ - All 5 status_command_integration tests now pass (was 5 failures)
430
+ - Root cause: Tests were discovering real ace-docs handbook files instead of temp directory files
431
+
432
+ - **Test Correctness**: Fixed DocumentAnalysisPromptTest assertions to match actual output format
433
+ - Multi-subject scope section uses backtick-wrapped subject names (e.g., "`code`:" not "code:")
434
+ - Fixed tests to properly create Document instances instead of using instance_variable_set
435
+ - All 7 prompt tests now pass (was 3 failures)
436
+ - Root cause: Tests were modifying @frontmatter without updating @ace_docs_config
437
+
438
+ ### Technical
439
+
440
+ - Integrated standardized prompt caching system from ace-support-core
441
+ - Added 5 tests for ace-git option mapping (exclude_renames, exclude_moves, paths)
442
+
443
+ ## [0.9.0] - 2025-11-16
444
+
445
+ ### Changed
446
+
447
+ - **Standardized Prompt Cache Management**: Migrated to use PromptCacheManager from ace-support-core
448
+ - Cache location now: `.cache/ace-docs/sessions/analyze-consistency-{timestamp}/`
449
+ - System prompt file: `prompt-system.md` → `system.prompt.md`
450
+ - User prompt file: `prompt-user.md` → `user.prompt.md`
451
+ - Uses ProjectRootFinder for git worktree support (via PromptCacheManager)
452
+ - Consistent with ace-review and future ace-* gems
453
+ - **BREAKING**: Old cache file names no longer used (cache files are session-specific, not persistent)
454
+
455
+ ### Dependencies
456
+
457
+ - Updated ace-support-core to `~> 0.11` (requires PromptCacheManager)
458
+
459
+ ## [0.8.0] - 2025-11-15
460
+
461
+ ### BREAKING CHANGE: ISO 8601 UTC Timestamp Format
462
+
463
+ - **Migrated timestamp format to ISO 8601 UTC standard**
464
+ - New format: `YYYY-MM-DDTHH:MM:SSZ` (e.g., `2025-11-15T08:30:45Z`)
465
+ - `"now"` special value now generates ISO 8601 UTC format (was local time)
466
+ - All timestamps are stored and displayed in UTC
467
+ - Aligns with industry standards (GitHub API, Git commits, ISO 8601)
468
+ - Eliminates timezone ambiguity and DST issues
469
+
470
+ ### Added
471
+
472
+ - **ISO 8601 UTC Timestamp Support**: Industry-standard timestamp format
473
+ - Format: `YYYY-MM-DDTHH:MM:SSZ` with explicit UTC timezone
474
+ - Unambiguous - `Z` suffix means UTC
475
+ - Universal - Same timestamp for all users globally
476
+ - Sortable - Lexicographic sorting works correctly
477
+ - Parse-able - Standard format works with all datetime libraries
478
+ - Special value `"now"` generates current UTC time
479
+ - Special value `"today"` continues to generate date-only format
480
+
481
+ - **TimestampParser Atom**: Enhanced with ISO 8601 support
482
+ - Parses ISO 8601 UTC strings → Time objects (UTC)
483
+ - Parses date-only strings → Date objects
484
+ - Parses legacy datetime strings → Time objects (converted to UTC)
485
+ - Validates all three formats with regex patterns
486
+ - Comprehensive error handling with migration guidance
487
+
488
+ - **Command-Level Tests**: New test coverage for CLI commands
489
+ - `StatusCommand` tests for Date/Time polymorphic handling
490
+ - Tests prevent regression bugs in CLI layer
491
+ - Validates proper ISO 8601 display in UI
492
+
493
+ ### Enhanced
494
+
495
+ - **FrontmatterManager**: Generates ISO 8601 UTC timestamps
496
+ - `"now"` generates ISO 8601 UTC format
497
+ - `"today"` generates date-only format
498
+ - Converts legacy format to ISO 8601 automatically
499
+
500
+ - **Document Model**: UTC timezone handling
501
+ - All Time objects converted to UTC
502
+ - Maintains polymorphic return types (Date/Time)
503
+ - Proper comparison and calculation with UTC times
504
+
505
+ - **StatusCommand**: Fixed crash and improved display
506
+ - Fixed TypeError crash when handling Time objects
507
+ - Displays full ISO 8601 timestamp for Time objects
508
+ - Displays date-only for Date objects
509
+ - No information loss - time component always visible
510
+
511
+ ### Backward Compatibility
512
+
513
+ - **Legacy format fully supported**: `YYYY-MM-DD HH:MM` format still parsed
514
+ - Interpreted as local time, converted to UTC internally
515
+ - Will be deprecated in future major version
516
+ - Provides clear migration path
517
+
518
+ ### Documentation
519
+
520
+ - Updated README.md with ISO 8601 examples and format details
521
+ - Added comprehensive timestamp format reference
522
+ - Documented benefits of ISO 8601 UTC format
523
+ - Provided migration guide from legacy format
524
+ - Updated all examples to use ISO 8601
525
+
526
+ ### Testing
527
+
528
+ - Added 85+ new tests with 200+ assertions for ISO 8601
529
+ - ISO 8601 parsing and formatting tests
530
+ - UTC conversion accuracy tests
531
+ - Backward compatibility tests
532
+ - Command-level integration tests
533
+ - Edge case tests (year boundaries, leap seconds awareness)
534
+ - Edge case tests for year boundaries, month boundaries, leap years
535
+ - Integration tests for frontmatter preservation
536
+ - All tests passing with no regressions
537
+
538
+ ## [0.7.0] - 2025-11-12
539
+
540
+ ### Added
541
+
542
+ - **Workflow Migration**: Migrated 5 documentation generation workflows from dev-handbook
543
+ - `create-api-docs.wf.md` - Generate API documentation from code structure
544
+ - `create-user-docs.wf.md` - Create user-facing guides and tutorials
545
+ - `update-blueprint.wf.md` - Maintain architectural documentation
546
+ - `update-context-docs.wf.md` - Update project context documentation
547
+ - `create-cookbook.wf.md` - Generate practical how-to guides
548
+ - Consolidates all documentation workflows in ace-docs gem
549
+ - Workflows accessible via `ace-nav wfi://workflow-name` protocol
550
+
551
+ ### Changed
552
+
553
+ - **Path Modernization**: Updated all workflow references to use protocol-based paths
554
+ - Replaced hardcoded `dev-handbook/workflow-instructions/load-project-context.wf.md` with `ace-nav wfi://load-context`
555
+ - Updated existing workflows (create-adr, maintain-adrs) for consistency
556
+ - All workflows now project-agnostic without hardcoded legacy paths
557
+
558
+ ### Fixed
559
+
560
+ - **Frontmatter Corruption**: Restored proper YAML frontmatter in create-adr and maintain-adrs workflows
561
+ - Fixed ace-lint formatting issue that collapsed multi-line YAML
562
+
563
+ ## [0.6.2] - 2025-11-01
564
+
565
+ ### Changed
566
+
567
+ - **Dependency Migration**: Updated to use renamed infrastructure gems
568
+ - Changed dependency from `ace-core` to `ace-support-core`
569
+ - Part of ecosystem-wide naming convention alignment for infrastructure gems
570
+
571
+
572
+ ## [0.6.1] - 2025-10-24
573
+
574
+ ### Technical
575
+ - Standardize diff/diffs API documentation to ace-git-diff format
576
+ - Update usage documentation to use `paths:` instead of `filters:` for consistency
577
+ - Update workflow instructions with standardized diff format
578
+
579
+ ## [0.6.0] - 2025-10-23
580
+
581
+ ### Changed
582
+ - Integrated with ace-git-diff for unified diff operations
583
+ - ChangeDetector now delegates generate_git_diff() to ace-git-diff
584
+ - Added ace-git-diff (~> 0.1.0) as runtime dependency
585
+ - Example configs updated with diff filtering notes
586
+
587
+ ### Fixed
588
+ - Updated test mocks to work with ace-git-diff DiffResult objects
589
+ - All ChangeDetector tests passing (17 tests, 66 assertions)
590
+
591
+ ## [0.5.3] - 2025-10-23
592
+
593
+ ### Fixed
594
+
595
+ - **Configuration reading**: Now properly respects config file settings
596
+ - Reads `llm.model` from config.yml in addition to `llm_model`
597
+ - Configuration cascade now works correctly with nested config values
598
+ - Model selection respects user configuration instead of ignoring it
599
+ - **Performance dramatically improved**: Changed default model from gflash to glite
600
+ - Reduced analysis time from 2m28s to ~4-10s for typical document sets
601
+ - Default model changed to "glite" for better performance
602
+ - Still allows override via --model CLI option
603
+ - **Output handling**: Only displays report path, not content
604
+ - Returns report file path instead of content from execute_llm_query
605
+ - Prevents duplicate output to stdout
606
+ - Cleaner command output showing only where report was saved
607
+
608
+ ## [0.5.2] - 2025-10-23
609
+
610
+ ### Fixed
611
+
612
+ - **Simplified analyze-consistency implementation**: Major refactoring for cleaner design
613
+ - Now uses ace-llm's native `output:` option to save report directly as `report.md`
614
+ - Removed redundant report processing and ConsistencyReport parsing
615
+ - Eliminated duplicate file generation (no more separate `llm-response.json` and `report.json`)
616
+ - Report is displayed directly as returned by LLM without reformatting
617
+ - **Fixed cache directory path**: Now uses git root for absolute paths
618
+ - Prevents nested `.cache/ace-docs/.cache/ace-docs/...` directory creation
619
+ - Cache directory is always created from project root regardless of where command is run
620
+ - Consistent path handling across all commands
621
+
622
+ ### Changed
623
+
624
+ - **Cleaner session directory**: Simplified output structure
625
+ - Only saves `report.md` (the actual LLM response)
626
+ - Removed redundant `save_report` and `save_llm_response` methods
627
+ - Less files, clearer purpose
628
+
629
+ ## [0.5.1] - 2025-10-21
630
+
631
+ ### Fixed
632
+
633
+ - **Critical bug in analyze-consistency command**: Fixed LLM response handling
634
+ - Changed from checking non-existent `result[:success]` to using `result[:text]` directly
635
+ - Now uses ace-llm's native `output:` option to save responses immediately
636
+ - Prevents loss of LLM compute when errors occur
637
+ - Response saved to `llm-response.json` before any validation
638
+ - **Removed unnecessary document copying**: Uses real file paths instead of copying to temp files
639
+ - Session directory now only contains metadata and prompts, not document copies
640
+ - ace-bundle loads documents directly from their actual locations
641
+ - Cleaner session directory structure and better path references in analysis
642
+ - **Better error messages**: Shows actual API errors instead of generic "Unknown error"
643
+ - **Added progress indicators**: Shows detailed progress during analysis phases
644
+
645
+ ## [0.5.0] - 2025-10-21
646
+
647
+ ### Added
648
+
649
+ - **Cross-document consistency analysis command** (`analyze-consistency`)
650
+ - Detects terminology conflicts across documents (e.g., "gem" vs "package")
651
+ - Identifies duplicate content with configurable similarity threshold
652
+ - Finds version number inconsistencies
653
+ - Suggests content consolidation opportunities
654
+ - LLM-powered semantic analysis using ace-llm Ruby library
655
+ - Multiple output formats: markdown, json, text
656
+ - Caching support for historical comparison
657
+ - Configurable analysis focus (--terminology, --duplicates, --versions)
658
+ - Strict mode for CI/CD integration (exit code 1 if issues found)
659
+
660
+ ### Fixed
661
+
662
+ - Use ace-llm Ruby library directly instead of subprocess for better performance
663
+ - Test failures and improved test performance
664
+
665
+ ### Technical
666
+
667
+ - New prompts module for consistency analysis
668
+ - New models for consistency report handling
669
+ - New organisms for cross-document analysis orchestration
670
+ - New command implementation for analyze-consistency
671
+ - Updated README with comprehensive examples
672
+ - Added architecture documentation with flow diagrams
673
+
674
+ ## [0.4.7] - 2025-10-20
675
+
676
+ ### Added
677
+
678
+ - **Comprehensive test coverage for multi-subject configuration**
679
+ - Added 4 unit tests for Document model multi-subject parsing
680
+ - Added 5 integration tests for ChangeDetector multi-diff generation
681
+ - Added 7 tests for DocumentAnalysisPrompt multi-subject handling
682
+ - All tests ensure backward compatibility with single-subject format
683
+
684
+ ### Documentation
685
+
686
+ - **Example documents for multi-subject configuration**
687
+ - Created detailed multi-subject example showing code/config/docs separation
688
+ - Created single-subject example with migration guide
689
+ - Both examples include comprehensive usage instructions and best practices
690
+
691
+ ### Technical
692
+
693
+ - Enhanced analyze command and multi-subject support documentation in usage.md
694
+ - Updated README with new analyze command and features documentation
695
+
696
+ ## [0.4.6] - 2025-10-18
697
+
698
+ ### Fixed
699
+
700
+ - **LLM timeout issue in analyze command** - Requests no longer timeout after 60 seconds
701
+ - Added configurable `llm_timeout` setting with default of 300 seconds (5 minutes)
702
+ - Timeout can be customized in `.ace/docs/config.yml`
703
+ - Prevents `Net::ReadTimeout` errors for complex document analyses
704
+ - Example config updated with timeout documentation
705
+
706
+ ### Added
707
+
708
+ - New configuration option `llm_timeout` in seconds (default: 300)
709
+
710
+ ## [0.4.5] - 2025-10-18
711
+
712
+ ### Changed
713
+
714
+ - **Optimized workflow for specific file updates** in update-docs.wf.md
715
+ - Workflow now skips status check when specific files are provided, going directly to analysis
716
+ - Added clear decision logic: specific files → direct analysis, bulk operations → status-first
717
+ - Restructured Quick Start section with two distinct paths (Direct Path vs Status-First)
718
+ - Updated Workflow Steps with conditional flow - Step 1 (Status Check) marked as "Bulk Operations Only"
719
+ - Enhanced Usage Examples with dedicated "Update specific document (Direct Path)" example
720
+ - Improved efficiency for common use case: `/ace:update-docs ace-docs/README.md`
721
+
722
+ ## [0.4.4] - 2025-10-18
723
+
724
+ ### Fixed
725
+
726
+ - Critical shell expansion bug in ChangeDetector causing incorrect glob pattern matching
727
+ - Date resolution to check ace-docs namespace before legacy update namespace
728
+ - Multi-subject handling in build_analysis_scope_section to prevent TypeError
729
+ - Diff file paths now use absolute paths for proper ace-bundle loading
730
+
731
+ ### Changed
732
+
733
+ - Updated workflow instructions (update-docs.wf.md) to use `analyze` instead of deprecated `diff` command
734
+ - Workflow now emphasizes analysis.md as primary output for LLM recommendations
735
+ - Added documentation for multi-subject configuration in workflows
736
+
737
+ ### Added
738
+
739
+ - **Multi-subject configuration support** for categorizing different types of changes
740
+ - Define multiple subjects in document frontmatter (e.g., code, config, docs)
741
+ - Each subject generates its own diff file (code.diff, config.diff, docs.diff)
742
+ - Maintains backward compatibility with single-subject configuration
743
+ - Improved dual-mode analysis prompts for separating code from docs/config changes
744
+
745
+ - New analysis prompts in `handbook/prompts/`:
746
+ - `ace-change-analyzer.system.md` - Dual analysis system prompt (v3.0)
747
+ - `ace-change-analyzer.user.md` - User instructions for dual analysis
748
+
749
+ ### Changed
750
+
751
+ - Document model now supports both single and multi-subject configurations
752
+ - Added `multi_subject?` method to check for multi-subject configuration
753
+ - Added `subject_configurations` method returning structured subject data
754
+ - Single subject returns `{ name: "default", filters: [...] }`
755
+
756
+ - ChangeDetector enhanced for multiple diff generation
757
+ - New `get_diffs_for_subjects` method generates separate diffs per subject
758
+ - Returns hash of `{subject_name => diff_content}` for multi-subject
759
+ - Single subject behavior unchanged for backward compatibility
760
+
761
+ - DocumentAnalysisPrompt updated to handle multiple diff files
762
+ - Accepts either single diff string or hash of diffs
763
+ - Saves each diff with subject name (e.g., "code.diff", "docs.diff")
764
+ - Adds all diff files to context.md files array
765
+
766
+ - AnalyzeCommand improved display for multi-subject
767
+ - Shows configured subjects with their filters
768
+ - Displays diff statistics per subject
769
+ - Clear progress messages for multi-subject processing
770
+
771
+ ### Documentation
772
+
773
+ - Updated README.md with multi-subject configuration examples
774
+ - Added multi-subject example to `.ace.example/docs/config.yml`
775
+ - Example usage in ace-docs README.md frontmatter
776
+
777
+ ## [0.4.3] - 2025-10-18
778
+
779
+ ### Fixed
780
+
781
+ - Save prompts (prompt-system.md, prompt-user.md) before calling LLM instead of after
782
+ - Ensures prompts available for debugging even if LLM call fails
783
+ - Can reproduce exact inputs sent to LLM
784
+ - Matches pattern for context.md and repo-diff.diff (already saved early)
785
+
786
+ ## [0.4.2] - 2025-10-16
787
+
788
+ ### Changed
789
+
790
+ - Refactored `ace-docs analyze` from document-centric to general-purpose change analyzer
791
+ - Removed document embedding and ace-bundle integration from analysis workflow
792
+ - Simplified analysis prompts to focus on diff summarization without doc-update assumptions
793
+ - Updated system prompt to output general change analysis instead of doc recommendations
794
+
795
+ ### Technical
796
+
797
+ - Removed `create_context_markdown` and `load_context_md` methods from DocumentAnalysisPrompt
798
+ - Cleaned up metadata to remove context_saved references
799
+ - Simplified prompt structure for better performance and clarity
800
+
801
+ ## [0.4.1] - 2025-10-16
802
+
803
+ ### Added
804
+
805
+ - **Enhanced System Prompt**: Improved prompt engineering following best practices
806
+ - Added ACE Documentation Diff Analyzer role definition
807
+ - Self-check requirement for unmapped diff hunks
808
+ - Uncertainty handling and guardrails against hallucination
809
+ - Table format for Recommended Updates section
810
+ - Output length constraints (≤ 2 lines per change)
811
+ - Prompt versioning (v1.1 — 2025-10-16)
812
+ - Concrete example showing expected output format
813
+
814
+ - **User Prompt Template**: New documentation file `handbook/prompts/document-analysis.md`
815
+ - Documents prompt structure with examples
816
+ - Explains XML embedding format for context
817
+ - Shows ace-bundle integration patterns
818
+
819
+ - **ace-bundle Integration**: Optional structured context embedding
820
+ - Uses `Ace::Context.load_auto()` with markdown-xml format
821
+ - Embeds document and related files using XML tags (`<file path="...">`)
822
+ - Creates `context.yml` configuration in analyze cache directory
823
+ - Graceful fallback when ace-bundle unavailable (optional dependency)
824
+
825
+ ### Changed
826
+
827
+ - **Cache Structure**: Now includes `context.yml` for full reproducibility
828
+ ```
829
+ .cache/ace-docs/analyze-{timestamp}/
830
+ ├── repo-diff.diff # Filtered raw diff
831
+ ├── context.yml # ace-bundle configuration (NEW)
832
+ ├── prompt-system.md # System prompt used
833
+ ├── prompt-user.md # User prompt with embedded context
834
+ ├── analysis.md # LLM analysis
835
+ └── metadata.yml # Session info + context config reference
836
+ ```
837
+
838
+ - **Prompt Builder**: Modified `DocumentAnalysisPrompt.build()` to accept `cache_dir` parameter
839
+ - **Analyze Command**: Creates session directory before LLM analysis for context.yml generation
840
+
841
+ ### Technical
842
+
843
+ - Added `Ace::Docs.debug?` method for debug mode detection
844
+ - Enhanced metadata.yml to track context configuration
845
+ - ace-bundle is optional (graceful degradation when unavailable)
846
+
847
+ ## [0.4.0] - 2025-10-16
848
+
849
+ ### Added
850
+
851
+ - **Unified Analyze Command**: Replaced separate diff/analyze commands with single focused analyze command
852
+ - Real LLM-powered analysis (not just formatted diff)
853
+ - Uses `Ace::LLM::QueryInterface` directly (no subprocess overhead)
854
+ - Extracts subject.diff.filters from frontmatter automatically
855
+ - Uses document context (keywords, preset, type, purpose) for intelligent analysis
856
+ - Generates structured recommendations: Summary, Changes by Priority, Recommended Updates
857
+
858
+ - **ace-nav Protocol Integration**: Externalized prompts using ace-nav protocol
859
+ - System prompt: `handbook/prompts/document-analysis.system.md`
860
+ - Loadable via `ace-nav prompt://document-analysis.system --content`
861
+ - Users can override at project (`.ace/`) or user (`~/.ace/`) level
862
+ - Protocol configuration in `.ace.example/nav/protocols/prompt-sources/ace-docs.yml`
863
+
864
+ - **Prompt Transparency**: Both prompts saved to analyze cache
865
+ - `prompt-system.md` - System prompt sent to LLM
866
+ - `prompt-user.md` - User prompt with document context
867
+ - Full reproducibility and debugging support
868
+ - Metadata tracks which prompts were used
869
+
870
+ ### Changed
871
+
872
+ - **File Extensions**: Renamed `.patch` → `.diff` for git diff files
873
+ - **Prompt Architecture**: Split into system + user prompts
874
+ - System prompt: Role, instructions, output format
875
+ - User prompt: Document metadata, context, diff content
876
+ - Better LLM behavior (system prompts weighted differently)
877
+
878
+ - **Cache Structure**: New analyze session format
879
+ ```
880
+ .cache/ace-docs/analyze-{timestamp}/
881
+ ├── repo-diff.diff # Filtered raw diff
882
+ ├── prompt-system.md # System prompt used
883
+ ├── prompt-user.md # User prompt used
884
+ ├── analysis.md # LLM analysis
885
+ └── metadata.yml # Session info + prompt references
886
+ ```
887
+
888
+ ### Removed
889
+
890
+ - **Old diff Command**: Removed misleading diff command (created "analysis.md" with just formatted diff)
891
+ - **Old analyze Command**: Removed incomplete batch analyze command
892
+ - **Obsolete Molecules**: Removed `diff_analyzer.rb`, `report_formatter.rb`, `time_range_finder.rb`
893
+
894
+ ### Technical
895
+
896
+ - Added `ace-llm` as runtime dependency
897
+ - Simplified codebase: 307 insertions, 561 deletions (net reduction)
898
+ - Consistent with ace-review and ace-git-commit prompt patterns
899
+
900
+ ## [0.3.3] - 2025-10-16
901
+
902
+ ### Added
903
+
904
+ - **Subject Diff Filtering**: Filter git diffs by relevant document paths via `ace-docs.subject.diff.filters` frontmatter
905
+ - Configure which files/directories each document cares about
906
+ - Uses git native path filtering for efficiency (git diff -- path1 path2)
907
+ - Dramatically reduces diff noise for documentation review
908
+ - Example: README.md only shows changes in ace-docs/ and CHANGELOG.md
909
+
910
+ - **Semantic Validation**: LLM-powered documentation accuracy validation
911
+ - New `validate --semantic` flag for content validation
912
+ - Checks if content matches stated purpose, identifies contradictions
913
+ - Uses ace-llm subprocess with gflash model (temperature 0.3)
914
+ - Returns specific issues and inconsistencies found
915
+ - Example: `ace-docs validate docs/architecture.md --semantic`
916
+
917
+ - **ace-docs Namespace Structure**: Unified configuration organization
918
+ - New `ace-docs:` namespace for all ace-docs configuration (subject, context, rules)
919
+ - Aligns with ace-review's subject/context architecture pattern
920
+ - Fields: `ace-docs.subject.diff.filters`, `ace-docs.context.keywords`, `ace-docs.context.preset`, `ace-docs.rules`
921
+ - Backward compatible: old `update.focus.paths` format still supported via fallback
922
+
923
+ ### Changed
924
+
925
+ - **Document Model**: Added ace-docs namespace accessors
926
+ - `subject_diff_filters()` - Extract filters with legacy format fallback
927
+ - `context_keywords()` - Extract LLM relevance hints
928
+ - `ace_docs_config()` - Access full ace-docs namespace
929
+
930
+ - **ChangeDetector**: Integrated subject diff filtering
931
+ - `get_diff_for_document()` now uses `subject_diff_filters` for path filtering
932
+ - `get_diff_for_documents()` applies filters per-document
933
+ - Removed obsolete `filter_relevant_changes()` method
934
+
935
+ - **Validator**: Implemented semantic validation
936
+ - `validate_semantic()` now calls ace-llm subprocess
937
+ - Builds semantic validation prompt from document metadata
938
+ - Parses LLM response for validation status and issues
939
+ - Graceful error handling for missing ace-llm
940
+
941
+ ### Fixed
942
+
943
+ - Removed stale TODO comment from `update_command.rb` (preset selection already implemented)
944
+
945
+ ### Documentation
946
+
947
+ - Updated README.md with ace-docs namespace schema and examples
948
+ - Created comprehensive usage guide in task 073
949
+ - Created validation scenario VS-073-001 for subject diff filtering
950
+
951
+ ## [0.3.2] - 2025-10-15
952
+
953
+ ### Fixed
954
+
955
+ - **Date to Commit Resolution**: Fixed critical bug where `diff` command couldn't resolve dates to git commit SHAs
956
+ - `git diff 2025-10-14..HEAD` (bad revision) → now resolves to proper commit SHA
957
+ - Added `resolve_since_to_commit()` to convert dates to commit references
958
+ - Uses parent of first commit since date for inclusive diffs
959
+
960
+ - **Git Root Path Resolution**: All git commands now execute from repository root
961
+ - Fixes path resolution issues when running from subdirectories
962
+ - Added `git_root` helper with proper `chdir` handling
963
+
964
+ - **Folder Structure for Diff Sessions**: Each diff now gets organized session folder
965
+ - Structure: `.cache/ace-docs/diff-{timestamp}/`
966
+ - Contains: `repo-diff.patch` (raw diff), `analysis.md` (report), `metadata.yml` (session info)
967
+ - Better artifact organization for large diffs
968
+
969
+ ## [0.3.1] - 2025-10-15
970
+
971
+ ### Added
972
+
973
+ - **Frontmatter Initialization**: `ace-docs update` now creates frontmatter on files without it
974
+ - Auto-infers `doc-type` from file path (README.md → reference, *.wf.md → workflow, etc.)
975
+ - Requires `purpose` field for new frontmatter
976
+ - Seamless workflow: initialize and update in single command
977
+
978
+ ### Fixed
979
+
980
+ - **YAML Formatting**: Removed duplicate `---` markers in frontmatter output
981
+ - **Update Command**: Now handles files without existing frontmatter
982
+
983
+ ### Changed
984
+
985
+ - **Documentation**: Comprehensive updates to usage.md
986
+ - Added `version` command documentation
987
+ - Detailed `analyze` command section with all options
988
+ - Enhanced `validate` command with `--semantic` flag documentation
989
+ - Fixed `update` command syntax examples (--set key:value)
990
+ - Updated configuration section with LLM and ace-lint settings
991
+ - Enhanced troubleshooting with analyze-specific issues
992
+ - Added complete workflow examples
993
+
994
+ ## [0.3.0] - 2025-10-14
995
+
996
+ ### Added
997
+
998
+ - **Batch Analysis Command**: New `ace-docs analyze` command for LLM-powered documentation analysis
999
+ - Accepts file lists and filter options (--needs-update, --type, --freshness)
1000
+ - Automatic time range detection from document staleness
1001
+ - LLM compaction via ace-llm subprocess integration
1002
+ - Markdown reports organized by impact level (HIGH/MEDIUM/LOW)
1003
+ - Cache management with timestamped analysis reports
1004
+ - Support for exclude-renames and exclude-moves options
1005
+
1006
+ - **Command Architecture Refactoring**: Extracted all CLI commands to testable classes
1007
+ - DiffCommand, UpdateCommand, ValidateCommand, AnalyzeCommand
1008
+ - Improved separation of concerns and testability
1009
+ - Return proper exit codes for all commands
1010
+
1011
+ - **ace-lint Integration**: Validation now delegates to ace-lint when available
1012
+ - Subprocess integration with graceful fallback
1013
+ - Parse and display ace-lint output properly
1014
+
1015
+ - **Configuration System**: Integrated with ace-core config cascade
1016
+ - Added Ace::Docs.config method with defaults
1017
+ - Flat configuration structure following ACE standards
1018
+ - Example config with all available settings
1019
+
1020
+ ### Changed
1021
+
1022
+ - **CLI Structure**: Refactored to delegate all commands to separate command classes
1023
+ - **Documentation**: Updated README with batch analysis examples and new features
1024
+
1025
+ ### Technical
1026
+
1027
+ - Added comprehensive ATOM architecture components (atoms, molecules, models)
1028
+ - TimeRangeCalculator and DiffFilterer atoms for date and diff handling
1029
+ - TimeRangeFinder, DiffAnalyzer, ReportFormatter molecules
1030
+ - AnalysisReport model for structured report data
1031
+ - CompactDiffPrompt for LLM prompt generation
1032
+
1033
+ ## [0.2.0] - 2025-10-14
1034
+
1035
+ ### Added
1036
+
1037
+ - **ADR Lifecycle Workflows**: Comprehensive workflow instructions for complete ADR lifecycle management
1038
+ - `create-adr.wf.md`: Guide for creating new Architecture Decision Records
1039
+ - `maintain-adrs.wf.md`: Workflow for evolution, archival, and synchronization of existing ADRs
1040
+ - Embedded templates for ADR creation, deprecation notices, evolution sections, and archive README
1041
+ - Cross-references between workflows for seamless lifecycle management
1042
+ - Real examples from October 2025 ADR archival session
1043
+ - Decision criteria for archive vs evolve vs scope update actions
1044
+ - Research process guidance using grep to verify pattern usage
1045
+ - Integration with ace-docs validation tools
1046
+
1047
+ ### Changed
1048
+
1049
+ - **update-docs.wf.md**: Added "Architecture Decision Records" section with references to both ADR workflows
1050
+
1051
+ ## [0.1.1] - 2025-10-14
1052
+
1053
+ ### Added
1054
+ - Implement proper document type inference hierarchy
1055
+ - Standardize Rakefile test commands and add CI fallback
1056
+
1057
+ ### Fixed
1058
+ - Resolve symlink paths correctly on macOS
1059
+ - Fix document discovery and ignore patterns
1060
+
1061
+ ### Technical
1062
+ - Add document-specific guidelines to update-docs workflow
1063
+ - Add missing usage.md and document remaining work as future enhancements
1064
+ - Add proper frontmatter with git dates to all managed documents
1065
+
1066
+ ## [0.1.0] - 2025-10-13
1067
+
1068
+ ### Added
1069
+ - Initial release of ace-docs gem
1070
+ - Document status tracking with YAML frontmatter
1071
+ - Document type classification (guide, architecture, reference, etc.)
1072
+ - Batch analysis and reporting capabilities
1073
+ - Integration with ace-core for configuration management
1074
+ - CLI commands for status checking and document updates
1075
+ - Support for automatic document updates based on frontmatter metadata
1076
+
1077
+
1078
+ ## [0.20.2] - 2026-02-22
1079
+
1080
+ ### Fixed
1081
+ - Stripped duplicate command name prefixes from example strings
1082
+ - Standardized quiet, verbose, debug option descriptions to canonical strings