/** * Pure expansion of a per-driver `DeviceRegistry` into an * `ExpandedRegistry` whose grid carries effective per-cell status — * direct observations plus the two propagation vectors documented in * `plans/backlog/00-verification-foundation.md`. * * Called by each driver's `compile-data.mjs` after validation. The * function is per-repo: protocol keys (`engines[].protocol`) are * scoped to the driver, and no cross-driver lifting happens here. */ import type { DeviceEntry, DeviceRegistry, TransportType } from './device.js'; import type { EffectiveStatus, ExpandedCell, SupportStatus } from './verifications.js'; /** * Per-device expanded grid: `transport → ExpandedCell`. Only * transports the device declares appear; any cell with no direct * observation and no propagation lift surfaces as * `{ status: 'unverified' }`. */ export type ExpandedVerificationGrid = Partial>; /** * One device after expansion: original entry plus the derived grid * and the rolled-up `supportStatus` (worst-case across declared * transports, mapped to `EffectiveStatus`). */ export interface ExpandedDeviceEntry extends DeviceEntry { verificationGrid: ExpandedVerificationGrid; supportStatus: EffectiveStatus; } /** Registry projection emitted by `expandVerifications`. */ export interface ExpandedRegistry extends Omit { devices: readonly ExpandedDeviceEntry[]; } /** * Expand a registry's `verifications` blocks into a derived grid per * device. * * Propagation rules (per the foundation plan): * - Only `'verified'` triggers propagation. * - Sibling-protocol vector: devices sharing a canonical engine * signature (sorted engine protocols, see `engineSignature`) lift * each other's matching transport to `'expected'`. Single-engine * devices match on their lone protocol; multi-engine devices match * only when their full engine set agrees. * - Cross-transport vector: a `'verified'` cell on any one transport * of a device lifts that device's other declared transports to * `'expected'`. * - `'partial'` does not propagate. * - Direct `'partial'` and `'unsupported'` beat propagated * `'expected'` (observation beats inference). * - Single-transport devices trivially no-op the cross-transport * vector. * - Per-repo only — protocol keys are scoped to the driver. */ export declare function expandVerifications(registry: DeviceRegistry): ExpandedRegistry; /** * Map a legacy `DeviceSupport.status` value to a stored * `SupportStatus`. Returns `undefined` for `'untested'` (= absent in * the new shape). */ export declare function mapLegacyStatus(legacy: 'verified' | 'partial' | 'broken' | 'untested' | undefined): SupportStatus | undefined; //# sourceMappingURL=expand.d.ts.map