diff --git a/CHANGELOG.md b/CHANGELOG.md index d325fba..88e7170 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,8 @@ ordered members and exact collision confirmation remain authoritative. - macOS/iOS 27 deployment minima and corrected schema bundle layout; public SDK/simulator and disk-backed SwiftData consumers. Full physical-device - qualification remains a release gate. No tag/publication follows this change. + qualification follows the approved 1.1 matrix: physical iPhone required, iPad + SDK/simulator acceptance with physical iPad deferred. No tag/publication follows. - Correct native ISO-8601 calendar fields and strict Base64 unused padding bits. See API migration guidance; no limits/profile weights or dependencies raised. - Release failed Base64 scratch from logical retention while preserving consumed diff --git a/Documentation/Architecture/Release1.1/Decisions.md b/Documentation/Architecture/Release1.1/Decisions.md index 7356b70..39517b5 100644 --- a/Documentation/Architecture/Release1.1/Decisions.md +++ b/Documentation/Architecture/Release1.1/Decisions.md @@ -14,8 +14,11 @@ The scalar path and checked Sendable immutable sharing remain. No measured mobil crossover/energy evidence supports shipping a new accelerator, and the selected wide-object change supplies the demonstrated workload benefit. This is a scope decision, not completed SIMD/parallel qualification. E11/E12 remain deferred. -Physical iPad evidence blocks full R5/R8 readiness; simulator availability is not -physical qualification. The three protected Native check names remain unchanged. +The maintainer's 2026-10-12 decision accepts SDK and iPad simulator qualification +for 1.1.0. Physical iPad execution is deferred and does not block R5/R8; simulator +results remain distinct from physical qualification. Physical iPhone evidence and +the three protected Native check names remain required. The exact amended scope +is [QualificationPolicy.json](QualificationPolicy.json). # R0 architecture decisions diff --git a/Documentation/Architecture/Release1.1/IntegratedPerformance.md b/Documentation/Architecture/Release1.1/IntegratedPerformance.md index 98e50da..ba48326 100644 --- a/Documentation/Architecture/Release1.1/IntegratedPerformance.md +++ b/Documentation/Architecture/Release1.1/IntegratedPerformance.md @@ -51,7 +51,9 @@ Physical iPhone14ProMax/iOS27.2 current-candidate public-product/payload work ha nine release samples after three warmups: median54.406542 ms and process peak RSS 24395776 bytes. This is a whole app/SDK peak, including UIKit, without isolated allocation or hard-RSS claims, and no matched mobile optimization comparison. -Physical iPad measurements remain blocked. Logical bytes, allocator observations, +Physical iPad measurements remain unexecuted and, under the subsequent +[1.1 qualification policy](QualificationPolicy.json), deferred and nonblocking. +Logical bytes, allocator observations, process RSS and caller computation remain distinct. The additional QA wave changes only Base64 failure cleanup in the runtime. Affected diff --git a/Documentation/Architecture/Release1.1/Mobile.md b/Documentation/Architecture/Release1.1/Mobile.md index 00816a3..95772c9 100644 --- a/Documentation/Architecture/Release1.1/Mobile.md +++ b/Documentation/Architecture/Release1.1/Mobile.md @@ -26,11 +26,16 @@ fixtures, stream completion/terminal pulls, awaited sinks and cancellation. Mac Swift Testing and isolated iPhone/iPad iOS 27 simulators execute three-process disk save/reopen/update checks. The physical iPhone is connected with iOS 27.2 and developer mode enabled; signing/runtime/performance are separately qualified. -The physical iPad is unavailable and remains a mandatory R5 release blocker. +The original R5 scope required a physical iPad. The maintainer's 2026-10-12 +[qualification policy](QualificationPolicy.json) now accepts the executed iPad +simulator public/disk checks for 1.1.0 and defers physical iPad testing without +blocking release preparation. Physical iPhone evidence remains required. A development-signed qualification wrapper now executes the exact public harness on physical iPhone14ProMax/iOS27.2. Public smoke, eight fixtures, three separate app processes for disk save/reopen/update and nine release measurements are materialized as run-ID-bound files retrieved from its own container. The temporary app is removed afterward. Core consumers/source remain independent of UIKit/signing; -no public UI product or server semantics are added. Physical iPad remains blocked. +no public UI product or server semantics are added. Physical iPad runtime, +performance, memory and energy remain untested. Simulator evidence qualifies the +agreed 1.1 iPadOS acceptance scope and makes no physical-device measurement claim. diff --git a/Documentation/Architecture/Release1.1/Persistence.md b/Documentation/Architecture/Release1.1/Persistence.md index 2f40307..469d414 100644 --- a/Documentation/Architecture/Release1.1/Persistence.md +++ b/Documentation/Architecture/Release1.1/Persistence.md @@ -35,7 +35,9 @@ same URL, checks scalar bytes/order/lexemes, queries/sorts ordinary fields, upda releases again and verifies a third reopen. Optional nil and present JSON null are distinct. SwiftData owns its database representation; embedded JSON predicates and cloud synchronization are not claimed. Mac, simulator and physical-device outcomes -are separate receipts, and missing device evidence blocks the full R5 gate. +are separate receipts. Under the [amended 1.1 policy](QualificationPolicy.json), +macOS, both simulator families and physical iPhone disk phases remain required; +physical iPad disk execution is deferred and nonblocking. The first simulator release run failed the additional weak-container assertion: SwiftData retained a container beyond lexical scope. The debug Mac run passed it. diff --git a/Documentation/Architecture/Release1.1/Plan.md b/Documentation/Architecture/Release1.1/Plan.md index 69ba440..af5ee42 100644 --- a/Documentation/Architecture/Release1.1/Plan.md +++ b/Documentation/Architecture/Release1.1/Plan.md @@ -47,5 +47,8 @@ python3 Scripts/qualify_release_1_1.py --mode index --output .build/ci/index/rec Keep actual logs/receipts under ignored build/evidence directories. Each records source inputs, environment, command exits and counts. A failed or absent runtime cannot advertise support. Inspect simulator resource signing separately from SDK -compilation. Physical iPhone/iPad performance and real disk teardown/reopen remain -mandatory later gates. No merge, tag or publication follows from this plan. +compilation. Physical iPhone observations and real disk teardown/reopen remain +required. The original plan also required a physical iPad; the explicit 2026-10-12 +[policy decision](QualificationPolicy.json) now accepts iPad simulator execution +for 1.1.0 and defers physical iPad qualification without blocking the release train. +No merge, tag or publication follows from this plan. diff --git a/Documentation/Architecture/Release1.1/Progress.json b/Documentation/Architecture/Release1.1/Progress.json index e87a50f..2e4a647 100644 --- a/Documentation/Architecture/Release1.1/Progress.json +++ b/Documentation/Architecture/Release1.1/Progress.json @@ -1,7 +1,7 @@ { "schema_version": 1, "target_release": "1.1.0", - "milestone": "additional acceptance and conformance wave", + "milestone": "maintainer-approved iPad simulator qualification policy", "tested_core_sha": "5d655f2beab569ac804890493bfafcf6045caabe", "preserved_history": [ "1.0.0", @@ -30,7 +30,7 @@ "iPhone_simulator": "executed", "iPad_simulator": "executed", "physical_iPhone": "executed", - "physical_iPad": "blocked; unavailable" + "physical_iPad": "deferred; not required for 1.1 release; no physical-device claims" }, "conditional_features": { "SIMD": "deferred", @@ -41,7 +41,6 @@ "evidence_policy": "Turn003 materializes actual native/safety/QA/docs/SDK/simulator/iPhone receipts, raw measurements and reproducible source archive. Turn002 and original history remain immutable. Source bindings identify unchanged runtime bytes and expanded test cases.", "publication_performed": false, "remaining_release_blockers": [ - "Physical iPad smoke, disk persistence and release measurements for the agreed R5 matrix", "Complete maintainer review and protected PR integration before final release readiness" ], "performance_review": "IntegratedPerformance.md; unchanged 10% trigger, retain initial regression measurements and final accepted dispositions", @@ -52,6 +51,12 @@ "root_function_total": 156, "source_manifest_sha256": "2b69a683002eaa4e112bd005b3eb06e63dc8e06bfcd2b5c8485f076870f26797", "return_sha256": "151ce56037763e1ca3d6d0439521020f34ca368ef77b50c31b8ef4e27fb282b6" + }, + { + "turn": 3, + "source_sha": "c40c5ffba28ce7aeae926efea21e6c3be76c4787", + "return_sha256": "a50465cbfd30ae8a699117d589676bd5d9e3964c2584268d251d230911d5a823", + "physical_iPad_status": "blocked under the original scope; historical evidence retained" } ], "qa_wave": { @@ -60,9 +65,16 @@ "scope": "QA.md", "native_full": "passed on tested_core_sha", "safety_full": "passed on tested_core_sha; TSAN5", - "mobile": "both SDKs/simulators/physical iPhone passed; iPad physical blocked", + "mobile": "Mac/both SDKs/both simulators/physical iPhone executed; physical iPad deferred, nonblocking", "supplemental_boundary_review": "passed at e6eb46da346bee9892119fdc414abd7783e66b2c: 19 exact cases each in debug/release/ASAN", "docs": "passed at e6eb46da346bee9892119fdc414abd7783e66b2c: four catalogues, 582 authored public symbols, 10 README examples; refresh final documentation successor", "accounting_fix": "Failed Base64 scratch released; work/terminal health retained; caps/weights/version unchanged" + }, + "qualification_policy": "QualificationPolicy.json", + "gate_disposition": { + "R5": "Required evidence satisfied by unchanged runtime/consumer source and materialized Turn003 receipts under amended policy", + "M03": "Satisfied for required physical iPhone; physical iPad deferred", + "M05": "Satisfied on Mac/both simulators/physical iPhone; physical iPad deferred", + "R8": "Local qualification can proceed; maintainer review/protected integration and publication authorization remain separate" } } diff --git a/Documentation/Architecture/Release1.1/QA.md b/Documentation/Architecture/Release1.1/QA.md index e5a619b..2331192 100644 --- a/Documentation/Architecture/Release1.1/QA.md +++ b/Documentation/Architecture/Release1.1/QA.md @@ -45,8 +45,10 @@ The public mobile harness additionally checks100 caught malformed Data projectio under32 logical bytes and wide indexed payload/Schema/Patch behavior. Both SDKs, isolated iPhone/iPad simulators and the physical iPhone execute the updated harness; disk save/reopen/update uses three independently exited processes and eight frozen -fixtures. Physical iPad qualification remains blocked. Simulator execution does -not establish physical-device performance. +fixtures. This QA wave originally left physical iPad qualification blocked. The +subsequent [maintainer policy](QualificationPolicy.json) accepts iPad simulator +evidence for 1.1.0 and defers physical iPad execution without blocking the release. +Simulator execution does not establish physical-device performance. The affected Base64 paths have three serial alternating release-native pairs, each with3 warmups,9 samples and100 public invocations/sample, finite balanced caps, @@ -66,4 +68,6 @@ Actual receipts, failed-source reproduction, raw samples, source bindings, clean archive rebuilding and compiled catalogues are materialized in the local Turn003 return. Hosted Native job artifacts supply remote source/command receipts. This wave does not merge the protected PR stack, qualify an MCP server, publish1.1, -select SIMD/parallel batches, or close the unavailable physical iPad gate. +select SIMD/parallel batches, or claim physical iPad qualification. The later +release-scope decision supersedes the physical iPad blocker while preserving these +historical receipts and outcomes. diff --git a/Documentation/Architecture/Release1.1/QualificationPolicy.json b/Documentation/Architecture/Release1.1/QualificationPolicy.json new file mode 100644 index 0000000..0f43399 --- /dev/null +++ b/Documentation/Architecture/Release1.1/QualificationPolicy.json @@ -0,0 +1,49 @@ +{ + "schema_version": 1, + "target_release": "1.1.0", + "decision_id": "ipad-simulator-acceptance-2026-10-12", + "approved_on": "2026-10-12", + "approval": "Explicit maintainer release-scope decision", + "supersedes": "Physical iPad requirement in the original R5/M03/M05/R8 scope", + "baseline": { + "swift_tools_compiler_minimum": "6.4", + "swift_language_mode": "6", + "macos_sdk_minimum": "27", + "ios_ipados_minimum": "27" + }, + "required_evidence": [ + "macOS native/safety/docs", + "iPhoneOS and iPhoneSimulator SDK builds", + "iPhone simulator public behavior and three-process disk persistence", + "iPad simulator public behavior and three-process disk persistence", + "physical iPhone public behavior, three-process disk persistence and release observations" + ], + "physical_devices": { + "iPhone": { + "required_for_release": true, + "evidence": "Separate physical smoke, disk persistence and release observations" + }, + "iPad": { + "required_for_release": false, + "status": "deferred", + "qualification": "SDK and iPad simulator acceptance for 1.1.0", + "limitation": "Physical iPad behavior, performance, memory and energy are unmeasured; simulator data makes no physical-device claim" + } + }, + "gate_mapping": { + "R5": "Required matrix excludes physical iPad; all other platform/storage requirements remain", + "M03": "Physical iPhone smoke and release observations required; physical iPad deferred and nonblocking", + "M05": "Three-process disk persistence required on macOS, both simulator families and physical iPhone", + "M06": "Distinguish SDK builds, simulator runtime, physical iPhone observations and untested physical iPad", + "R8": "Physical iPad unavailability does not block local release preparation; review/integration and publication authorization remain separate" + }, + "unchanged": [ + "Four public products/private regex", + "Empty root dependencies", + "Apache-2.0/all notices", + "All 49 finite caps/accounting", + "Strict semantics and every existing test/corpus assertion", + "10% performance trigger and dispositions", + "Deferred SIMD/parallel batches and E11/E12" + ] +} diff --git a/Documentation/Architecture/Release1.1/Review.md b/Documentation/Architecture/Release1.1/Review.md index 8a7e9e1..b08a321 100644 --- a/Documentation/Architecture/Release1.1/Review.md +++ b/Documentation/Architecture/Release1.1/Review.md @@ -30,8 +30,9 @@ No blanket unsafe/actor annotations, permissive parser or regex fallback is adde Retain 1.0/W00–W12/G01–G12/RC/F/J and R0 history. Native/safety/docs, independent policies, all49 caps, public consumers and physical/simulator receipts identify actual commands/source and nonzero counts. Source archives exclude private input, -Git/build trees, signing profiles and device identifiers. Physical iPad remains -blocked; conditional SIMD/parallel batches stay deferred, with no unqualified +Git/build trees, signing profiles and device identifiers. At this review's original +scope, physical iPad remained blocked; conditional SIMD/parallel batches stay +deferred, with no unqualified performance claim. No merge/tag/publication is implied by this review. ## Additional Turn003 review @@ -57,5 +58,8 @@ boundary additions ran through the exact 19-case debug/release/ASAN QA lane at The final source binding, clean reproduction, actual catalogue outputs and hosted CI receipts accompany the local Turn003 return. Both SDKs, both simulator families -and the updated physical iPhone public/disk harness pass. Physical iPad remains -blocked; protected integration and publication require separate maintainer action. +and the updated physical iPhone public/disk harness pass. This review originally +left physical iPad blocked. The subsequent 2026-10-12 +[maintainer scope decision](QualificationPolicy.json) removes that release blocker +and accepts iPad simulator qualification while retaining untested hardware as a +limitation. Protected integration and publication require separate maintainer action. diff --git a/Documentation/Qualification/README.md b/Documentation/Qualification/README.md index df669fc..3f6de2a 100644 --- a/Documentation/Qualification/README.md +++ b/Documentation/Qualification/README.md @@ -55,3 +55,8 @@ stream completion/backpressure, reports, cancellation and concurrent plan reuse are tested. Native safety includes Address Sanitizer, Thread Sanitizer and strict memory safety compilation. [CI](../CI/README.md) describes executed lanes; [performance](../Performance/README.md) retains the reviewed streaming disposition. + +The [1.1 platform policy](../Architecture/Release1.1/QualificationPolicy.json) +accepts iPad SDK/simulator behavior and three-process disk persistence for this +release. Physical iPad qualification is deferred and nonblocking. Physical iPhone +evidence remains required; no test, corpus policy or resource assertion is removed. diff --git a/README.md b/README.md index d7a42f0..a3a52c0 100644 --- a/README.md +++ b/README.md @@ -166,8 +166,11 @@ key fidelity. Caller callbacks remain caller-owned work. The 1.1 feature branches add scoped reads, native value-coding conveniences, exact Version 1 persistence and a measured private wide-object index. The released 1.0 package remains available through the installation declaration below. -Physical iPad qualification is pending; SDK/simulator evidence is separate from -release support. See the [release plan](Documentation/Architecture/Release1.1/Plan.md). +For 1.1, iPadOS acceptance uses the SDK and iPad simulator, including disk persistence; +physical iPad qualification is deferred and nonblocking. Physical iPhone checks +remain required. Simulator results make no physical-device performance claim. +See the [release plan](Documentation/Architecture/Release1.1/Plan.md) and +[qualification policy](Documentation/Architecture/Release1.1/QualificationPolicy.json). ```swift let scoped = try value.readWithReport { root in diff --git a/RELEASING.md b/RELEASING.md index 36ec447..283e921 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -32,3 +32,10 @@ or releases. Published version tags are protected against updates and deletion. Creating a version tag and its GitHub release are deliberate maintainer actions after this review. A successful CI run alone does not authorize them. + +For 1.1.0, apply the maintainer-approved +[qualification policy](Documentation/Architecture/Release1.1/QualificationPolicy.json): +both mobile SDKs and iPhone/iPad simulator behavior/disk phases remain required, +along with physical iPhone checks. Physical iPad qualification is deferred and +does not block this release. Preserve that limitation in release notes; never +present simulator data as physical-device performance or memory evidence. diff --git a/Scripts/qualify_mobile_runtime.py b/Scripts/qualify_mobile_runtime.py index c83d05d..ba6c005 100644 --- a/Scripts/qualify_mobile_runtime.py +++ b/Scripts/qualify_mobile_runtime.py @@ -14,10 +14,16 @@ def main(): args = parser.parse_args() output = ROOT / args.output output.parent.mkdir(parents=True, exist_ok=True) + policy_path = ROOT / 'Documentation/Architecture/Release1.1/QualificationPolicy.json' + policy = json.loads(policy_path.read_text()) source = [{'path': p.relative_to(ROOT).as_posix(), 'sha256': hashlib.sha256(p.read_bytes()).hexdigest()} for p in files()] receipt = {'schema_version': 1, 'status': 'running', 'environment': collect(), 'git_head': subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=ROOT, text=True).strip(), - 'source_inputs': source, 'commands': [], 'simulators': [], 'physical_devices': 'separate physical receipts required; iPad unavailable, confirmed by maintainer', + 'source_inputs': source, 'commands': [], 'simulators': [], + 'qualification_policy': {'path': policy_path.relative_to(ROOT).as_posix(), + 'sha256': hashlib.sha256(policy_path.read_bytes()).hexdigest(), + 'decision_id': policy['decision_id']}, + 'physical_devices': policy['physical_devices'], 'started_utc': datetime.datetime.now(datetime.timezone.utc).isoformat()} def save(): output.write_text(json.dumps(receipt, indent=2) + '\n') def run(name, command): diff --git a/Tools/MobileQualification/README.md b/Tools/MobileQualification/README.md index f7493df..7185ac6 100644 --- a/Tools/MobileQualification/README.md +++ b/Tools/MobileQualification/README.md @@ -26,4 +26,7 @@ within five ancestor checks. The simulator controller creates/deletes only its o isolated iPhone/iPad devices and records exact outcomes and source hashes. SDK compilation, simulator runtime and physical-device performance are distinct -claims. The physical iPad is unavailable; its agreed gate remains blocked. +claims. The [1.1 qualification policy](../../Documentation/Architecture/Release1.1/QualificationPolicy.json) +accepts iPad SDK/simulator behavior and disk persistence for this release. +Physical iPad checks are deferred and nonblocking; physical iPhone checks remain +required. No physical iPad performance, memory or energy claim follows.