Skip to content

Phase 3 — finish the Apple PlatformPlugin model (steps b + d) #972

Description

@thymikee

Tracking issue for the remaining Phase 3 — Apple PlatformPlugin work, decomposed from the (now-removed) plans/phase3-platform-plugin-progress.md into executable, agent-ready units. Durable design context lives in plans/perfect-shape.md (§5.1/§6/§7) and docs/adr/0009-apple-platform-consolidation.md.

Done

  • (a) PlatformPlugin registry + exhaustiveness + parity tests; getInteractor routed through it (behaviorless foundation).
  • (b.1) Capability-bucket selection routed through the plugin — refactor: route capability bucket through PlatformPlugin + pin supports() closures (Phase 3 step b) #965 (core/capabilities.ts:94-96).
  • (c) Apple filesystem consolidation — refactor: consolidate Apple platform internals #968: OS-agnostic engine + macOS leaf moved to src/platforms/apple/, visionOS build/discovery/profile groundwork. The runner request-count CI gate was removed (successful main runs captured zero runner events, so it did not prove runner behavior); Apple runner regressions are now guarded by the unit/build gates + live smoke replay (verified: 6/6 iOS simulator replays pass on-device).

Remaining work (this umbrella)

Sequencing DAG (→ = "blocked by"):

b.2 ─┬─> d.5
     │
b.3 ─┴─> d.1 ──┐
d.2 ───────────┤
d.4 ───────────┼─> d.3 (LAST, public Platform collapse)
d.5 ───────────┘
cleanup-tests  (independent)
cosmetic-rename (independent, backlog)
Item Issue Label Blocked by
b.2 — relocate supports()/unsupportedHint() closures onto the plugin #973 ready-for-agent
b.3 — platform-neutral daemon facets (providers/recording/appLog/perf) #974 ready-for-agent
d.1 — relocate plugin + interactor + interactions under platforms/apple #975 ready-for-agent b.3
d.2 — tvOS leaf promotion #976 ready-for-agent
d.4 — watchOS unsupported sentinel #977 ready-for-agent
d.5 — per-AppleOS capability tables #978 ready-for-agent b.2
d.3 — final public Platform collapse ios/macosapple #979 ready-for-human b.2, b.3, d.1, d.2, d.5
cleanup — relocate Apple unit tests out of platforms/ios/__tests__ #980 ready-for-agent
cosmetic — ios-runnerapple-runner rename #981 backlog

Execution notes (subagents / workflows)

  • Parallelizable now: b.2, b.3 (4 facets fan out further), d.2, d.4, cleanup-tests, cosmetic-rename.
  • Discipline (perfect-shape §7): every derived table/closure is pinned by a table-/closure-equivalence parity test across src/__tests__/test-utils/device-fixtures.ts before any hand site is deleted. Do not flatten the leaves (two-finger XCTest synthesis, tvOS focus-only, AppKit macOS helper).
  • Do not auto-merge b/d items — human review required.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-humanValid work that needs human implementation, judgment, or maintainer mergerefactor

    Type

    No type
    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