A compose-candidate answer's open input keeps its numbers as written when decoded
The answer's input is now the object the node-engine seat's contract names, so a decoder without UseNumber turns its numbers into float64 and a checker re-encoding it for the composer would hand on different digits. Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
This commit is contained in:
@@ -148,6 +148,7 @@ func checkComposeAnswer(a ComposeCandidateAnswer) error {
|
|||||||
func strictDecode(data []byte, v any, what string) error {
|
func strictDecode(data []byte, v any, what string) error {
|
||||||
d := json.NewDecoder(bytes.NewReader(data))
|
d := json.NewDecoder(bytes.NewReader(data))
|
||||||
d.DisallowUnknownFields()
|
d.DisallowUnknownFields()
|
||||||
|
d.UseNumber() // a number in an object the contract leaves open (the composition input) keeps its digits as written
|
||||||
if err := d.Decode(v); err != nil {
|
if err := d.Decode(v); err != nil {
|
||||||
return fmt.Errorf("delivery: %s does not fit its shape: %w", what, err)
|
return fmt.Errorf("delivery: %s does not fit its shape: %w", what, err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user