Skip to content

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