diff --git a/Documentation/Architecture/ExtractionManifest.json b/Documentation/Architecture/ExtractionManifest.json index 4d9844a..8047a0b 100644 --- a/Documentation/Architecture/ExtractionManifest.json +++ b/Documentation/Architecture/ExtractionManifest.json @@ -209,5 +209,8 @@ "framework_boundary": "Conditional CoreTransferable/UniformTypeIdentifiers plus a narrow explicit main-actor Apple PDF boundary using WebKit, CoreText, CoreGraphics and AppKit/UIKit paragraph styles. Core JSON imports none of these; no new root dependency.", "rtf": "Original bounded strict-token emitter; AppKit/UIKit native decoding only in tests and qualification consumers, not generation.", "pdf": "Original invocation-owned lifecycle, finite adapter accounting and visible-range pagination using Apple SDK APIs. PDFKit is independent qualification only; no third-party renderer adapted." - } + }, + "original_notes": [ + "1.4 C3 decimal magnitude, rational/quantization kernel, pull range and type-directed overloads are original Apache-2.0 code. The 738-case deterministic oracle uses Python integer/Fraction arithmetic; no jq/Rhoe arithmetic implementation was copied." + ] } diff --git a/Documentation/Architecture/Release1.4/Acceptance.json b/Documentation/Architecture/Release1.4/Acceptance.json index 269cb7d..495e0ee 100644 --- a/Documentation/Architecture/Release1.4/Acceptance.json +++ b/Documentation/Architecture/Release1.4/Acceptance.json @@ -1,7 +1,7 @@ { "schema": "swift-json-cli-acceptance/1", "prepared": "2026-10-14", - "implementation_status": "Foundation and pull query-core milestones; complete C0-C5 integration remains unqualified", + "implementation_status": "Foundation, query core and exact arithmetic milestones; C4/C5 integration remains unqualified", "requirements": [ { "id": "CL001", @@ -670,7 +670,7 @@ "title": "Exact add/subtract/multiply", "verification": "Carry/borrow/sign/zero/large integer cases against independent exact expectations.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, "fixture_ids": [ "Cartesian-add-order", @@ -678,6 +678,10 @@ "exact-decimal-add", "exact-borrow", "exact-multiply" + ], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" ] }, { @@ -686,9 +690,13 @@ "title": "Numeric admission and lexemes", "verification": "Computed values normalized with no false originalLexeme; untouched inputs preserve spelling.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, - "fixture_ids": [] + "fixture_ids": [], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" + ] }, { "id": "CL047", @@ -696,10 +704,14 @@ "title": "Terminating exact division", "verification": "Reduced denominators containing only2/5, large common factors and mixed signs.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, "fixture_ids": [ "terminating-division" + ], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" ] }, { @@ -708,10 +720,14 @@ "title": "Repeating division default", "verification": "1/3 and repeating values give language inexactDivision; no floating fallback.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, "fixture_ids": [ "repeating-division-error" + ], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" ] }, { @@ -720,12 +736,16 @@ "title": "Explicit scale/half-even", "verification": "Required option pair, decimal places, finite caps, signed ties and report rounding counts.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, "fixture_ids": [ "rounded-third", "half-even-ties", "scale-pair-required" + ], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" ] }, { @@ -734,11 +754,15 @@ "title": "Zero division and integral remainder", "verification": "Typed catchable domain errors; signed truncated remainder; fractional remainder rejected.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, "fixture_ids": [ "negative-remainder", "fractional-remainder-rejected" + ], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" ] }, { @@ -747,12 +771,16 @@ "title": "Exact numeric builtins", "verification": "abs/floor/ceil/trunc/round/range/add with negative and empty/domain cases; round ties away from zero.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, "fixture_ids": [ "round-away-from-zero", "range-negative-step", "range-zero-step" + ], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" ] }, { @@ -761,10 +789,14 @@ "title": "Exponent/growth preflight", "verification": "Large sparse exponent operations fail finite caps before dense allocation; exact zero shortcut allowed.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, "fixture_ids": [ "exponent-gap-cap" + ], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" ] }, { @@ -773,9 +805,13 @@ "title": "Numeric work and cancellation", "verification": "Charged GCD/division/carry inner loops; boundaries and checkpoint cancellation; terminal errors not catchable.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, - "fixture_ids": [] + "fixture_ids": [], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" + ] }, { "id": "CL054", @@ -783,9 +819,13 @@ "title": "32-bit arithmetic safety", "verification": "No Int/UInt64 negation/narrowing/product overflow traps; wasm32 kernel tests or explicit gate blocker.", "obligation": "mandatory", - "status": "not_run", + "status": "partial", "evidence_required": true, - "fixture_ids": [] + "fixture_ids": [], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" + ] }, { "id": "CL055", @@ -793,9 +833,13 @@ "title": "No Decimal/Double authority", "verification": "Source audit plus precision cases prove no foreign arithmetic/fallback authority.", "obligation": "mandatory", - "status": "not_run", + "status": "passed", "evidence_required": true, - "fixture_ids": [] + "fixture_ids": [], + "evidence": [ + "Documentation/Architecture/Release1.4/Arithmetic.md", + "Documentation/Architecture/Release1.4/Qualification.md" + ] }, { "id": "CL056", diff --git a/Documentation/Architecture/Release1.4/Arithmetic.md b/Documentation/Architecture/Release1.4/Arithmetic.md new file mode 100644 index 0000000..2ec8f69 --- /dev/null +++ b/Documentation/Architecture/Release1.4/Arithmetic.md @@ -0,0 +1,59 @@ +# Exact filter arithmetic + +C3 builds on query core 6e8f145 / draft PR #24. Original private code implements +base-ten unsigned working magnitudes plus native sign/coefficient/exponent values. +No Double, Float or Foundation Decimal is an arithmetic authority. Numeric binary +operators clear originalLexeme and normalize computed zero. Untouched selected +values preserve their admitted spelling; null's identity overload selects a value. + +Addition bounds exponent alignment before dense storage. Schoolbook multiplication +uses UInt16: digit product + stored digit + carry <=99; addition <=19. Subtraction +fits Int16. Long division maintains r