Vier Annahmen des Plans vor jedem Implementierungscode geprüft:
A (SMC): Lüftersteuerung bestätigt — F0md/F1md (klein!) als Auto/Manuell-
Umschalter, F0Tg als Ziel, Grenzen aus F0Mn/F0Mx. SMC-Integer sind
little-endian, nicht big-endian wie im verbreiteten Intel-Beispielcode.
Ladelimit: CHWA/CH0B/CH0C/bfE0/bfF0 existieren auf Mac17,9 nicht.
Key noch nicht identifiziert, deshalb smc-diff.sh für eine
Differenzmessung ohne jeden Schreibzugriff.
B (Media): mediaremote-adapter läuft unter 26.6.1, aus dem Quellcode gebaut.
Liefert vollständige Metadaten inkl. Cover aus Google Chrome — der
Fall, den AppleScript nicht erreicht.
C (Audio): Process Tap + privates Aggregate-Device liefern echte Samples
(469 Callbacks/5 s, 0 stille Puffer). Konflikt gefunden: SoundSource
6.1.1 mit ARK.driver ist bereits installiert.
D (Group): App-Group-Container ist aus einem nicht-sandboxed Prozess erreichbar.
Damit trägt die Sandbox-Entscheidung, die Bridge-App entfällt.
Spikes sind Wegwerfcode zur Verifikation, kein Produktionscode.
2.0 KiB
Spike D — App-Group-Container ohne Sandbox
Gemessen am 10.08.2026. Werkzeug: Spikes/appgroup-probe.swift,
gebaut und signiert über Spikes/build-appgroup-probe.sh.
Ergebnis: bestätigt
Ein nicht sandboxed Prozess, signiert mit Apple Development (PP34X97WS3) und der
Entitlement com.apple.security.application-groups, erhält den Container:
/Users/scarriffle/Library/Group Containers/PP34X97WS3.group.com.scarriffleservices.calendarr
containerURL(forSecurityApplicationGroupIdentifier:)liefert einen Pfad, nichtnil- Schreibzugriff vorhanden
CFNotificationCenterAddObserverauf dem Darwin-Center registriert ohne Fehler
Damit ist die Kernannahme des Plans belegt: Onyx kann nicht-sandboxed sein — und damit
IOKit, den privilegierten Helper und den MediaRemote-Adapter nutzen — und trotzdem den
Calendarr-Snapshot über CalendarrCore lesen. Die Bridge-App als Rückfalloption entfällt.
Zustand des Containers
.com.apple.containermanagerd.metadata.plist
Library/
Kein widget-cache.json. Die Calendarr-Mac-App ist auf dieser Maschine noch nie gelaufen,
SnapshotStore().read() wird also korrekt .neverWritten liefern. Das ist der erste Zustand,
den das Kalender-Widget behandeln muss, und der einzige, der sich derzeit real testen lässt.
Anmerkung: das Verzeichnis existierte vor diesem Spike nicht — containermanagerd legt es beim
ersten Zugriff an. Ein vorhandener Container ist also kein Beleg dafür, dass Calendarr
jemals geschrieben hat. Genau deshalb ist .neverWritten ein eigener Zustand und nicht
„Datei fehlt".
Offener Punkt
Der Spike signiert eine nackte Binary ohne Provisioning-Profil. Das App-Bundle bekommt von
Xcode ein eingebettetes Profil — das ist der weniger strenge Fall, der Zugriff kann dort nicht
schlechter sein. Beim ersten echten Build wird trotzdem gegengeprüft, dass containerURL
nicht nil ist; das ist laut Integrationsanleitung der Fehler, der sich sonst als leere App
ohne jede Meldung zeigt.