[PR #1135] [CLOSED] fix(artifacts): preserve keyed archive integer precision #2672

Closed
opened 2026-10-17 21:08:53 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1135
Author: @rudycelekli
Created: 10/8/2026
Status: ❌ Closed

Base: main ← Head: validation/keyed-archive-integer-precision-20261008


📝 Commits (2)

  • 240164a fix(artifacts): preserve keyed archive integer precision
  • 1ac3adf chore: refresh integer precision validation onto accepted main

📊 Changes

11 files changed (+911 additions, -3 deletions)

View changed files

📝 docs/native-investigation.md (+17 -0)
📝 scripts/verify/apple/keyed-archive.mjs (+21 -1)
📝 src/artifacts/apple/KeyedArchiveReader.ts (+27 -1)
➕ src/artifacts/apple/PlistNumberLiterals.ts (+140 -0)
➕ src/domain/apple/plistNumbers.ts (+89 -0)
📝 src/domain/propertyListKeys.ts (+1 -1)
➕ tests/boundary/filesystem/keyedArchiveIntegerAmbiguity.test.ts (+163 -0)
➕ tests/boundary/filesystem/keyedArchiveNativeIntegers.test.ts (+61 -0)
➕ tests/boundary/filesystem/keyedArchiveScalarIdentity.test.ts (+115 -0)
➕ tests/conformance/native/keyed-archive-integers.swift (+134 -0)
➕ tests/fixtures/keyedArchiveIntegers.ts (+143 -0)

📄 Description

Change

Preserve unsafe keyed-archive integer values as exact typed decimal values when their serialized integer identity is unambiguous. Retain decoded values with an explicit precision limitation for integer collisions, integer/real collisions or incomplete supplemental metadata. Integral real values remain numbers.

Project values after the archive graph is built, preserving node kinds, IDs, raw references, nil and pagination. Observe XML element types and bounded binary number markers without instantiating archived application classes. Archive digests continue to identify the original serialized bytes.

Verification

  • Frozen qualification: eight actual Foundation integer/real owners, eight portable collision/opaque-XML/binary-table owners and four scalar-identity owners at public filesystem and built CLI boundaries.
  • Original native BEFORE: four unsafe-integer failures and four safe/integral-real controls passed. Foundation producer, independent decimal/type oracle and numeric-presence checks qualified.
  • Complete tests-only BEFORE: 4 native failures/4 passing controls; 6 portable precision failures/2 passing acceptance controls; 2 scalar unsafe failures/2 passing integral-real controls. All frozen assertions are unchanged.
  • Qualified AFTER at signed DCO merge d435ee8: all 20 frozen owners passed; portable 12 had zero retries. Four JavaScript shards: 5,339 passed, 84 skipped, 0 failed. Native Apple neighboring suites and corrected process tests passed.
  • All 22 required CI jobs completed successfully on that exact d435ee8 head, including native Apple, Windows and all package platforms. The verifier cleanup/report conflict is now resolved on signed DCO head 240164ac rebased onto accepted main c3136064. The numeric invocation and frozen assertions are unchanged; cleanup is awaited before final reporting. Refreshed full CI completed with 18 passing jobs and four failed package-platform jobs. All 20 frozen owners passed (eight native Foundation cases and twelve portable cases); JavaScript totals were 5,404 passed, 84 skipped and zero failed. Apple native, static checks, docs, Windows and coverage passed. The four package jobs failed because the accepted-base verifier still invoked deleted tests/fixtures/bridgeSearchProbe.py; the accepted upstream correction needs integration and fresh requalification. This is not full CI green. The qualified results above belong to the unchanged ownfork workflows.

The first source AFTER run passed all 20 owners but hit a later existing ENOENT from the renamed process test path. The accepted correction remains in the refreshed branch. The prior signed two-parent head d435ee8 is retained as historical proof; the current head is a signed single-parent rebase preserving the reviewed source and frozen test blobs. No workflow change remains in the candidate-only upstream diff.

Real Hopper/Ghidra verification was not performed; the native producer verification covers Foundation archives.

AI-assisted implementation and review. Signed commits carry DCO sign-off. No archived application class or target application is executed by this change.

Related open #1101 changes the plist helper return API. If it is accepted first, the shared decoder needs explicit integration and native requalification. This PR includes its independently qualified precision correction against its qualified accepted-main base; it does not include that unmerged implementation.

Accepted main refresh (2026-10-08)

Current head 1ac3adfcb79402ee47b6bea318684f17deea3a40 is a verified signed DCO two-parent merge of 240164ac and accepted main 82626c44. It includes the maintainer-accepted package verifier repair 826583dd and preserves all four numeric source files, all five frozen fixture/test files, and the native verifier byte for byte. The current accepted-main comparison remains the same eleven candidate paths. Full unchanged own-fork CI on this exact head passed all 22 jobs, including all four package platforms. All twenty frozen precision owners pass (eight Foundation-produced native cases and twelve portable filesystem/compiled CLI cases); the merged report records 5,434 passed tests, 84 skipped and zero failures. The accepted cleanup ordering remains intact. Upstream CI has 21 successful jobs and one Apple-lane timeout in the unchanged nativeSignatureCli.test.ts case (30 seconds); the same signature suite passes all 29 cases in the own-fork run. The attempted upstream failed-job rerun requires repository admin rights and was denied without changes. Upstream CI is not green; the previous 240164ac result remains 18 successful jobs and four baseline-attributed package failures, with all twenty precision owners passing.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/1135 **Author:** [@rudycelekli](https://github.com/rudycelekli) **Created:** 10/8/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `validation/keyed-archive-integer-precision-20261008` --- ### 📝 Commits (2) - [`240164a`](https://github.com/morluto/rea/commit/240164ac123f45fe0beb720cb2816ff355198ca2) fix(artifacts): preserve keyed archive integer precision - [`1ac3adf`](https://github.com/morluto/rea/commit/1ac3adfcb79402ee47b6bea318684f17deea3a40) chore: refresh integer precision validation onto accepted main ### 📊 Changes **11 files changed** (+911 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `docs/native-investigation.md` (+17 -0) 📝 `scripts/verify/apple/keyed-archive.mjs` (+21 -1) 📝 `src/artifacts/apple/KeyedArchiveReader.ts` (+27 -1) ➕ `src/artifacts/apple/PlistNumberLiterals.ts` (+140 -0) ➕ `src/domain/apple/plistNumbers.ts` (+89 -0) 📝 `src/domain/propertyListKeys.ts` (+1 -1) ➕ `tests/boundary/filesystem/keyedArchiveIntegerAmbiguity.test.ts` (+163 -0) ➕ `tests/boundary/filesystem/keyedArchiveNativeIntegers.test.ts` (+61 -0) ➕ `tests/boundary/filesystem/keyedArchiveScalarIdentity.test.ts` (+115 -0) ➕ `tests/conformance/native/keyed-archive-integers.swift` (+134 -0) ➕ `tests/fixtures/keyedArchiveIntegers.ts` (+143 -0) </details> ### 📄 Description ## Change Preserve unsafe keyed-archive integer values as exact typed decimal values when their serialized integer identity is unambiguous. Retain decoded values with an explicit precision limitation for integer collisions, integer/real collisions or incomplete supplemental metadata. Integral real values remain numbers. Project values after the archive graph is built, preserving node kinds, IDs, raw references, nil and pagination. Observe XML element types and bounded binary number markers without instantiating archived application classes. Archive digests continue to identify the original serialized bytes. ## Verification - Frozen qualification: eight actual Foundation integer/real owners, eight portable collision/opaque-XML/binary-table owners and four scalar-identity owners at public filesystem and built CLI boundaries. - [Original native BEFORE](https://github.com/rudycelekli/rea/actions/runs/37817859986): four unsafe-integer failures and four safe/integral-real controls passed. Foundation producer, independent decimal/type oracle and numeric-presence checks qualified. - [Complete tests-only BEFORE](https://github.com/rudycelekli/rea/actions/runs/37824473845): 4 native failures/4 passing controls; 6 portable precision failures/2 passing acceptance controls; 2 scalar unsafe failures/2 passing integral-real controls. All frozen assertions are unchanged. - [Qualified AFTER](https://github.com/rudycelekli/rea/actions/runs/37834778325) at signed DCO merge `d435ee8`: all 20 frozen owners passed; portable 12 had zero retries. Four JavaScript shards: 5,339 passed, 84 skipped, 0 failed. Native Apple neighboring suites and corrected process tests passed. - All 22 required CI jobs completed successfully on that exact `d435ee8` head, including native Apple, Windows and all package platforms. The verifier cleanup/report conflict is now resolved on signed DCO head `240164ac` rebased onto accepted main `c3136064`. The numeric invocation and frozen assertions are unchanged; cleanup is awaited before final reporting. [Refreshed full CI](https://github.com/rudycelekli/rea/actions/runs/37850165093) completed with 18 passing jobs and four failed package-platform jobs. All 20 frozen owners passed (eight native Foundation cases and twelve portable cases); JavaScript totals were 5,404 passed, 84 skipped and zero failed. Apple native, static checks, docs, Windows and coverage passed. The four package jobs failed because the accepted-base verifier still invoked deleted `tests/fixtures/bridgeSearchProbe.py`; the accepted upstream correction needs integration and fresh requalification. This is not full CI green. The qualified results above belong to the unchanged ownfork workflows. The first source AFTER run passed all 20 owners but hit a later existing ENOENT from the renamed process test path. The accepted correction remains in the refreshed branch. The prior signed two-parent head `d435ee8` is retained as historical proof; the current head is a signed single-parent rebase preserving the reviewed source and frozen test blobs. No workflow change remains in the candidate-only upstream diff. Real Hopper/Ghidra verification was not performed; the native producer verification covers Foundation archives. AI-assisted implementation and review. Signed commits carry DCO sign-off. No archived application class or target application is executed by this change. Related open #1101 changes the plist helper return API. If it is accepted first, the shared decoder needs explicit integration and native requalification. This PR includes its independently qualified precision correction against its qualified accepted-main base; it does not include that unmerged implementation. ### Accepted main refresh (2026-10-08) Current head `1ac3adfcb79402ee47b6bea318684f17deea3a40` is a verified signed DCO two-parent merge of `240164ac` and accepted main `82626c44`. It includes the maintainer-accepted package verifier repair `826583dd` and preserves all four numeric source files, all five frozen fixture/test files, and the native verifier byte for byte. The current accepted-main comparison remains the same eleven candidate paths. [Full unchanged own-fork CI](https://github.com/rudycelekli/rea/actions/runs/37852444616) on this exact head passed all 22 jobs, including all four package platforms. All twenty frozen precision owners pass (eight Foundation-produced native cases and twelve portable filesystem/compiled CLI cases); the merged report records 5,434 passed tests, 84 skipped and zero failures. The accepted cleanup ordering remains intact. [Upstream CI](https://github.com/morluto/rea/actions/runs/37852443758) has 21 successful jobs and one Apple-lane timeout in the unchanged `nativeSignatureCli.test.ts` case (30 seconds); the same signature suite passes all 29 cases in the own-fork run. The attempted upstream failed-job rerun requires repository admin rights and was denied without changes. Upstream CI is not green; the previous `240164ac` result remains 18 successful jobs and four baseline-attributed package failures, with all twenty precision owners passing. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:08:53 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#2672
No description provided.