ace-support-config 0.18.1 → 0.18.3

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: 7369abd069cd5e39e4211f0eddefefd79604af2bd9ef6b47f2cb84aa0b982277
4
- data.tar.gz: ee779961d207f9393c70a1b84b8f57e5c9afa3204a475354329396d90eda170d
3
+ metadata.gz: 19409cf71fd217d5bee77f6a6ddaa91620e0279e2a26ee09a3c6cc3d96187ce1
4
+ data.tar.gz: 870724232f8e26c36574fc0da85529e70f88676495279c536a3e62e620c5b750
5
5
  SHA512:
6
- metadata.gz: cbcc5074d9931ef36ad56dc33ec37235d54c98b161e46ae0beff7be44f53087d799bfc74249a69cad8956106418fd07db47e5613373f90206944f4a5368d3e61
7
- data.tar.gz: 2a634a5c86017c4400561ba0d0b7049bd30bde330734ded1a302141a73da8b1e144f006e96d866c7d87a8b4e8cc0703540acd68a26536b3e3f0a2ca270f616ab
6
+ metadata.gz: 58df557ce6a70ae161ecf48a9954bd11577d153250c32e490704206b4cac7807c5f7ec87a05b06507c810a53b5e0eb288f46de7921a9815027c17fd608fa6393
7
+ data.tar.gz: 4d4992a85f27005ef536afdceb344371c4012564eebf6246ab988f13838d815d77d8bc14565080908079aa7725d6f08458a3236adbfbb28dbc34de7f90890db2
data/CHANGELOG.md CHANGED
@@ -6,392 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
- ### Fixed
10
- - Skip permission-denial cascade edge tests when file permission bits are not enforced for the running process (root/`CAP_DAC_OVERRIDE` in containers), fixing false CI failures while keeping full denial coverage for unprivileged users.
11
-
12
-
13
- ## [0.18.1] - 2026-09-02
14
-
15
- ### Technical
16
- - Included in the coordinated all-package patch release preparation for ACE monorepo review.
17
- ## [0.18.0] - 2026-08-13
18
- ### Added
19
- - Manage expiring drift acknowledgements
20
- - Add profile-aware policy checks to doctor
21
- - Report profile-aware configuration drift in doctor
22
- ### Technical
23
- - Streamline bootstrap templates around principles-first guidance
24
-
25
- ## [0.17.1] - 2026-06-30
26
-
27
- ### Changed
28
- - Updated `ace-config doctor` skill projection health to ignore disabled provider projections reported by `ace-handbook status`.
29
-
30
- ## [0.17.0] - 2026-06-30
31
-
32
- ### Added
33
- - Added `ace-config doctor` warnings for projects whose root agent guidance or `docs/tools.md` are missing generated agent-engineering guidance markers.
34
-
35
- ### Fixed
36
- - Corrected `ace-config-bootstrap-root-files` to sync `ace-support-core` and record from the sandbox root layout where the bootstrap files are actually created.
37
-
38
- ### Technical
39
- - Expanded bootstrap sync coverage for generated `docs/tools.md`, cost-bias markers, preservation without `--force`, force refresh, and subdirectory root targeting.
40
-
41
- ## [0.16.2] - 2026-04-24
42
-
43
- ### Technical
44
- - Expanded bootstrap feature coverage so generated `AGENTS.md` and `CLAUDE.md` files must retain ACE provenance, customization, and refresh guidance.
45
-
46
- ## [0.16.1] - 2026-04-24
47
-
48
- ### Changed
49
- - Clarified setup-readiness documentation so `ace-llm --list-providers` remains the provider discovery command while `ace-config doctor` is documented as the quick-start readiness check, including blocker versus warning guidance and `--no-probe` usage.
50
-
51
- ## [0.16.0] - 2026-04-23
52
-
53
- ### Changed
54
- - Renamed `ace-config init` to `ace-config sync` and removed the old `init` command path.
55
- - Updated quick-start setup guidance to sync only `ace-llm-providers-cli` config by default because other package config should come from packaged `.ace-defaults` unless project overrides are needed.
56
-
57
- ## [0.15.0] - 2026-04-23
58
-
59
- ### Changed
60
- - Extended `ace-config doctor` with informational project `.ace` vs package `.ace-defaults` counts, provider skill projection sync warnings, and streamed fast-check progress before the final report.
61
- - Updated doctor provider pings to order API targets before CLI targets, use 15-second API timeouts and 30-second CLI timeouts, and distinguish timeout failures from other provider errors.
62
-
63
- ### Technical
64
- - Added doctor coverage for config-default counts, skill sync drift, provider timeout selection, timeout row formatting, and progress ordering.
65
-
66
- ## [0.14.1] - 2026-04-23
67
-
68
- ### Changed
69
- - Updated `ace-config doctor` live provider checks to probe deduped `_utility` plus `commit` role candidates, preserving alias labels alongside resolved provider/model names.
70
- - Changed doctor provider-ping progress and summaries to show pass/fail/running glyphs, live TTY line updates, and explicit passed/total counts for full and partial success.
71
-
72
- ### Technical
73
- - Added doctor regression coverage for utility-plus-commit target selection, alias-preserving ping commands, append-only non-TTY progress, and partial-success summary output.
74
-
75
- ## [0.14.0] - 2026-04-23
76
-
77
- ### Changed
78
- - Split `ace-config doctor` output into health checks that control exit status and a concise hygiene summary, with `--hygiene` for full alias/role drift details.
79
- - Made provider health live by default again through concurrent `ace-llm TARGET "ping" --no-fallback` checks against deduped `_utility` and `commit` role candidates; `--no-probe` disables live pings.
80
- - Streamed human `ace-config doctor` output so utility provider ping lines show alias labels, resolved model names, and pass counts as checks complete.
81
-
82
- ### Technical
83
- - Added doctor coverage for health-only exit status, hidden-by-default hygiene findings, expanded hygiene output, JSON health/hygiene counts, first-role base-provider distillation, and concurrent ping delegation.
84
-
85
- ## [0.13.0] - 2026-04-22
86
-
87
- ### Fixed
88
- - Made `ace-config doctor` fast by default by replacing automatic live probes with structural role-default readiness checks; live probes now require `--probe` and target only resolved role-default providers.
89
-
90
- ### Technical
91
- - Added doctor regression coverage for non-live defaults, opt-in provider probes, blocker-gated probes, and role-default target validation.
92
-
93
- ## [0.12.1] - 2026-04-22
94
9
 
95
- ### Fixed
96
- - Extended `SetupDoctor` stale-alias detection to validate `aliases.global` provider targets (`provider:model`) in addition to provider-local model aliases.
97
- - Made `.ace-local` artifact-hygiene detection accept equivalent `.gitignore` forms (for example `/.ace-local/`, `.ace-local`, `.ace-local/**`) instead of requiring an exact literal line.
98
-
99
- ### Technical
100
- - Added fast-test coverage for stale global alias detection and semantic `.ace-local` ignore pattern acceptance.
101
-
102
- ## [0.12.0] - 2026-04-22
103
-
104
- ### Added
105
- - Added `ace-config doctor` with text/JSON readiness output and `--no-probe` support for non-mutating setup diagnostics.
106
-
107
- ### Changed
108
- - Extended `ace-config` command routing and help output to include the new `doctor` workflow.
109
-
110
- ### Technical
111
- - Added `SetupDoctor` organism coverage for blocker/warn/skip classification and CLI contract behavior.
112
-
113
- ## [0.11.2] - 2026-04-13
114
-
115
- ### Fixed
116
- - Made bootstrap `.gitignore` detection line-aware so commented or negated `.ace-local/` mentions no longer suppress appending the real ignore rule.
117
-
118
- ### Technical
119
- - Added regression coverage for commented and negated `.gitignore` mentions during bootstrap merges.
120
10
 
121
- ## [0.11.1] - 2026-04-13
11
+ ## [0.18.3] - 2026-10-20
122
12
 
123
13
  ### Fixed
124
- - Preserve existing `.gitignore` rules even when `ace-config init --force` refreshes bootstrap files.
125
- - Anchor project-root bootstrap files (`.gitignore`, `AGENTS.md`, `CLAUDE.md`) to the detected repository root so subdirectory runs do not seed them into the wrong location.
126
-
127
- ## [0.11.0] - 2026-04-13
128
-
129
- ### Changed
130
- - **ace-support-config v0.11.0**: Taught `ace-config init` to bootstrap project-root guidance files, include dotfile defaults, and append `.ace-local/` to existing `.gitignore` files without overwriting user-owned `AGENTS.md` or `CLAUDE.md`.
131
-
132
- ## [0.10.4] - 2026-04-13
133
-
134
- ### Changed
135
- - **ace-support-config v0.10.4**: Standardized shared package tests to the fast-only layout and updated testing flow defaults.
136
-
137
-
138
- ## [0.10.3] - 2026-04-11
139
-
140
- ### Technical
141
- - Migrated package tests to the `fast`/`feat` layout by moving deterministic ATOM coverage to `test/fast/` and former `test/integration/` suites to `test/feat/`.
142
- - Updated package docs to publish the `ace-test ace-support-config` (`fast`), `feat`, and `all` contract and keep package scope deterministic-only.
143
-
144
- ## [0.10.2] - 2026-03-31
145
-
146
- ### Technical
147
- - Added integration test coverage that stubs config template discovery in CLI flows to keep package tests deterministic across environments.
148
-
149
- ## [0.10.1] - 2026-03-31
150
-
151
- ### Fixed
152
- - Initialize project-root handling in RubyGems verify-install workflow usage paths to avoid brittle Gemfile resolution.
153
- - Remove Bundler runtime dependency from `ace-config` executable startup.
154
- - Wire `ConfigDiff` local/verbose behavior through CLI execution paths.
155
-
156
- ### Technical
157
- - Added reset support for `ConfigTemplates` cache state and regression coverage for CLI/config diff behavior.
158
-
159
- ## [0.10.0] - 2026-03-31
160
-
161
- ### Added
162
- - Introduced `ace-config` CLI as the canonical config command with parity for `init`, `diff`, `list`, `version`, and `help`.
163
- - Added package executable `exe/ace-config` and repo wrapper `bin/ace-config`.
164
-
165
- ### Changed
166
- - Migrated config CLI runtime to `Ace::Support::Config` with in-package modules for CLI dispatch, template discovery, initialization, and diff operations.
167
- - Updated package docs to present `ace-config` as the primary interface.
168
-
169
- ### Technical
170
- - Added integration tests for `ace-config` CLI behavior and bootstrap/config initialization flows.
171
-
172
- ## [0.9.2] - 2026-03-29
173
-
174
- ### Technical
175
- - Normalized published gem metadata so RubyGems and Ruby Toolbox use current release information instead of the 1980 fallback date.
176
-
177
-
178
- ## [0.9.1] - 2026-03-29
179
-
180
- ### Fixed
181
- - **ace-support-config v0.9.1**: Bumped dependency constraints to currently available `~>` ranges on RubyGems and updated release metadata after dependency synchronization.
182
-
183
- ## [0.9.0] - 2026-03-23
184
-
185
- ### Technical
186
- - Removed phantom `handbook/**/*` glob from gemspec (no handbook directory exists).
187
-
188
- ## [0.8.5] - 2026-03-22
189
-
190
- ### Technical
191
- - Updated README examples to use `resolve_file` instead of deprecated `resolve_for`.
192
-
193
- ## [0.8.4] - 2026-03-22
194
-
195
- ### Technical
196
- - Refreshed README structure with consistent tagline, corrected package naming, installation, basic usage, API overview, and ACE project footer
197
-
198
- ## [0.8.3] - 2026-03-05
199
-
200
- ### Technical
201
- - Document `ProjectConfigScanner` in README with molecule list and comparison table vs `ConfigFinder`
202
-
203
- ## [0.8.2] - 2026-03-05
204
-
205
- ### Fixed
206
- - Narrow `Errno::EACCES` rescue in `ProjectConfigScanner#find_ace_dirs` to per-path scope so a permission error on one directory does not abort the entire scan
207
-
208
- ### Technical
209
- - Add test for graceful degradation when a subdirectory is permission-restricted
210
-
211
- ## [0.8.1] - 2026-03-05
212
-
213
- ### Fixed
214
- - Expand `SKIP_DIRS` in `ProjectConfigScanner` to include `.bundle`, `_legacy`, `.ace-local`, `.ace-tasks`, `.ace-taskflow` preventing false-positive config discovery in monorepo-ignored paths
215
- - Memoize `scan` results to avoid repeated full filesystem traversals on multiple calls
216
- - Deduplicate symlinked `.ace` directories using `File.realpath` tracking
217
- - Use portable positional flags form for `Dir.glob` (`File::FNM_DOTMATCH` as positional arg)
218
-
219
- ## [0.8.0] - 2026-03-05
220
-
221
- ### Added
222
- - `ProjectConfigScanner` molecule for downward project tree traversal to discover all `.ace` config folders across a monorepo
223
-
224
- ## [0.7.2] - 2026-02-23
225
-
226
- ### Technical
227
- - Updated internal dependency version constraints to current releases
228
-
229
- ## [0.7.1] - 2026-02-12
230
-
231
- ### Fixed
232
- - Stabilize performance test threshold for `resolve_namespace` overhead (2.0x → 3.0x) to reduce CI flakiness
233
-
234
- ## [0.7.0] - 2026-01-27
235
-
236
- ### Added
237
- - Path rules support for configuration resolution with glob pattern matching
238
- - Project scanning capability to discover nested package configurations
239
- - `PathRuleMatcher` atom for matching file paths against glob patterns
240
- - Support for glob arrays in path rules configuration
241
-
242
- ### Changed
243
- - Enhanced `ConfigResolver` to support path-based configuration splitting
244
- - Refactored config resolution to enable scoped configuration per file path
245
-
246
- ## [0.6.0] - 2026-01-11
247
-
248
- ### Breaking Changes
249
- - **Gem renamed** from `ace-config` to `ace-support-config`
250
- - **Namespace changed** from `Ace::Config` to `Ace::Support::Config`
251
- - Update gemspec dependency from `ace-config ~> 0.5` to `ace-support-config ~> 0.6`
252
- - Update require statements from `require "ace/config"` to `require "ace/support/config"`
253
- - Update class references from `Ace::Config` to `Ace::Support::Config`
254
-
255
- ### Migration Guide
256
- ```ruby
257
- # Before
258
- require 'ace/config'
259
- config = Ace::Config.create
260
- Ace::Config.test_mode = true
261
-
262
- # After
263
- require 'ace/support/config'
264
- config = Ace::Support::Config.create
265
- Ace::Support::Config.test_mode = true
266
- ```
267
-
268
- For gem maintainers:
269
- ```ruby
270
- # In your gemspec, change:
271
- spec.add_dependency 'ace-config', '~> 0.5'
272
- # To:
273
- spec.add_dependency 'ace-support-config', '~> 0.6'
274
-
275
- # In your code, change:
276
- require 'ace/config'
277
- # To:
278
- require 'ace/support/config'
279
-
280
- # And update class references:
281
- Ace::Config.create → Ace::Support::Config.create
282
- Ace::Config.test_mode = → Ace::Support::Config.test_mode =
283
- ```
284
-
285
- ## [0.5.1] - 2026-01-05
286
-
287
- ### Fixed
288
- - Stabilize performance tests and adjust thresholds for CI consistency
289
- - Improve command default behavior and fix flaky test
290
-
291
- ## [0.5.0] - 2026-01-03
292
-
293
- ### Changed
294
- - **BREAKING**: Minimum Ruby version raised to 3.3.0 (was 3.2.0)
295
- - Standardized gemspec file patterns with deterministic Dir.glob
296
- - Added MIT LICENSE file
297
-
298
- ## [0.4.3] - 2026-01-03
299
-
300
- ### Changed
301
- - Optimized performance test execution time from 11.77s to 1.64s (85% improvement)
302
- - Reduced loop iterations in performance tests (100-1000 → 10-50)
303
- - Reduced cascade depth from 5 to 2 levels for faster tests
304
- - Reduced file count from 50 to 10 in file-based tests
305
- - Extracted iteration count constants (CASCADE_ITERATIONS, GLOB_ITERATIONS, FINDER_ITERATIONS, TEST_MODE_ITERATIONS)
306
- - Implemented median-based timing metrics instead of average for robustness with small sample sizes
307
- - Added deep cascade correctness test to maintain coverage at depth 5
308
-
309
- ### Technical
310
- - Added performance measurement helpers (`measure_iterations`, `median_time`, `format_time`)
311
- - Separated constants for I/O-bound vs CPU-bound operations tuning
312
-
313
- ## [0.4.2] - 2026-01-02
314
-
315
- ### Added
316
- - Test mode for faster test execution (`Ace::Config.test_mode = true`)
317
- - `ACE_CONFIG_TEST_MODE` environment variable for CI/test runner integration (case-insensitive)
318
- - `mock_config` parameter to `Ace::Config.create` for providing mock data in tests
319
- - `test_mode` parameter to `Ace::Config.create` for explicit test mode control
320
- - Thread-safe test mode state using `Thread.current` for parallel test environments
321
- - Test mode short-circuit in `resolve_type` and `find_configs` methods
322
-
323
- ## [0.4.1] - 2025-12-31
324
-
325
- ### Technical
326
- - Add comprehensive edge case and custom path tests (Task 157.10)
327
-
328
- ## [0.4.0] - 2025-12-30
329
-
330
- ### Added
331
- - `merge()` method on Config model as the primary method for merging configuration data
332
- - `with()` remains as an alias for backward compatibility
333
-
334
- ## [0.3.0] - 2025-12-30
335
-
336
- ### Added
337
- - `resolve_namespace(*segments, filename: "config")` method to ConfigResolver for simplified namespace-based config resolution
338
- - Uses `File.join` for cross-platform path construction
339
- - Sanitizes segments (flatten, compact, stringify, strip whitespace, reject empty)
340
- - Documented in README and usage.md
341
- - Runtime dependency on `ace-support-fs` for filesystem utilities (PathExpander, ProjectRootFinder, DirectoryTraverser)
342
- - `class_get_env` class method on PathExpander for consistent ENV access pattern across class and instance methods
343
- - Documentation section on directory naming conventions (`.ace-defaults/` vs `.ace/` vs `.ace.example/`)
344
- - `glob_to_regex` now supports bracket character classes (`[a-z]`, `[abc]`)
345
- - Documentation for `resolve_for` clarifying it's intentionally not memoized
346
- - `Date` class to permitted YAML classes for parsing date values in config files
347
-
348
- ### Changed
349
- - Reorganized ConfigResolver methods: all public methods grouped together before private section
350
-
351
- ### Breaking Changes
352
- - None
353
-
354
- ### Fixed
355
- - Gemfile.lock version mismatch (was 0.1.0, now correctly shows 0.2.0)
356
-
357
- ## [0.2.0] - 2025-12-28
358
-
359
- ### Added
360
- - Initial release of ace-config gem
361
- - Generic configuration cascade with customizable folder names
362
- - `Ace::Config.create` factory method for creating resolvers
363
- - `Ace::Config.virtual_resolver` factory method for virtual filesystem view
364
- - Configurable `config_dir` and `defaults_dir` parameters
365
- - Support for gem defaults via `gem_path` parameter
366
- - Deep merging with configurable array strategies (:replace, :concat, :union)
367
- - Project root detection with customizable markers
368
- - Path expansion with environment variable and protocol support
369
- - YAML parsing with error handling
370
- - Virtual config resolver for cascade filesystem view
371
- - Memoization for `resolve()` and `get()` methods in ConfigResolver
372
- - Windows compatibility via `File::ALT_SEPARATOR` support
373
-
374
- ### Fixed
375
- - ConfigFinder uses stable `start_path` instead of mutable `Dir.pwd`
376
- - `find_file`/`find_all_files` now respect `use_traversal` parameter
377
- - YamlLoader `merge_strategy` parameter properly applied
378
- - PathExpander raises exception instead of returning error hash
379
-
380
- ### Changed
381
- - Gemspec excludes `test/` directory from built gem
382
- - ENV access extracted to protected `get_env` method for testability
383
-
384
- ### Components Extracted from ace-support-core
385
- - **Atoms**: DeepMerger, YamlParser, PathExpander
386
- - **Molecules**: ConfigFinder, DirectoryTraverser, ProjectRootFinder, YamlLoader
387
- - **Organisms**: ConfigResolver, VirtualConfigResolver
388
- - **Models**: Config, CascadePath
389
- - **Errors**: ConfigNotFoundError, YamlParseError, PathError, MergeStrategyError
390
-
391
- ## [0.1.0] - 2025-12-28
14
+ - `ConfigFinder#find_all`: deterministic per-tier tie order — when
15
+ several file patterns match in the same search path (e.g. both
16
+ `config.yml` and `config.yaml` exist in one tier), the earlier
17
+ pattern consistently takes priority; previously the tie relied on
18
+ `Array#sort`, which is unstable for equal priorities. Shared by
19
+ every consumer of the finder (`ConfigResolver#resolve_file`,
20
+ ace-coworker's executor probe), so the yml/yaml policy no longer
21
+ diverges between loaders (8xi1p4z9).
392
22
 
393
- ### Added
394
- - Initial gem structure
395
- - Public API design with `Ace::Config.create` factory
396
- - Full configuration cascade implementation
397
- - Zero runtime dependencies (stdlib only)
@@ -48,8 +48,13 @@ module Ace
48
48
  @search_paths.each_with_index do |base_path, index|
49
49
  priority = index * 10 # Lower index = higher priority
50
50
 
51
- @file_patterns.each do |pattern|
52
- found = find_in_path(base_path, pattern, priority)
51
+ # Deterministic per-tier tie order: when several patterns
52
+ # match in the same tier (e.g. both config.yml and
53
+ # config.yaml exist), the earlier pattern wins and both
54
+ # are still merged in a stable order — Array#sort alone
55
+ # is unstable for equal priorities.
56
+ @file_patterns.each_with_index do |pattern, pattern_index|
57
+ found = find_in_path(base_path, pattern, priority + pattern_index)
53
58
  paths.concat(found)
54
59
  end
55
60
  end
@@ -3,7 +3,7 @@
3
3
  module Ace
4
4
  module Support
5
5
  module Config
6
- VERSION = '0.18.1'
6
+ VERSION = '0.18.3'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ace-support-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.18.1
4
+ version: 0.18.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-09-05 00:00:00.000000000 Z
10
+ date: 2026-10-20 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-fs