Conversation
Unknown internally tagged diagnostic values retain recursively ordered pairs captured directly from the deserializer stream. Known running-image agreements now decode nested evidence from that ordered representation instead of converting through serde_json::Value, so byte-faithfulness holds wherever an unknown value appears relative to a known ancestor. Duplicate discriminators are rejected during tag reading before a known-tag decoder can reach a mismatched unreachable arm; non-object bodies remain decode errors. ErrorBody.detail establishes the crate's deliberate use of an untyped Option<Value> region for wire compatibility. serde_json preserve_order is deliberately not enabled, so workspace-wide Value semantics remain unchanged. CONSUMER-IMPACT: receivers tolerate future tags in the six diagnostic object enums with recursively ordered body retention through known ancestors, duplicate-discriminator rejection, and unchanged known-tag behavior; subc-control 0.10.0, subc-client-rs 0.11.0, and subc-core 0.12.0.
There was a problem hiding this comment.
1 issue found across 7 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="crates/subc-control/src/lib.rs">
<violation number="1" location="crates/subc-control/src/lib.rs:719">
P2: When a known tagged value contains duplicate non-discriminator fields, `into_value()` drops all but one before validation, so malformed control payloads are silently accepted. Preserve duplicate detection, or reject duplicate members before converting to `serde_json::Value`.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| self.0 | ||
| .into_iter() | ||
| .map(|(key, value)| (key, value.into_value())) | ||
| .collect(), |
There was a problem hiding this comment.
P2: When a known tagged value contains duplicate non-discriminator fields, into_value() drops all but one before validation, so malformed control payloads are silently accepted. Preserve duplicate detection, or reject duplicate members before converting to serde_json::Value.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At crates/subc-control/src/lib.rs, line 719:
<comment>When a known tagged value contains duplicate non-discriminator fields, `into_value()` drops all but one before validation, so malformed control payloads are silently accepted. Preserve duplicate detection, or reject duplicate members before converting to `serde_json::Value`.</comment>
<file context>
@@ -570,25 +604,690 @@ pub enum StderrCaptureState {
+ self.0
+ .into_iter()
+ .map(|(key, value)| (key, value.into_value()))
+ .collect(),
+ )
+ }
</file context>
Contributor
Author
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.
CI twin for #82 (fork PRs run a partial matrix). Not for merge — #82 merges on green.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Runs the full CI matrix for #82; fork PRs get a partial run, so this twin is not for merge. Unknown tags in the six diagnostic control enums now decode to
Unknown { tag, body }withbodyretaining wire order, instead of failing the whole response.Bug Fixes
ModuleDeclaredProvenance,RunningImageAgreement,RunningImageEvidence,SupervisorRouteConsumer,StderrCaptureState, andStderrTailEntryround-trip unknown object bodies byte-for-byte without enablingserde_jsonpreserve_order.ckprovenance output escapes unknown tag and body text so control characters can't reach the terminal.subc-control0.11.0,subc-client-rs0.11.0, andsubc-core0.15.0.Written for commit f4ce8a8. Summary will update on new commits.