Skip to content

Move Reminders reads to EventKit#105

Open
jmcte wants to merge 3 commits into
mainfrom
codex/issue-91-eventkit-reminders
Open

Move Reminders reads to EventKit#105
jmcte wants to merge 3 commits into
mainfrom
codex/issue-91-eventkit-reminders

Conversation

@jmcte

@jmcte jmcte commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Summary

  • make supported, bounded EventKit reads the default for Reminders lists and items
  • expose a non-prompting authorization diagnostic and report it through permissions doctor
  • retain version-checked private-store reads only behind --degraded-private-store
  • document the separate future action namespace, confirmation, audit, and rollback limits

Governing Issue

Closes #91

Validation

  • Relevant local checks passed
  • Required PR checks are expected to satisfy CI Gate
  • Skipped checks are explained below

Validation performed:

  • swift test --disable-sandbox (111 tests passed)
  • bash scripts/ci/run-fast-checks.sh (passed; 87.78% source line coverage)
  • ./.build/debug/icloud-cli reminders authorization --format json (exit 0, not-determined, did not request access)

No checks skipped.

Bootstrap Governance

  • Changes are scoped to the linked issue
  • Contributor or PR guidance changes are reflected in CONTRIBUTING.md, .github/PULL_REQUEST_TEMPLATE.md, and docs/bootstrap/onboarding.md when applicable
  • PR author enabled auto-merge where GitHub allows it, or GitHub plan-limit evidence/unavailable reason is recorded and the fallback merge-readiness policy applies
  • No real secrets, runtime auth, or machine-local env files are committed

No contributor or PR guidance changed. Auto-merge will be enabled once this stacked PR is ready.

Flow Contract

  • Owner lane: provider foundations
  • Repair owner: jmcte
  • Autonomy class: bounded implementation
  • Risk class: high-sensitivity read path; no mutations

Flow Merge Readiness

  • Every blocker has a next actor and next action
  • No active blocking requested changes remain
  • Non-author approval is present when required
  • PR author enabled auto-merge where GitHub allows it, or recorded why it is unavailable/unsafe

Next actor: an independent reviewer after the provider-manifest dependency merges.

Merge Automation

  • PR author enabled auto-merge with gh pr merge --auto --squash, or the reason it is unavailable/unsafe is noted below

This PR contains the issue #89 provider-manifest commit and should remain draft until #101 merges, after which it can be rebased and auto-merge enabled.

Notes

  • EventKit authorization is reported without triggering a system prompt.
  • EventKit offers no transactional rollback across iCloud sync; the ADR prohibits claiming guaranteed rollback for future actions.

Expose a deterministic metadata-only provider registry through JSON and text output, covering every current Apple-data command family with maturity, source, permission, sensitivity, capability, and polling declarations. Document the v1 compatibility policy.\n\nCloses #89.
Use bounded, permission-aware EventKit reads by default while retaining the schema-checked private store as an explicit degraded fallback. Document the separate future mutation boundary and its rollback limits.
@jmcte
jmcte marked this pull request as ready for review July 12, 2026 19:05
@jmcte
jmcte requested a review from a team as a code owner July 12, 2026 19:05
@jmcte
jmcte enabled auto-merge (squash) July 12, 2026 19:39

@Hermes-omt Hermes-omt left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: the current head cannot merge current main. Live GitHub reports mergeable=false, mergeable_state=dirty, and rebaseable=false; a Hermes local merge simulation against main d7f88dc conflicts in Sources/ICloudCLICore/CommandLine.swift and Sources/ICloudCLICore/CommandRunner.swift. Rebase/merge current main, resolve both command paths while retaining this PR's providers list/EventKit changes and main's providers external-manifest changes, then push and wait for fresh CI before requesting rereview. The exact current head passes macOS swift test --disable-sandbox (111 tests), but that does not validate the conflicted integration. Public metadata shows no submitted reviews or inline review comments; auto-merge is enabled.

@Hermes-omt Hermes-omt added the state:needs-repair PR needs repair before review can proceed. label Jul 17, 2026
@athena-omt athena-omt added status:needs-review PR is ready for Athena review. review:athena Athena review governance requested. state:waiting-checks Waiting for CI/check status to settle. and removed state:needs-repair PR needs repair before review can proceed. labels Jul 17, 2026
@daedalus-omt
daedalus-omt force-pushed the codex/issue-91-eventkit-reminders branch from d8751c5 to f420392 Compare July 17, 2026 08:50
@athena-omt athena-omt removed the state:waiting-checks Waiting for CI/check status to settle. label Jul 17, 2026

@Hermes-omt Hermes-omt left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: --limit is documented and parsed for both reminders list and reminders lists, but it is only forwarded on the EventKit path. In CommandRunner.swift:115-126, the --degraded-private-store branches call LocalSQLiteInventoryReader.reminders(...) and .reminderLists() without applying options.limit, so either command can return an unbounded result despite an explicit limit. Apply the requested bound after the fallback reader result (or add a limit parameter there) for both commands, and add regression coverage using a fallback SQLite fixture with more than N entries.

@Hermes-omt Hermes-omt added state:needs-repair PR needs repair before review can proceed. and removed status:needs-review PR is ready for Athena review. review:athena Athena review governance requested. labels Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state:needs-repair PR needs repair before review can proceed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

v2: Move Reminders reads to EventKit and define the action boundary

4 participants