APPLE-004 — Apple Local Ownership Gate¶
Level 3b — Local Ownership Gate
document:
id: APPLE-004
title: Apple Local Ownership Gate
version: "1.0"
track: platforms/apple
updated: 2026-07
next_review: 2027-WWDC
Separation of Duties¶
| Owns | Must NOT Own |
|---|---|
| Local Ownership Score (LOS), local capability inventory, retention justification, LOS receipts | Provider Conformance Score (APPLE-003). Modernization policy (APPLE-002). Provider capability catalog (APPLE-001). |
Why LOS is a separate gate from PCS: Provider Conformance (PCS) evolves with upstream Apple releases — it changes on the WWDC cadence (annually). Local Ownership (LOS) evolves with engineering reduction decisions — it changes on the sprint cadence (monthly or faster). Conflating them creates a document that is perpetually stale on one axis while being reviewed on the other. LOS may change after any migration sprint; PCS changes only after a new Apple SDK ships. These are different failure modes, different owners, and different remediation timelines.
1. Local Ownership Score (LOS)¶
The Local Ownership Score measures how much of the Apple provider's capability domain BLU Studio owns locally rather than consuming from Apple. Lower is better.
Formula¶
LOS = Unjustified Local Implementations / Total Assessed Capabilities
Target: as close to 0% as the Provider Invariant permits.
Items rated Unknown or Pending are excluded from the denominator until classified.
PCS / LOS Interpretation Matrix¶
| PCS | LOS | Meaning |
|---|---|---|
| 95% | 5% | Using Apple well — conformant and not reimplementing |
| 95% | 80% | Using Apple correctly but owning far too much local infrastructure |
| 40% | 5% | Not yet using Apple's latest capabilities, but not replacing them either |
| 40% | 80% | Not using Apple AND reimplementing its capability domain — highest risk |
Local Capability Inventory — BLU Studio (v1.0 baseline)¶
Each row is evidence-backed. Retention justification references APPLE-001 §5.
| Local Implementation | Apple-owned Capability | Retention Justified? | Evidence Command | Migration ID |
|---|---|---|---|---|
AppLogger wrapper |
Logger (OSLog) |
✅ Yes — thin adapter | grep -rn "class AppLogger" shows delegation to Logger |
— |
WKWebView bridge (5 files) |
No SwiftUI web rendering equivalent | ✅ Yes — provider gap | grep -rln "WKWebView" — confirmed 5 files; no SwiftUI alternative |
— |
ObservableObject classes (7) |
@Observable |
❌ No | grep -rn "ObservableObject" --include="*.swift" |
OBS-001 |
@unchecked Sendable (2 files) |
actor |
❌ No | grep -rn "@unchecked Sendable" --include="*.swift" |
CONC-001 |
DataService (unclassified) |
Unclear — pending classification | ❓ Unknown | grep -rn "class DataService" |
— |
Local Ownership Score: 2 unjustified / 5 assessed = 40% (lower is better; 0% is the target; Unknown/Pending items excluded from denominator)
Recompute by auditing the local capability inventory against APPLE-001 §5. Items that gain a provider equivalent move from ✅ Yes to ❌ No and enter the migration backlog.
2. LOS MR Gate¶
Every Apple platform MR must include this block in its MR description or review artifact.
## LOS Verification — APPLE-004
### Local Capability Inventory Delta
[ list any local implementations added, removed, or reclassified by this MR ]
[ state NONE if no change to the inventory ]
### Retention Justification
[ for any NEW local implementation, provide justification referencing APPLE-001 §5 ]
[ state N/A if no new local implementations ]
### Local Ownership Score
[ NO CHANGE | improved from X% to Y% | degraded from X% to Y% ]
[ list which rows changed and why ]
### Migration Progress
[ list Migration IDs resolved by this MR ]
[ state NONE if no migrations completed ]
Gate result: [ PASS | FAIL ]
FAIL conditions:
— New unjustified local implementation introduced without approved retention justification
— Existing Unknown row left unclassified after the MR touched the same file
3. LOS Reduction Targets¶
Completing the open migration IDs reduces LOS from 40% to 0%.
| Migration ID | Current Local Implementation | Target Apple Capability | Projected LOS After |
|---|---|---|---|
| OBS-001 | ObservableObject (7 classes) |
@Observable |
20% (1 unjustified / 5 assessed) |
| OBS-002 | @StateObject / @EnvironmentObject usage |
@Observable + @Environment |
No direct LOS change (rule violation reduction) |
| CONC-001 | @unchecked Sendable (2 files) |
actor isolation |
0% (0 unjustified / 4 assessed after OBS-001) |
Completing OBS-001 + CONC-001 achieves LOS = 0%.
DataService classification is a prerequisite: if classified as unjustified local, LOS target becomes CONC-001 + DataService migration.
4. Recorded Receipts¶
Receipt — MR 72 (fix/gitleaks-official-image)¶
MR: fix/gitleaks-official-image (MR 72)
Date: 2026-07
Contract: APPLE-004 v1.0
Local Capability Inventory Delta
Added: NONE
Removed: NONE
Reclassified: NONE
Retention Justification
N/A — no new local implementations introduced
Local Ownership Score (LOS): NO CHANGE
Justified local: AppLogger wrapper, WKWebView bridge
Unjustified local: ObservableObject (OBS-001), @unchecked Sendable (CONC-001)
Score: 2 unjustified / 5 assessed (40%)
MR 72 introduced none, removed none
Migration Progress
NONE
Gate result: PASS
Provider Conformance Gate: see APPLE-003