Expand description
#492: strict create-boundary parsing.
The manifest / schedule types used to carry
#[serde(deny_unknown_fields)] as an operator typo guard — but
the same types are READ fleet-wide (agents decode them from
BUCKET_JOBS / BUCKET_SCHEDULES and inside live Commands), so
any field a newer backend added made every older agent reject the
whole object during a gradual fleet upgrade. CheckHint’s fleet
field (#290 PR-E) did exactly that to pre-PR-E agents.
The split: read paths are tolerant (plain serde, unknown fields
ignored — the wire rule is “new fields always have defaults”),
and the WRITE boundaries (kanade job/schedule create, the
backend’s POST body extractor) call these helpers, which collect
every ignored path via serde_ignored and reject the payload
with the offending key paths spelled out — strictly better
diagnostics than deny_unknown_fields’ single-key error.
Functions§
- from_
json_ slice - Parse JSON bytes, rejecting any key the target type doesn’t know.
- from_
yaml_ str - Parse YAML, rejecting any key the target type doesn’t know. Errors are human-readable strings ready for CLI / HTTP 400 use.