Commit 527b7d0
Ovtcharov
fix(skills): validate every clause of a compound version range
The parse-time gate probed a range with `matches("0.0.0", spec)`, and `matches`
is `all()` over a generator — it short-circuits on the first clause the probe
version fails. Any real lower bound fails against `0.0.0`, so in
`">=1.2.0, 1.2.x"` the unreadable second clause was never parsed and the
manifest was accepted.
That reintroduced the machine-dependent verdict the gate exists to remove: the
bad clause then surfaced at load only where the skill was installed at a version
passing clause one, and elsewhere was misreported as an ordinary "does not
satisfy the pin". `RemoteSkill.resolve` had the same hole.
Walk the clauses directly instead of probing through `matches`, leaving match
semantics untouched everywhere else.
Also corrects the `version`/`required` rows of the skill-format field table,
which still described a pin as recorded-not-resolved twenty lines above the note
saying it is enforced, and asserts the skip reason in the optional-violation
test rather than only that the skill was skipped.1 parent a8f1b51 commit 527b7d0
4 files changed
Lines changed: 50 additions & 5 deletions
File tree
- docs/plans
- src/gaia/skills
- tests/unit
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
195 | 195 | | |
196 | 196 | | |
197 | 197 | | |
198 | | - | |
199 | | - | |
| 198 | + | |
| 199 | + | |
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
161 | | - | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
162 | 170 | | |
163 | 171 | | |
164 | 172 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
604 | 605 | | |
605 | 606 | | |
606 | 607 | | |
607 | | - | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
608 | 611 | | |
609 | 612 | | |
610 | 613 | | |
611 | 614 | | |
612 | 615 | | |
613 | 616 | | |
614 | | - | |
| 617 | + | |
| 618 | + | |
615 | 619 | | |
616 | 620 | | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
617 | 628 | | |
618 | 629 | | |
619 | 630 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| 146 | + | |
| 147 | + | |
146 | 148 | | |
147 | 149 | | |
148 | 150 | | |
149 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
150 | 176 | | |
151 | 177 | | |
152 | 178 | | |
| |||
0 commit comments