Implements DawnLoop Apple-platform integrations, including HomeKit automation, widgets, App Intents, repair flows, and reliability-critical platform adapters.
NOTE: Startup and cleanup are handled by worker-base. This skill defines the work procedure.
Use this skill for DawnLoop features centered on:
None.
mission.md, AGENTS.md, .factory/library/architecture.md, .factory/library/automation-strategy.md, .factory/library/environment.md, and .factory/library/user-testing.md.fulfillsbuild and test commands at milestone confidence points or when the feature explicitly requires them.
mission.md or AGENTS.md explicitly defers real-device validation for the current mission, do not block on physical-device checks; record simulator-only validation clearly in the handoff{
"salientSummary": "Implemented HomeKit-backed automation generation for enabled DawnLoop alarms using stepped action sets and timer triggers. Added failure-injection tests for rollback and verified the generated alarm reports a ready state after save.",
"whatWasImplemented": "Added the HomeKit adapter protocol implementation, capability-driven planner integration, durable AutomationBinding persistence, save-time creation of action sets and timer triggers, and user-visible ready/blocked state reporting for enabled alarm saves.",
"whatWasLeftUndone": "",
"verification": {
"commandsRun": [
{
"command": "Run a targeted simulator test against the dynamically resolved simulator destination for the relevant automation/planner test target, or use the shared `.factory/services.yaml` planner_tests command when it covers the changed path.",
"exitCode": 0,
"observation": "Planner, binding, and rollback tests passed with mocked HomeKit services."
},
{
"command": "Use the shared `.factory/services.yaml` build command against the dynamically resolved simulator destination.",
"exitCode": 0,
"observation": "App and extensions compiled cleanly for simulator."
}
],
"interactiveChecks": [
{
"action": "Created a valid single-light alarm on simulator using mocked HomeKit capabilities and saved it as enabled.",
"observed": "The save flow completed, a ready state was shown, and the alarm detail reflected the generated step summary and binding metadata."
},
{
"action": "Ran a real-device save against a Home with one compatible light and inspected the resulting automation state.",
"observed": "The alarm created HomeKit action sets and timer triggers for each planned step, and the app remained in a healthy synced state after save."
}
]
},
"tests": {
"added": [
{
"file": "DawnLoopTests/AutomationBindingServiceTests.swift",
"cases": [
{
"name": "testEnabledSaveCreatesBindingsForAllPlannedSteps",
"verifies": "A saved enabled alarm persists one durable binding covering the generated HomeKit objects."
},
{
"name": "testFailedSaveRollsBackPartialHomeKitObjects",
"verifies": "Partial HomeKit writes are cleaned up or reverted when generation fails."
}
]
}
]
},
"discoveredIssues": []
}