Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 5 additions & 2 deletions Documentation/Architecture/Release1.1/Decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 7 additions & 2 deletions Documentation/Architecture/Release1.1/Mobile.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
4 changes: 3 additions & 1 deletion Documentation/Architecture/Release1.1/Persistence.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
7 changes: 5 additions & 2 deletions Documentation/Architecture/Release1.1/Plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
20 changes: 16 additions & 4 deletions Documentation/Architecture/Release1.1/Progress.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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": {
Expand All @@ -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"
}
}
10 changes: 7 additions & 3 deletions Documentation/Architecture/Release1.1/QA.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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.
49 changes: 49 additions & 0 deletions Documentation/Architecture/Release1.1/QualificationPolicy.json
Original file line number Diff line number Diff line change
@@ -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"
]
}
12 changes: 8 additions & 4 deletions Documentation/Architecture/Release1.1/Review.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
5 changes: 5 additions & 0 deletions Documentation/Qualification/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 7 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
8 changes: 7 additions & 1 deletion Scripts/qualify_mobile_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
5 changes: 4 additions & 1 deletion Tools/MobileQualification/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.