chore: update serde-saphyr to 1.0.1 - #304
Merged
mwiebe merged 2 commits intoAug 12, 2026
Merged
Conversation
mwiebe
enabled auto-merge (squash)
August 10, 2026 18:20
mwiebe
force-pushed
the
chore/update-serde-saphyr
branch
2 times, most recently
from
August 11, 2026 00:37
9388614 to
181c5b6
Compare
leongdl
approved these changes
Aug 11, 2026
Signed-off-by: Mark <399551+mwiebe@users.noreply.github.com>
Signed-off-by: Mark <399551+mwiebe@users.noreply.github.com>
mwiebe
force-pushed
the
chore/update-serde-saphyr
branch
from
August 12, 2026 16:38
181c5b6 to
250e7c5
Compare
crowecawcaw
approved these changes
Aug 12, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was the problem/requirement? (What/Why)
Update the workspace from
serde-saphyr0.0.29 to 1.0.1 while preservingOpenJD's field-specific YAML validation behavior.
The 1.0 release rejects YAML non-finite float literals such as
.nan,.inf,and
-.infby default when deserializing into a dynamically typed value. OpenJDfirst parses YAML into
serde_json::Value, then performs typed model validation.Rejecting these values during the first stage would replace OpenJD field paths
and model-specific diagnostics with a generic YAML decode error.
Review also identified two validation gaps:
shorthands such as
yes,no,on, andoffbecame booleans and were thenrejected by the task-map decoder.
nan,inf, orinfinityinto anon-finite
f64. This violated the finite-value invariant required by theresolved job model's equality, hashing, and serialization behavior.
What was the solution? (How)
serde-saphyr1.0.1.reject_non_finite_typeless_float: falsewhen model documents and CLIYAML task files are parsed into
serde_json::Value.words remain strings. The parser retains serde-saphyr's default depth budget
of 64; no weaker custom depth limit was added.
min/maxvalues to be valid finite numbers.resolved during job creation.
bounds, invalid numeric literals, and format strings resolving to non-finite
values.
The host requirement checks align template acceptance and job creation with the
openjd-model-for-pythonv0 implementation: invalid or non-finite literals arerejected during template validation, while dynamic format strings are accepted
as templates and checked after resolution.
The lockfile also reflects serde-saphyr's updated dependency graph, including
granit-parser1.0.1 and removal of transitive packages that are no longerneeded.
What is the impact of this change?
The workspace now uses serde-saphyr 1.0.1 while retaining field-specific OpenJD
validation. Invalid and non-finite host requirement bounds can no longer enter
the resolved job model. YAML
--tasksfiles treatyes,no,on, andoffas strings; explicit
trueandfalseremain booleans and are not valid taskparameter values.
Template parsing retains the existing 128-level OpenJD document depth limit.
CLI task parsing retains serde-saphyr's stricter default 64-level depth budget.
There are no public API changes.
How was this change tested?
cargo fmt --all -- --checkcargo clippy --all-features --all-targets --workspace -- -D warningscargo test --workspace --exclude openjd-sessionscargo test --workspaceThe non-sessions workspace run passed. The unfiltered workspace run passed all
model, CLI, expression, JS, snapshots, and dependency-related tests. Two
unrelated Windows sessions tests failed because this development host returned
a domain-unavailable error (
0x8007051F) for a nonexistent account where thetests require
ERROR_LOGON_FAILURE; the other 261 sessions integration testspassed.
The exact Rust 1.94.1 MSRV check was not run locally because that toolchain is
not installed on this host.
Was this change documented?
Yes. The CLI parameter parsing, model validation, and job creation specifications
now document strict YAML task boolean handling and the two-stage finite amount
validation.
affected.
Is this a breaking change?
No. This is a validation bug fix. It rejects only invalid numeric amount bounds
that the Python v0 implementation rejects and that cannot safely be represented
in a resolved Rust job.
Does this change impact security?
No new security exposure is introduced. Both YAML entry points retain bounded
nesting, and the resolved model now rejects malformed non-finite amount values.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.