save checkpoint
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# RFC 8785 Canonical JSON Serialization
|
||||
|
||||
## Module
|
||||
Attestor
|
||||
|
||||
## Status
|
||||
VERIFIED
|
||||
|
||||
## Description
|
||||
Full RFC 8785 JSON canonicalizer with decimal point, number serialization, string normalization, and write method implementations. Verified by determinism property-based tests and canonical JSON test suite.
|
||||
|
||||
## Implementation Details
|
||||
- **RFC 8785 JSON Canonicalizer**: `src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Json/Rfc8785JsonCanonicalizer.cs` -- main canonicalizer implementing RFC 8785 (JSON Canonicalization Scheme / JCS).
|
||||
- **Decimal Point Handling**: `Json/Rfc8785JsonCanonicalizer.DecimalPoint.cs` -- handles decimal point normalization per RFC 8785 rules (no trailing zeros, no unnecessary decimal points).
|
||||
- **Number Serialization**: `Json/Rfc8785JsonCanonicalizer.NumberSerialization.cs` -- deterministic number serialization (IEEE 754 compliance, consistent exponent notation).
|
||||
- **String Normalization**: `Json/Rfc8785JsonCanonicalizer.StringNormalization.cs` -- Unicode normalization, escape sequence handling, and surrogate pair processing per RFC 8785.
|
||||
- **Write Methods**: `Json/Rfc8785JsonCanonicalizer.WriteMethods.cs` -- deterministic JSON writing (sorted object keys, no whitespace, consistent separators).
|
||||
- **Schema Validation Result**: `Json/SchemaValidationResult.cs` -- result of validating canonicalized JSON against a schema.
|
||||
- **Schema Validation Error**: `Json/SchemaValidationError.cs` -- individual validation error.
|
||||
- **Content-Addressed ID Generator**: `Identifiers/ContentAddressedIdGenerator.cs` -- uses canonicalized JSON for deterministic SHA-256 ID generation.
|
||||
- **Tests**: `__Tests/StellaOps.Attestor.ProofChain.Tests/Rfc8785JsonCanonicalizerTests.cs`, `DeterminismTests.cs`
|
||||
|
||||
## E2E Test Plan
|
||||
- [ ] Canonicalize a JSON object with unsorted keys and verify output has lexicographically sorted keys
|
||||
- [ ] Canonicalize numbers with trailing zeros (e.g., 1.0000) and verify output removes unnecessary precision per RFC 8785
|
||||
- [ ] Canonicalize strings with Unicode characters and verify proper Unicode normalization and escape sequences
|
||||
- [ ] Canonicalize the same JSON object twice and verify byte-identical output
|
||||
- [ ] Canonicalize a JSON object with different whitespace formatting and verify identical canonicalized output
|
||||
- [ ] Canonicalize a number requiring scientific notation and verify consistent exponent representation
|
||||
- [ ] Generate a content-addressed ID from canonicalized JSON and verify it is deterministic across runs
|
||||
- [ ] Run the RFC 8785 test vectors (from the specification) and verify all pass
|
||||
|
||||
## Verification
|
||||
|
||||
| Check | Result |
|
||||
|-------|--------|
|
||||
| Tier 0 - Source Verification | PASS |
|
||||
| Tier 1 - Build + Code Review | PASS |
|
||||
| Tier 2 - Behavioral Verification | PASS |
|
||||
| Verified Date | 2026-02-13 |
|
||||
| Run ID | run-001 |
|
||||
Reference in New Issue
Block a user