ace-handbook 0.29.1 → 0.30.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 +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/ace/handbook/organisms/status_collector.rb +29 -11
- data/lib/ace/handbook/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: b94315e917fb596807bf3d96a19c8ae761c1072a123db529f594cb62bc04a067
|
|
4
|
+
data.tar.gz: 8ef249b59bba855eb0049d29d55214fdc53617b7087e20b508eaaf378444082c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 79af4b6242830f25a4db6e81433f32b3737a477425b3f2c4c9c62dfae58bb6ea770433a9ccf208fb886d614eb9840f72fb50be03159b83564e865a2e6d992516
|
|
7
|
+
data.tar.gz: e0c1db8530a0b95f2ee7bccc8b3c115e88c8fdcdcfc3fd2f086d4aa709e3c3647833c337d99ef44dd10e24e54c77e0f5f1780f47f3ebb29e6e140291442c25ad
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.30.0] - 2026-07-15
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Added agents projection coverage fields to `ace-handbook status` JSON and table output, including projection policy,
|
|
14
|
+
excluded skill count, and the reason for curated projections.
|
|
15
|
+
|
|
16
|
+
### Technical
|
|
17
|
+
- Added fast and E2E regression coverage for the neutral agents projection status contract.
|
|
18
|
+
|
|
10
19
|
## [0.29.1] - 2026-06-30
|
|
11
20
|
|
|
12
21
|
### Fixed
|
|
@@ -35,6 +35,9 @@ module Ace
|
|
|
35
35
|
entry.fetch("outdated").to_s,
|
|
36
36
|
entry.fetch("missing").to_s,
|
|
37
37
|
entry.fetch("extra").to_s,
|
|
38
|
+
entry.fetch("projection_policy", "").to_s,
|
|
39
|
+
entry.fetch("excluded_count", "").to_s,
|
|
40
|
+
entry.fetch("policy_reason", "").to_s,
|
|
38
41
|
entry.fetch("relative_output_dir")
|
|
39
42
|
]
|
|
40
43
|
end
|
|
@@ -48,19 +51,21 @@ module Ace
|
|
|
48
51
|
["IN_SYNC", *rows.map { |row| row[5] }].map(&:length).max,
|
|
49
52
|
["OUTDATED", *rows.map { |row| row[6] }].map(&:length).max,
|
|
50
53
|
["MISSING", *rows.map { |row| row[7] }].map(&:length).max,
|
|
51
|
-
["EXTRA", *rows.map { |row| row[8] }].map(&:length).max
|
|
54
|
+
["EXTRA", *rows.map { |row| row[8] }].map(&:length).max,
|
|
55
|
+
["POLICY", *rows.map { |row| row[9] }].map(&:length).max,
|
|
56
|
+
["EXCLUDED", *rows.map { |row| row[10] }].map(&:length).max,
|
|
57
|
+
["REASON", *rows.map { |row| row[11] }].map(&:length).max,
|
|
58
|
+
["PATH", *rows.map { |row| row[12] }].map(&:length).max
|
|
52
59
|
]
|
|
53
60
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
)
|
|
58
|
-
lines = rows.map do |provider, enabled, type, expected, installed, in_sync, outdated, missing, extra, path|
|
|
59
|
-
format(
|
|
60
|
-
"%-#{widths[0]}s %-#{widths[1]}s %-#{widths[2]}s %#{widths[3]}s %#{widths[4]}s %#{widths[5]}s %#{widths[6]}s %#{widths[7]}s %#{widths[8]}s %s",
|
|
61
|
-
provider, enabled, type, expected, installed, in_sync, outdated, missing, extra, path
|
|
62
|
-
)
|
|
61
|
+
right_aligned = (3..8).to_a + [10]
|
|
62
|
+
formats = widths.each_index.map do |index|
|
|
63
|
+
right_aligned.include?(index) ? "%#{widths[index]}s" : "%-#{widths[index]}s"
|
|
63
64
|
end
|
|
65
|
+
table_format = formats.join(" ")
|
|
66
|
+
headers = %w[PROVIDER ENABLED TYPE EXPECTED INSTALLED IN_SYNC OUTDATED MISSING EXTRA POLICY EXCLUDED REASON PATH]
|
|
67
|
+
header = format(table_format, *headers)
|
|
68
|
+
lines = rows.map { |row| format(table_format, *row) }
|
|
64
69
|
|
|
65
70
|
(summary_lines + ["", header] + lines).join("\n")
|
|
66
71
|
end
|
|
@@ -102,7 +107,7 @@ module Ace
|
|
|
102
107
|
end
|
|
103
108
|
end
|
|
104
109
|
|
|
105
|
-
{
|
|
110
|
+
status = {
|
|
106
111
|
"provider" => provider,
|
|
107
112
|
"enabled" => provider_enabled?(provider),
|
|
108
113
|
"relative_output_dir" => relative_output_dir,
|
|
@@ -116,6 +121,19 @@ module Ace
|
|
|
116
121
|
"missing" => (expected.keys - installed_names).size,
|
|
117
122
|
"extra" => extra
|
|
118
123
|
}
|
|
124
|
+
|
|
125
|
+
status.merge!(projection_coverage(skills, expected)) if provider == "agents"
|
|
126
|
+
status
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def projection_coverage(skills, expected)
|
|
130
|
+
excluded_count = skills.size - expected.size
|
|
131
|
+
|
|
132
|
+
{
|
|
133
|
+
"projection_policy" => excluded_count.zero? ? "complete" : "curated",
|
|
134
|
+
"excluded_count" => excluded_count,
|
|
135
|
+
"policy_reason" => excluded_count.zero? ? nil : "provider-specific targeting"
|
|
136
|
+
}
|
|
119
137
|
end
|
|
120
138
|
|
|
121
139
|
def expected_projection_map(provider, skills)
|
data/lib/ace/handbook/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ace-handbook
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.30.0
|
|
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-07-15 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: ace-support-config
|