save checkpoint

This commit is contained in:
master
2026-02-14 09:11:48 +02:00
parent 9ca2de05df
commit e9aeadc040
1512 changed files with 30863 additions and 4728 deletions

View File

@@ -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 |