You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added — schema-driven regression suite (Phase 0 follow-up)
50 new regression tests across three new files that pin the public surface as a contract:
test/v017-regression-manifest.test.mjs (15 tests) — schema/MCP_TOOLS/EX/error_types/exports cross-reference. Catches drift where a new command is added without updating one of the four parallel registries. Every EX.* code must be referenced somewhere; every MCP_TOOLS entry must map to a known command verb; every error_types.retryable bit is the documented contract.
test/v017-regression-cli-smoke.test.mjs (20 tests) — stratos help <cmd> and stratos <cmd> --help exit cleanly for every command in KNOWN_COMMANDS. Subcommand routers reject unknown subcommands with EX.USAGE. stratos completion <shell> renders for bash/zsh/fish/powershell. stratos explain works for every EX value, the documented symbolic aliases, and common HTTP statuses. stratos halth produces a Levenshtein "did you mean health" suggestion.
test/v017-regression-output-matrix.test.mjs (15 tests) — every documented --output format (json, ndjson, jsonl alias, yaml, csv, table) renders against a mock server for both single-object and list bodies. --json is verified as a shorthand for --output json. --filter jq pipeline works on single-line expressions.
Fixed
stratos help <cmd> now works for every command in KNOWN_COMMANDS, not just the ~24 with curated entries in HELP_BY_COMMAND. Falls back to a synthesised stratos <cmd>\n <summary>\n Exit codes: <list> from COMMAND_META when no hand-tuned entry exists. Closes the "stratos help stats / audit / analytics / ask / search / upgrade / logout / stream / pipeline / passkey returns EX.USAGE" surface that the regression suite caught on first run.
--filter now handles all jq output shapes.applyFilter() parses each line of jq's stdout as an independent JSON value, so filters that produced pretty-printed multi-line single documents (e.g. {status, edge}) used to fail with "jq produced non-JSON output". Fixed by passing -c (compact) to jq — every line is now a complete JSON document, so single values, stream-style outputs (.[].id), and object projections ({a, b}) all work uniformly. Single-line expressions and per-line streams were already working; this just closes the multi-line gap. Discovered by the v017 regression-output-matrix suite on first run.
Bumps EXPECTED_SHA in install/install.{sh,ps1} to match the v0.0.17 bytes.