align pql client to the 1.5 exit-code contract; unvendor its skill
test / unit + widget + golden + a11y (push) Failing after 28s
test / integration_test (xvfb) (push) Has been skipped
test / bundle smoke (xvfb 5s) (push) Has been skipped
test / daemon subprocess + web WASM smoke (push) Has been skipped
test / dart doc (lib API) (push) Failing after 31s

pql 1.5 returns exit 0 with an empty `[]` for zero matches (older pql
used exit 2), so the wrapper's "exit 2 = empty, not an error" carve-out
is obsolete — and risky, since a future exit 2 could mean a real error.
Any non-zero exit is now an error.

Also removed the repo's vendored .claude/skills/pql: it's generated by
`pql init` (which CONTRIBUTING already lists in setup, installing at user
scope), so a committed snapshot just shadows the current global skill
with stale content and drifts on every pql bump — this copy was a whole
version behind. Other vendored skills are clide-owned; pql's is pql's.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-25 11:50:48 +02:00
co-authored by Claude Opus 4.7
parent 6e988ca816
commit 1fb08afa30
2 changed files with 3 additions and 195 deletions
+3 -2
View File
@@ -178,8 +178,9 @@ class PqlClient {
);
}
final stderr = (r.stderr as String).trim();
// Exit 2 = zero matches — valid empty result, not an error.
if (r.exitCode != 0 && r.exitCode != 2) {
// pql 1.5+ returns exit 0 with an empty `[]` for zero matches, so any
// non-zero exit is a real error (older pql used exit 2 for empty).
if (r.exitCode != 0) {
throw PqlException(
'pql ${args.first} failed',
exitCode: r.exitCode,