{"data":{"status":"fail","dialect":{"delimiter":",","quote":"\"","header":true},"rows":2,"columns":[{"name":"zip","type":"identifier","cells":2,"unquotedEmpty":0,"quotedEmpty":0,"nullToken":0},{"name":"account","type":"identifier","cells":2,"unquotedEmpty":0,"quotedEmpty":0,"nullToken":0},{"name":"qty","type":"integer","cells":2,"unquotedEmpty":0,"quotedEmpty":0,"nullToken":0},{"name":"code","type":"string","cells":2,"unquotedEmpty":0,"quotedEmpty":0,"nullToken":0},{"name":"note","type":"string","cells":2,"unquotedEmpty":0,"quotedEmpty":0,"nullToken":0}],"roundTrip":{"stable":true,"firstDifference":null,"reserializedBytes":95},"findings":[{"rule":"spreadsheet-leading-zero-strip","severity":"error","row":0,"column":"zip","line":2,"value":"02134","detail":"all-digit text with leading zeros: Excel reads it as a number and drops the zeros","byteOffset":26},{"rule":"spreadsheet-15-digit-truncation","severity":"error","row":0,"column":"account","line":2,"value":"1234567890123456","detail":"16 digits; Excel stores 15 significant digits and zeroes the rest","byteOffset":32},{"rule":"spreadsheet-scientific-coercion","severity":"error","row":0,"column":"code","line":2,"value":"1E5","detail":"reads as a number in exponent notation (\"1E5\" becomes 100000)","byteOffset":51},{"rule":"formula-injection","severity":"error","row":1,"column":"note","line":3,"value":"=cmd|' /C calc'!A0","detail":"cell starts with \"=\": a spreadsheet may evaluate it as a formula (OWASP CSV Injection)","byteOffset":73}],"errorCount":4,"warningCount":0,"witnesses":[{"ruleId":"spreadsheet-leading-zero-strip","detail":"all-digit text with leading zeros: Excel reads it as a number and drops the zeros (line 2)","path":"/rows/0/zip","offset":26,"actual":"02134"},{"ruleId":"spreadsheet-15-digit-truncation","detail":"16 digits; Excel stores 15 significant digits and zeroes the rest (line 2)","path":"/rows/0/account","offset":32,"actual":"1234567890123456"},{"ruleId":"spreadsheet-scientific-coercion","detail":"reads as a number in exponent notation (\"1E5\" becomes 100000) (line 2)","path":"/rows/0/code","offset":51,"actual":"1E5"},{"ruleId":"formula-injection","detail":"cell starts with \"=\": a spreadsheet may evaluate it as a formula (OWASP CSV Injection) (line 3)","path":"/rows/1/note","offset":73,"actual":"=cmd|' /C calc'!A0"}],"versions":{"grammar":"RFC 4180 (https://www.rfc-editor.org/rfc/rfc4180), doubled-quote escape","excel-limits":"Microsoft, Excel specifications and limits (https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3), fetched 2026-11-04: number precision 15 digits; 32,767 characters per cell; 1,048,576 rows","formula-injection":"OWASP CSV Injection (https://owasp.org/www-community/attacks/CSV_Injection), fetched 2026-11-04: cells must not begin with = + - @ tab (0x09) CR (0x0D) LF (0x0A) or full-width variants","double-precision":"IEEE 754 binary64; integers exact to 2^53 (ECMA-262 Number.MAX_SAFE_INTEGER 2^53 - 1)","asOf":"2026-11-04"},"limits":["Spreadsheet behavior is modeled from the documented limits and the coercion families listed above (numbers, scientific notation, dates, times, booleans, percentages, formulas); locale-dependent date orders are flagged, not resolved.","Reports at most 200 findings; counts are exact.","A leading + or - on a cell in an integer or decimal column is treated as a signed number, not a formula."],"deterministic":true},"_provenance":{"version":"writerslogic-provenance/1","issuer":"did:web:agents.writerslogic.com","verify":{"endpoint":"POST /api/v1/verify-provenance","did":"did:web:agents.writerslogic.com"},"manifest":{"format":"application/json","instance_id":"xmp:iid:830d493c-1806-4c07-a6c4-5b13d5308074","claim_generator_info":[{"name":"WritersLogic x402 Agent Hub","version":"2.0.0"}],"title":"Will this CSV survive a typed round trip and a spreadsheet: leading zeros, big ids, dates, formulas, empty vs null","assertions":[{"label":"c2pa.actions.v2","data":{"actions":[{"action":"c2pa.created","when":"2026-11-06T01:30:22.707Z","softwareAgent":{"name":"writerslogic-agent-hub/csv-roundtrip","version":"2.0.0"},"digitalSourceType":"http://cv.iptc.org/newscodes/digitalsourcetype/algorithmicMedia","parameters":{"endpoint":"POST /api/v1/csv-roundtrip","inputDigest":{"alg":"sha256","hash":"c22275771d42dc51050e91f55348ecb04311820b8f4e62c4a50cb56efd6b5421","canonicalization":"JCS"}}}]}},{"label":"c2pa.hash.data","data":{"alg":"sha256","hash":"a0d6138e15f2f0fa136907dd8eceaf2016d2bc0801747a7c61839c6d465a8668","name":"jcs-canonical-json(data)"}}]},"credential":{"@context":["https://www.w3.org/ns/credentials/v2"],"id":"urn:uuid:6dca0d9e-4392-4ccd-a25e-bc8b4ce2dda6","type":["VerifiableCredential","AgentOutputCredential"],"issuer":"did:web:agents.writerslogic.com","validFrom":"2026-11-06T01:30:22.707Z","credentialSubject":{"id":"urn:sha256:a0d6138e15f2f0fa136907dd8eceaf2016d2bc0801747a7c61839c6d465a8668","agent":"csv-roundtrip","endpoint":"POST /api/v1/csv-roundtrip","outputDigest":{"alg":"sha256","value":"a0d6138e15f2f0fa136907dd8eceaf2016d2bc0801747a7c61839c6d465a8668","canonicalization":"JCS"},"inputDigest":{"alg":"sha256","value":"c22275771d42dc51050e91f55348ecb04311820b8f4e62c4a50cb56efd6b5421","canonicalization":"JCS"},"manifestDigest":{"alg":"sha256","value":"440890c46d22877607c1626a823f522a1c8dc05a61b7d3eeeeb2c669c1512817","canonicalization":"JCS"},"ingredients":[],"payment":{"scheme":"api-key","network":"eip155:8453","payer":"sample"}},"proof":{"type":"DataIntegrityProof","cryptosuite":"eddsa-jcs-2022","created":"2026-11-06T01:30:22.707Z","verificationMethod":"did:web:agents.writerslogic.com#key-1","proofPurpose":"assertionMethod","proofValue":"z5qjuj49ARnszUJ4t37zfB6eEymkT1jdumpoxC1WmDt3jqYezUGKuJA3BBovjaywLZjjmy4DSGxhiyLnv4UmqBpzo"}},"ethSignature":{"type":"EIP-191","signer":"did:pkh:eip155:8453:0x3DBd42560cA7a7E448A2c7DfC9E785526189411f","address":"0x3DBd42560cA7a7E448A2c7DfC9E785526189411f","message":"writerslogic-provenance:2ed90a4060af238eb55fce06ec40970f2302dbdd523bc89f6b00bbe41af0a4d3","signature":"0xec104ea1c8b6ea137e4d351a6d4ddf5b14f493e30f48605ce7e37dfb082d15d156431a0ef6a23f13e68ded5d9be692056d2b9f30415e78c6d3dfe41d3f0c7a991c"}}}