v0.33.0 Migration Guide
The first Darwin CPU sample is unmeasured
The Darwin sampler needs two cumulative process-CPU readings to calculate
utilization over an interval. Its first sample now reports
cpu_measured: false instead of treating the process-lifetime average as
current load.
Consumers that make admission decisions from capacity samples must ignore CPU
load while cpu_measured is false and wait for a later measured sample. No
change is required for consumers that already treat an unmeasured dimension as
unavailable.
pipeline list is an index
v0.32.0 made every list verb NDJSON, which fixed the shape. This fixes what each line carries.
sparkwing pipeline list -o json now emits four fields per pipeline:
| Field | Meaning |
|---|---|
name | the pipeline, e.g. release |
short | its one-line summary; the first line of help when no short is declared |
entrypoint | the Go method that runs it |
triggers | what auto-runs it, empty for manual-only |
help, args, examples, env_vars, risks, and risks_by_step are
gone from the listing. They are exactly what sparkwing pipeline describe --name <name> prints, from the same registry, so the listing
was spending a caller's context on a second copy of a detail view it
already had. A five-pipeline catalog was 2,734 bytes and is now 1,727,
and the ratio grows with the length of the help text.
sparkwing pipeline discover --query <q> -o json streams the same index
plus its score.
Before
sparkwing pipeline list -o json | jq -r '.help'
After
sparkwing pipeline list -o json | jq -r '.short' # choose
sparkwing pipeline describe --name release -o json | jq -r '.help' # then read
A pipeline that declared no short used to show its full help in the
help field and nothing in short; it now summarizes as the first line
of that help, so no line in the listing is blank.
pipeline sparks list is a stream
It was a pretty-printed object wrapping an array:
{
"libraries": [],
"sparkwing_dir": "/path/to/.sparkwing"
}
head -1 returned {, which parses as nothing. It is NDJSON now, led
by the one fact that is not a library's:
{"kind":"summary","library_count":2,"sparkwing_dir":"/path/to/.sparkwing"}
{"kind":"library","name":"sparks-core","source":"github.com/...","declared":"latest","resolved":"v0.4.1"}
Read the kind field rather than counting lines. Single-object verbs
(pipeline describe, sparks vendor, runs status, version, info)
are unchanged, as in v0.32.0.
Before
sparkwing pipeline sparks list -o json | jq -r '.libraries[].name'
After
sparkwing pipeline sparks list -o json | jq -r 'select(.kind=="library") | .name'
configure profiles list has a machine-readable mode
It printed a table and nothing else — no -o flag at all — so a script
or an agent had to parse columns. It now takes -o pretty|json|plain
like every other list verb. JSON is one profile per line:
{"name":"prod","controller":"https://api.example.dev","logs":"controller://prod","token":"swu_...********"}
The token is redacted in every mode, including JSON. A machine-readable
listing is the shape most likely to end up in a log, and a secret that
leaves the process once has left it; configure profiles show --show-token remains the one way to print the raw value.
This is additive: the default output is the same table it always printed.