ace-review 0.49.0 → 0.51.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b82396dc00ae89da402caac13c3676fcd153b08cb57d3b7a90ad89741f9dcc35
4
- data.tar.gz: f41220f9de17f6a441284da8faa2b5bdeeda271914b1ad50fc4c04bec746958d
3
+ metadata.gz: 668a87bf537497e9b355bdd43874f45616fa7f07fd1fe7ebbf1c03479d57db73
4
+ data.tar.gz: c33804be4e90e6d806f383da65dc550eaffbca014ad153994203ca4375f9a4a9
5
5
  SHA512:
6
- metadata.gz: d67f62b415608b416992a9370d9e2f7bcc275ddb15364327c792f7796cc90497f1c76e63c31da50ef93f806879cc7c539182ebefd392eab1c4c1da1d25b5c96e
7
- data.tar.gz: 77225d85b87a7f03f2edff892768a09682f6e4928e76350b5fee7a13a2128e108abd12ad18e333ce9196f807d98f71bafe18b533f6d08a2e036d4537a2a89fa5
6
+ metadata.gz: 63851c725b131594c27d4b5edd8b9596d2a0f5461ec3976ddda3118169493ec2f6ee2af5e4b7099761e35375ef4e5b8e0047dbb57380c637a6d1c986cee2a606
7
+ data.tar.gz: 9fb857c6a77358fb8efc4aba526f8af6e7ad7d64a2db6b6ef8be5521bbd5074d4ff9075ecd77ae6112d9bf07c0d6b1b308b0c1315bac08c6291d7e07c33a88c2
data/CHANGELOG.md CHANGED
@@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.51.0] - 2026-03-28
11
+
12
+ ### Added
13
+
14
+ - Standardized package review output handling in `review/package` to persist full markdown reports in `.ace-local/review/package/`, with optional `ace-idea` creation for report attachment flow.
15
+
16
+ ## [0.50.3] - 2026-03-28
17
+
18
+ ### Fixed
19
+ - Corrected non-runnable `ace-search` examples in `review/package` for hyphen-prefixed flag discovery and help-text checks.
20
+ - Updated maintainability lint examples to target Ruby implementation files (`$1/lib/**/*.rb`) instead of unsupported directory-only lint targets.
21
+
22
+ ### Changed
23
+ - Standardized quick-reference `ace-search` snippets to match executable command forms used in the workflow body.
24
+ - Clarified that Step 1 shell blocks are reference execution snippets, reduced duplicated evidence-collection instructions, and narrowed D2 usage-doc scanning to `docs/usage.md` when available (with fallback to `docs/`).
25
+
26
+ ## [0.50.2] - 2026-03-28
27
+
28
+ ### Fixed
29
+ - Replaced unsupported glob-style `ace-search` file inventory examples in `review/package` with path-scoped commands that execute correctly.
30
+ - Corrected the I5 help-text evidence command to search a real package path instead of a glob-resolved commands path.
31
+
32
+ ### Changed
33
+ - Made Step 1 package input checks fail-fast (with explicit stop behavior) to prevent downstream review execution on invalid targets.
34
+ - Reworked maintainability checks to reduce duplicate lint noise and clarified that duplication scans are heuristic signals requiring manual confirmation.
35
+
36
+ ## [0.50.1] - 2026-03-28
37
+
38
+ ### Fixed
39
+ - Corrected `review/package` workflow command examples to avoid invalid `ace-bundle` preset usage and path-incompatible `ace-search` patterns.
40
+ - Added argument terminators for hyphen-prefixed search patterns and tightened performance/doc-drift checks to reduce noisy or ambiguous output.
41
+
42
+ ### Changed
43
+ - Aligned package review workflow to executable `ace-*` command surfaces and simplified maintainability checks to use deterministic lint/search evidence.
44
+
45
+ ## [0.50.0] - 2026-03-28
46
+
47
+ ### Changed
48
+ - Expanded `review/package` workflow from placeholder instructions to a comprehensive evidence-first package review protocol spanning maintainability, interface quality, and documentation fidelity checks with required reporting templates.
49
+
10
50
  ## [0.49.0] - 2026-03-24
11
51
 
12
52
  ### Fixed
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Multi-model code review with preset-based analysis for PRs, tasks, and packages.
5
5
 
6
- <img src="https://raw.githubusercontent.com/cs3b/ace/main/docs/brand/AgenticCodingEnvironment.Logo.XS.jpg" alt="ACE Logo" width="480">
6
+ <img src="../docs/brand/AgenticCodingEnvironment.Logo.XS.jpg" alt="ACE Logo" width="480">
7
7
  <br><br>
8
8
 
9
9
  <a href="https://rubygems.org/gems/ace-review"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-review.svg" /></a>
@@ -6,16 +6,17 @@ description: Review Package - Comprehensive code, docs, UX/DX review with recomm
6
6
  # agent: Explore
7
7
  user-invocable: true
8
8
  allowed-tools:
9
- - Bash(ace-bundle:*)
10
- - Bash(ace-git:*)
11
- - Bash(gh:*)
12
- - Read
13
- - Glob
14
- - Grep
15
- - Write
16
- - Edit
17
- - TodoWrite
18
- - Skill
9
+ - Bash(ace-bundle:*)
10
+ - Bash(ace-git:*)
11
+ - Bash(gh:*)
12
+ - Bash(ace-idea:*)
13
+ - Read
14
+ - Glob
15
+ - Grep
16
+ - Write
17
+ - Edit
18
+ - TodoWrite
19
+ - Skill
19
20
  argument-hint: [package-name]
20
21
  last_modified: 2026-01-10
21
22
  source: ace-review
@@ -1,16 +1,480 @@
1
1
  ---
2
2
  doc-type: workflow
3
+ name: review-package
4
+ description: Structured package review workflow with deterministic evidence checks and prioritized findings output
5
+ allowed-tools:
6
+ - Bash(ace-bundle:*)
7
+ - Bash(ace-search:*)
8
+ - Bash(ace-lint:*)
9
+ - Bash(ace-idea:*)
3
10
  title: Review Package Workflow
4
- purpose: package review workflow
11
+ purpose: Run evidence-first package reviews across maintainability, interface quality, and documentation fidelity
5
12
  ace-docs:
6
- last-updated: 2026-03-12
7
- last-checked: 2026-03-21
13
+ last-updated: 2026-03-28
14
+ last-checked: 2026-03-28
8
15
  ---
9
16
 
10
17
  # Review Package Workflow
11
18
 
19
+ ## Goal
20
+
21
+ Review a package with a repeatable, evidence-first process that combines deterministic checks and agent judgment, then output prioritized findings and concrete recommendations.
22
+
23
+ ## Arguments
24
+
25
+ - `$1`: Package name (required), for example `ace-review`
26
+
27
+ ## Prerequisites
28
+
29
+ - Target package directory exists in repository root
30
+ - `ace-bundle` and `ace-search` available
31
+ - `ace-idea` is optional for persisting the full report as an idea attachment
32
+
33
+
34
+ ## Priority Model
35
+
36
+ Use these severity markers in findings:
37
+
38
+ - `🔴 Immediate`: must address now (correctness, security, severe maintainability risk)
39
+ - `🟡 Next Release`: should address in the next release cycle
40
+ - `🟢 Backlog`: useful improvements with lower urgency
41
+ - `🔵 Advisory`: informational guidance
42
+
43
+ ## Findings Tables
44
+
45
+ Per-finding table:
46
+
47
+ ```markdown
48
+ | # | Dimension | Check | Priority | Evidence | File(s) | Recommendation | Tool |
49
+ |---|-----------|-------|----------|----------|---------|----------------|------|
50
+ ```
51
+
52
+ Summary counts table:
53
+
54
+ ```markdown
55
+ | Dimension | Immediate | Next Release | Backlog | Advisory | Total |
56
+ |-----------|-----------|--------------|---------|----------|-------|
57
+ ```
58
+
12
59
  ## Instructions
13
60
 
14
- 1. Load package context with `ace-bundle <package-name>/project` when available.
15
- 2. Review library structure, public CLI/API surface, documentation, and tests.
16
- 3. Produce prioritized findings and concrete follow-up recommendations.
61
+ ### Step 1: Validate Package Input
62
+
63
+ 1. Ensure package argument is present:
64
+ These shell blocks are reference command snippets for agent execution flow checks; they are not intended to be run as a standalone script.
65
+
66
+ ```bash
67
+ if [ -z "$1" ]; then
68
+ echo "Usage: /as-review-package <package-name>"
69
+ ace-search "^ace-" "." --files
70
+ exit 1
71
+ fi
72
+ ```
73
+
74
+ 2. Ensure target path exists:
75
+
76
+ ```bash
77
+ if [ ! -d "$1" ]; then
78
+ echo "Package not found: $1"
79
+ ace-search "^ace-" "." --files
80
+ exit 1
81
+ fi
82
+ ```
83
+
84
+ 3. If missing, list candidate packages and stop:
85
+
86
+ ```bash
87
+ ace-search "^ace-" "." --files
88
+ ```
89
+
90
+ ### Step 2: Load Review Context
91
+
92
+ 1. Load baseline project context:
93
+
94
+ ```bash
95
+ ace-bundle project
96
+ ```
97
+
98
+ 2. Gather package-specific context directly:
99
+
100
+ ```bash
101
+ ace-search "." "$1" --files
102
+ ```
103
+
104
+ 3. Continue with project context and direct package inspection.
105
+
106
+ 4. Initialize deterministic report output target:
107
+
108
+ ```bash
109
+ package_slug="$(printf '%s' "$1" | tr '/ ' '-')"
110
+ review_timestamp="$(date -u +%Y%m%dT%H%M%SZ)"
111
+ report_dir=".ace-local/review/package/${package_slug}"
112
+ report_path="${report_dir}/raw-review-${review_timestamp}.md"
113
+ mkdir -p "$report_dir"
114
+ ```
115
+
116
+ ### Step 3: Build Evidence Inventory
117
+
118
+ Collect key files for later cross-checking:
119
+
120
+ ```bash
121
+ # Reuse the file inventory collected in Step 2.
122
+ ace-search "^#|^##|class |module |desc " "$1" --content
123
+ ```
124
+
125
+ Minimum evidence set:
126
+
127
+ - `README.md` and package `docs/usage.md` (if present)
128
+ - `CHANGELOG.md`
129
+ - `exe/*` and CLI command files
130
+ - `lib/**` implementation files
131
+ - `test/**` test files
132
+ - `.ace-defaults/**` configuration defaults
133
+ - `handbook/**` workflows and guides
134
+
135
+ ### Step 4: Maintainability Review (Deterministic)
136
+
137
+ Run these checks first. Record evidence and thresholds.
138
+
139
+ #### M1. Test Coverage Ratio
140
+
141
+ Goal: test file count to implementation file count at or above `0.8:1`.
142
+
143
+ ```bash
144
+ ace-search "\\.rb$" "$1/lib" --files
145
+ ace-search "_test\\.rb$" "$1/test" --files
146
+ ```
147
+
148
+ Thresholds:
149
+
150
+ - `🔴`: ratio `< 0.5`
151
+ - `🟡`: ratio `>= 0.5` and `< 0.8`
152
+ - `🟢`: ratio `>= 0.8`
153
+
154
+ If SimpleCov artifact exists, include coverage percentage as supporting evidence. If absent, note "coverage artifact unavailable".
155
+
156
+ #### M2. File Size Compliance
157
+
158
+ Target: identify oversized implementation hotspots with lint + structure evidence.
159
+
160
+ ```bash
161
+ ace-search "\\.rb$" "$1/lib" --files
162
+ ace-lint "$1/lib/**/*.rb"
163
+ ```
164
+
165
+ Thresholds:
166
+
167
+ - `🔴`: repeated severe lint hotspots in core files (for example excessive method/class complexity with large files)
168
+ - `🟡`: moderate lint hotspots concentrated in a few files
169
+ - `🟢`: no major lint hotspots reported
170
+
171
+ #### M3. Code Duplication
172
+
173
+ Heuristic scan (not deterministic):
174
+
175
+ ```bash
176
+ ace-search "def " "$1/lib" --content
177
+ ace-search "TODO: duplicate|duplicate" "$1/lib" --content
178
+ ```
179
+
180
+ Interpretation:
181
+
182
+ - Treat matches as hints and confirm true duplication by reading candidate methods side-by-side before escalating priority.
183
+
184
+ #### M4. Complexity Hotspots
185
+
186
+ Baseline:
187
+
188
+ ```bash
189
+ # Reuse M2 lint output as baseline; rerun only if the file set changed.
190
+ ace-lint "$1/lib/**/*.rb"
191
+ ```
192
+
193
+ #### M5. Code Smells
194
+
195
+ Evidence scan:
196
+
197
+ ```bash
198
+ ace-search "TODO|FIXME|HACK|XXX|rescue StandardError|puts\\(|binding\\.pry" "$1/lib" --content
199
+ ```
200
+
201
+ Use this check for smell-specific signals; rely on M4's `ace-lint` output for complexity hotspots.
202
+
203
+ #### M6. ATOM Architecture Compliance
204
+
205
+ Check expected layering and cross-layer imports.
206
+
207
+ ```bash
208
+ ace-search "atoms" "$1/lib" --files
209
+ ace-search "molecules" "$1/lib" --files
210
+ ace-search "organisms" "$1/lib" --files
211
+ ace-search "require .*organisms" "$1/lib" --content
212
+ ```
213
+
214
+ Flag atom-to-organism or atom-to-cli coupling as maintainability risk.
215
+
216
+ #### M7. Dead Code and Technical Debt
217
+
218
+ ```bash
219
+ ace-search "TODO|FIXME|HACK|XXX" "$1" --content
220
+ ace-search "deprecated|obsolete|legacy" "$1/lib" --content
221
+ ```
222
+
223
+ Score by density and stale markers without owners.
224
+
225
+ #### M8. Dependency Hygiene
226
+
227
+ Compare gemspec dependencies with runtime requires.
228
+
229
+ ```bash
230
+ ace-search "add_dependency|add_runtime_dependency" "$1" --content
231
+ ace-search "^require " "$1/lib" --content
232
+ ```
233
+
234
+ Flag missing or unused dependencies and hidden runtime dependencies.
235
+
236
+ #### M9. Changelog Maintenance
237
+
238
+ ```bash
239
+ [ -f "$1/CHANGELOG.md" ] && ace-search "^## \[" "$1" --content || echo "CHANGELOG.md not found"
240
+ [ -f "$1/CHANGELOG.md" ] && ace-search "Added|Changed|Fixed|Security" "$1" --content || echo "CHANGELOG.md not found"
241
+ ```
242
+
243
+ Check format consistency and recency relative to recent commits.
244
+
245
+ ### Step 5: Interface Quality Review (Evidence Then Judgment)
246
+
247
+ Gather evidence first, then evaluate.
248
+
249
+ #### I1. CLI Flag Consistency
250
+
251
+ ```bash
252
+ ace-search "option .*aliases:" "$1/lib" --content
253
+ ace-search "(-v|-q|-d|-h|--help)" "$1/lib" --content
254
+ ```
255
+
256
+ Evaluate reserved-flag usage and naming consistency.
257
+
258
+ #### I2. Error Message Quality
259
+
260
+ ```bash
261
+ ace-search "raise|error|fail" "$1/lib" --content
262
+ ```
263
+
264
+ Check messages for actionability and recovery guidance.
265
+
266
+ #### I3. Exit Code Documentation
267
+
268
+ ```bash
269
+ ace-search "exit code|Exit codes|status code" "$1" --content
270
+ ace-search "Ace::Core::CLI::Error|exit" "$1/lib" --content
271
+ ```
272
+
273
+ Evaluate documentation-to-implementation alignment.
274
+
275
+ #### I4. API Surface Consistency
276
+
277
+ ```bash
278
+ ace-search "module Ace::|class .*Command" "$1/lib" --content
279
+ ace-search "public|private" "$1/lib" --content
280
+ ```
281
+
282
+ Assess naming cohesion and public API boundaries.
283
+
284
+ #### I5. Help Text Quality
285
+
286
+ ```bash
287
+ ace-search "desc \"|argument :|option :" "$1/lib" --content
288
+ ```
289
+
290
+ Evaluate completeness, examples, and clarity.
291
+
292
+ #### I6. Extensibility
293
+
294
+ ```bash
295
+ ace-search "hook|plugin|adapter|strategy|provider" "$1/lib" --content
296
+ ```
297
+
298
+ Evaluate extension points and coupling tradeoffs.
299
+
300
+ #### I7. Performance Characteristics
301
+
302
+ ```bash
303
+ ace-search "File\\.read|IO\\.read|YAML\\.load|JSON\\.parse|each_slice|each_cons|nested loop|while .*each" "$1/lib" --content
304
+ ```
305
+
306
+ Assess patterns for large inputs (streaming vs full load) and potential hotspots.
307
+
308
+ ### Step 6: Documentation Fidelity Review
309
+
310
+ Cross-check docs against implementation behavior.
311
+
312
+ #### D1. README Accuracy
313
+
314
+ ```bash
315
+ ace-search "ace-" "$1" --content
316
+ ace-search "desc \"" "$1/lib" --content
317
+ ```
318
+
319
+ Compare documented commands/flags with actual CLI definitions.
320
+
321
+ #### D2. Usage Docs Drift
322
+
323
+ ```bash
324
+ [ -f "$1/docs/usage.md" ] && ace-search "usage|example|command|option" "$1/docs/usage.md" --content || ([ -d "$1/docs" ] && ace-search "usage|example|command|option" "$1/docs" --content || echo "docs/ directory not found")
325
+ ace-search "class .*Command|desc \"|option :" "$1/lib" --content
326
+ ```
327
+
328
+ If `docs/usage.md` is missing, note as advisory unless required by package conventions. The docs search above intentionally gathers usage context from `docs/` when present.
329
+
330
+ #### D3. CHANGELOG Completeness
331
+
332
+ ```bash
333
+ [ -f "$1/CHANGELOG.md" ] && ace-search "^## \[" "$1" --content || echo "CHANGELOG.md not found"
334
+ ```
335
+
336
+ Check whether notable changes appear in changelog entries.
337
+
338
+ #### D4. Help Text Accuracy
339
+
340
+ ```bash
341
+ ace-search "(--help|-h)" "$1" --content
342
+ ```
343
+
344
+ Compare docs to command definitions and expected help output.
345
+
346
+ #### D5. Config Documentation Fidelity
347
+
348
+ ```bash
349
+ ace-search "\.ace-defaults|config.yml|resolve_namespace" "$1" --content
350
+ ace-search "config|\.ace/" "$1" --content
351
+ ```
352
+
353
+ Cross-check config keys and precedence explanations.
354
+
355
+ #### D6. ADR and Standards Alignment
356
+
357
+ ```bash
358
+ ace-search "ADR-|ATOM|workflow|ace-bundle" "$1" --content
359
+ ```
360
+
361
+ Verify references point to real practices and files.
362
+
363
+ ### Step 7: Handle Optional Tool Availability
364
+
365
+ If optional tooling is not installed:
366
+
367
+ 1. Record the tool as unavailable.
368
+ 2. Record fallback command(s) used.
369
+ 3. Continue review without failing the workflow.
370
+ 4. Add advisory recommendation with install guidance where useful.
371
+
372
+ ### Step 8: Compile Findings
373
+
374
+ 1. Build one findings row per issue using the required columns:
375
+
376
+ - `Dimension`: Maintainability, Interface Quality, or Documentation Fidelity
377
+ - `Check`: check id/name (for example `M4 Complexity Hotspots`)
378
+ - `Priority`: one of `🔴/🟡/🟢/🔵`
379
+ - `Evidence`: concrete command result summary
380
+ - `File(s)`: exact file paths
381
+ - `Recommendation`: action with scope
382
+ - `Tool`: command/tool used (or fallback)
383
+
384
+ 2. Produce summary count table by dimension and priority.
385
+
386
+ ### Step 9: Prioritize Recommendations
387
+
388
+ Group actions into buckets:
389
+
390
+ 1. `Immediate`: correctness/security/severe quality risks
391
+ 2. `Next Release`: high-value improvements with moderate risk
392
+ 3. `Backlog`: incremental maintainability improvements
393
+ 4. `Advisory`: non-blocking guidance
394
+
395
+ Add rough effort tags where possible (`S`, `M`, `L`).
396
+
397
+ ### Step 10: Final Review Output and Report Artifact
398
+
399
+ Your final package review output should contain, in order:
400
+
401
+ 1. Scope and package reviewed
402
+ 2. Tool availability notes
403
+ 3. Findings table
404
+ 4. Summary table
405
+ 5. Prioritized recommendation list
406
+ 6. Brief closing note with follow-up suggestion
407
+
408
+ Use the same content to create a full markdown report file:
409
+
410
+ ```bash
411
+ cat <<EOF > "$report_path"
412
+ # Package Review Report: $1
413
+
414
+ Scope and package reviewed: $1
415
+
416
+ ## Tool Availability
417
+
418
+ ## Findings
419
+
420
+ | # | Dimension | Check | Priority | Evidence | File(s) | Recommendation | Tool |
421
+ |---|-----------|-------|----------|----------|---------|----------------|------|
422
+
423
+ ## Summary
424
+
425
+ | Dimension | Immediate | Next Release | Backlog | Advisory | Total |
426
+ |-----------|-----------|--------------|---------|----------|-------|
427
+
428
+ ## Prioritized Recommendations
429
+
430
+ ## Closing Note
431
+ EOF
432
+
433
+ echo "Full report saved to: $report_path"
434
+
435
+ if command -v ace-idea >/dev/null 2>&1; then
436
+ ace-idea create "Package review report for ${1}. Full report is attached as full-report.md in the idea folder." --title "Review package ${1}" --tags review,package --move-to maybe
437
+ echo "Use the output Path above to attach report artifact:"
438
+ echo "Set idea_file_path to the \"Path:\" value above and run:"
439
+ echo "cp \"$report_path\" \"\$(dirname \"$idea_file_path\")/full-report.md\""
440
+ else
441
+ echo "ace-idea not available; full report available at: $report_path"
442
+ fi
443
+ ```
444
+
445
+ ## Error Handling
446
+
447
+ - Package not found: show clear error and available package list
448
+ - Package-specific bundle unavailable: continue with project bundle and direct inspection
449
+ - Optional tool missing: continue with fallback and document limitation
450
+ - Coverage artifact unavailable: report coverage metric as unavailable (do not block)
451
+
452
+ ## Quick Reference
453
+
454
+ ```bash
455
+ # Load context
456
+ ace-bundle project
457
+ ace-search "\\.rb$" "<package>/lib" --files
458
+
459
+ # Core evidence scans
460
+ ace-search "<pattern>" <package> --content
461
+ ace-search "\\.rb$" <package> --files
462
+
463
+ # Protocol load check for this workflow
464
+ ace-bundle wfi://review/package
465
+
466
+ # Lint this workflow file
467
+ ace-lint ace-review/handbook/workflow-instructions/review/package.wf.md
468
+ ```
469
+
470
+ ## Success Criteria
471
+
472
+ - [ ] `package.wf.md` is expanded from placeholder instructions to a comprehensive workflow
473
+ - [ ] Maintainability section defines 9 deterministic checks with thresholds or clear fallbacks
474
+ - [ ] Interface Quality section defines 7 evidence-first checks
475
+ - [ ] Documentation Fidelity section defines 6 doc-vs-code cross-checks
476
+ - [ ] Findings output includes required per-finding table format
477
+ - [ ] Summary output includes required dimension/priority counts table
478
+ - [ ] Missing optional tools are handled as non-blocking with explicit notes
479
+ - [ ] Workflow loads with `ace-bundle wfi://review/package`
480
+ - [ ] File passes `ace-lint`
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Review
5
- VERSION = "0.49.0"
5
+ VERSION = "0.51.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-review
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.49.0
4
+ version: 0.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz