Skip to content

Phase 3 b.3: platform-neutral daemon facets (providers/recording/appLog/perf) on PlatformPlugin #974

Description

@thymikee

Add the four daemon-owned facets to PlatformPlugin, each typed against a PLATFORM-NEUTRAL wrapper (never the iOS provider seam), populate by wrapping the existing daemon branch, pin with a table-equivalence parity test, then route the daemon lookup through getPlugin(...).

Fan-out (parallelizable — one PR per facet)

Facet Hand branch to wrap Neutral wrapper type Parity oracle
providers REQUEST_PLATFORM_PROVIDER_DESCRIPTORS src/daemon/request-platform-providers.ts:117 () => Partial<PlatformProviderResolvers> (already neutral) same provider/undefined per sample device
recording resolveRecordingBackendForDevice / stopActiveRecording src/daemon/handlers/record-trace-recording-backends.ts:73,84 daemon-owned RecordingBackend start+stop context (session/deps/fps/base/outPath for start; recording tag for stop) — NOT {device,outPath}->child/wait; de-iOS-name startIosSimulatorRecording src/daemon/recording-provider.ts:17 same backend tag per device; same stop dispatch per tag
appLog resolveLogBackend / startLocalAppLog src/daemon/app-log.ts:179,344 existing AppLogStartRequest + LogBackend resolver same LogBackend + start path per device
perf buildPerfResponseData / supportsPlatformPerfMetrics src/daemon/handlers/session-perf.ts:109,324; native-perf gate session-native-perf.ts:34 daemon perf request/response context same metrics/support per device

Layering caveat

These facets reference daemon-owned types, so when populated the plugin's home likely moves under src/platforms/apple/ (keeps daemon → platforms the legal direction) — sequence with d.1. Until each facet is populated AND a real call-site routed through it with a passing parity test, the daemon branch stays the source of truth and the facet is NOT added to the contract.

Refs

perfect-shape.md §6; ADR-0009. (Phase 3 step b.3.)


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