Skip to content

Phase 3 d.5: per-AppleOS capability tables #978

Description

@thymikee

Replace the scattered Apple capability predicates with a per-AppleOS data table mirroring RUNNER_PROFILES + the Swift #if os() guards 1:1 — only after table-equivalence tests prove byte-for-byte behavior for iOS/iPadOS/tvOS/macOS/visionOS sample devices.

Current state

  • appleOs is discovery-groundwork only (14 non-test refs): set at discovery (src/platforms/apple/core/devices.ts:230,253,292 resolveAppleOs, src/platforms/apple/os/macos/devices.ts:13), read by runner-name resolution (src/platforms/apple/core/apple-runner-platform.ts:127, src/kernel/device.ts:70-89), and stripped from inventory output (src/daemon/handlers/session-inventory.ts:90-94, "keep appleOs internal-only"). Capability logic does not read it yet.
  • The predicates to replace are the same set as b.2: src/core/command-descriptor/registry.ts:41-59.

Work

Introduce a per-AppleOS capability table ({ inputModel, multiTouch, gestures{pinch,rotate,transform}, surfaces, keyboard, orientation }) and have capability logic read appleOs, collapsing the scattered target!=='tv' / platform!=='macos' predicates into one lookup.

Blocked by

b.2 (closures relocated onto the plugin first).

Gate

Table-equivalence parity test across the sample-device matrix before deleting any predicate.

Refs

perfect-shape.md §7; ADR-0009 ("per-AppleOS capability table"). (Phase 3 step d.5.)


Part of #972 (Phase 3 — Apple PlatformPlugin).

Metadata

Metadata

Assignees

No one assigned

    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