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