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 +4 -4
- data/CHANGELOG.md +9 -384
- data/lib/ace/support/config/molecules/config_finder.rb +7 -2
- data/lib/ace/support/config/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 19409cf71fd217d5bee77f6a6ddaa91620e0279e2a26ee09a3c6cc3d96187ce1
|
|
4
|
+
data.tar.gz: 870724232f8e26c36574fc0da85529e70f88676495279c536a3e62e620c5b750
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
+
## [0.18.3] - 2026-10-20
|
|
122
12
|
|
|
123
13
|
### Fixed
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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
|
-
|
|
52
|
-
|
|
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
|
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.
|
|
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-
|
|
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
|