Skip to main content

Module strict

Module strict 

Source
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.