# macOS Notification Watcher POC ## Status POC implementation is built but not yet authorized to read Notification Center. Resume after granting Full Disk Access. ## Artifacts - Project: `~/notification-poc` - Binary: `~/notification-poc/notification-poc` - Source: `~/notification-poc/Sources/NotificationPOC/main.swift` - Log: `~/notification-poc/notifications.jsonl` - State: `~/notification-poc/state.json` - LaunchAgent: `~/Library/LaunchAgents/com.adolforeyna.notification-poc.plist` - README: `~/notification-poc/README.md` ## Behavior The watcher monitors `~/Library/Group Containers/group.com.apple.usernoted/db2/db`, primarily via `db-wal` filesystem events with a two-second fallback scan. It copies `db`, `db-wal`, and `db-shm` to a temporary directory before read-only SQLite access, baselines existing records on first successful run, and logs only later notifications as JSONL. It does not modify, dismiss, forward, or send notifications. ## Verification so far - Swift release build passed. - `plutil -lint` passed for the LaunchAgent. - Runtime reached the expected TCC boundary: macOS returned permission denied for the database. - Persistent LaunchAgent bootstrap was not run because Hermes blocks registering persistent jobs from inside the gateway process. ## Resume steps 1. In System Settings → Privacy & Security → Full Disk Access, add/enable `~/notification-poc/notification-poc`. 2. Run the binary manually and verify it prints `Watching` and creates/updates `notifications.jsonl`. 3. Generate a harmless test notification and confirm one JSONL record. 4. Install from a separate shell with: `launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.adolforeyna.notification-poc.plist`. 5. Verify with `launchctl print gui/$(id -u)/com.adolforeyna.notification-poc` and inspect watcher stderr/stdout logs.