Skip to content

v2: Bound live crawls and make watch partial-success #92

Description

@jmcte

Problem / intent

The privacy-preserving live audit on 2026-07-10 showed that drive status, drive errors, drive shared, drive recents, tags items, and watch --once can exceed a 12-second per-command budget on a real library. A crawler control plane must remain responsive even when one provider is large or unhealthy.

Acceptance criteria

  • Give every crawl/provider invocation an explicit traversal and wall-clock budget.
  • Preserve the distinction between scan budget, result limit, and total available rows.
  • Return structured partial/timeout state with counts and next-action guidance rather than hanging.
  • watch --once continues other providers when one provider times out and records a redacted error envelope.
  • Default polling never performs an unbounded recursive walk.
  • Add deterministic large-fixture and timeout tests for Drive, Finder tags, and watch.
  • Extend the live audit to summarize total pass/empty/fail/timeout counts without printing payloads.

Validation

swift test
bash scripts/ci/run-fast-checks.sh
python3 scripts/live-command-audit.py --binary .build/debug/icloud-cli --timeout 12

Dependencies

Metadata

Metadata

Assignees

Labels

area:dataData, schema, storage, privacy, or migration surface.area:qaQuality assurance, test coverage, and release validation.autonomy:review-gatedClass 2; autonomous work allowed, review/gate required.kind:bugBug fix.lane:hermesHermes macOS/native lane.priority:P2Codex Connector P2; blocks execution until Athena validates.risk:mediumMedium-risk change; normal care required.state:needs-reviewPR needs review.

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions