@@ -7,12 +7,26 @@ type RepositoryEvidence = {
77 test : string ;
88} ;
99
10+ type TvOsCommandContractEntry =
11+ | {
12+ assertion : string ;
13+ level : 'command-contract' ;
14+ owner : RepositoryEvidence ;
15+ }
16+ | {
17+ assertion : string ;
18+ level : 'command-contract' ;
19+ owner : RepositoryEvidence ;
20+ admission : 'host-dependent' ;
21+ } ;
22+
1023export type TvOsPlatformCoverageEntry =
1124 | {
1225 assertion : string ;
13- level : 'live' | 'command-contract' ;
26+ level : 'live' ;
1427 owner : RepositoryEvidence ;
1528 }
29+ | TvOsCommandContractEntry
1630 | {
1731 assertion : string ;
1832 level : 'capability-denial' ;
@@ -38,6 +52,10 @@ export const TVOS_REMOTE_EVIDENCE: RepositoryEvidence = {
3852 path : 'test/integration/provider-scenarios/tvos-remote.test.ts' ,
3953 test : TVOS_REMOTE_TEST_NAME ,
4054} ;
55+ const TVOS_AUDIO_EVIDENCE : RepositoryEvidence = {
56+ path : 'src/core/__tests__/capability-plugin-routing-parity.test.ts' ,
57+ test : '(b.1) isCommandSupportedOnDevice is unchanged across the command x device matrix' ,
58+ } ;
4159export const TVOS_REMOTE_SCENARIO_COMMANDS : readonly PublicCommand [ ] = [
4260 PUBLIC_COMMANDS . open ,
4361 PUBLIC_COMMANDS . scroll ,
@@ -47,10 +65,16 @@ export const TVOS_REMOTE_SCENARIO_COMMANDS: readonly PublicCommand[] = [
4765] ;
4866
4967const C = PUBLIC_COMMANDS ;
50- const contract = ( path : string , test : string , assertion : string ) : TvOsPlatformCoverageEntry => ( {
68+ const contract = (
69+ path : string ,
70+ test : string ,
71+ assertion : string ,
72+ admission ?: 'host-dependent' ,
73+ ) : TvOsPlatformCoverageEntry => ( {
5174 assertion,
5275 level : 'command-contract' ,
5376 owner : { path, test } ,
77+ ...( admission ? { admission } : { } ) ,
5478} ) ;
5579const denial = ( assertion : string ) : TvOsPlatformCoverageEntry => ( {
5680 assertion,
@@ -67,10 +91,12 @@ const gap = (assertion: string): TvOsPlatformCoverageEntry => ({
6791 *
6892 * There is no tvOS CI or live-device lane at HEAD, so the existing provider
6993 * scenario is contract evidence rather than a live claim. The remaining
70- * contract rows cite Apple deployment/inventory tests or the typed Apple
71- * interaction policy. Capability denials are limited to whole-command
72- * denials; tvOS's narrower multi-touch refusal stays with the gesture contract
73- * instead of denying the supported one-contact gesture path.
94+ * contract rows cite Apple deployment/inventory tests, the typed Apple
95+ * interaction policy, or the executable capability oracle. Capability denials
96+ * are limited to whole-command denials; tvOS's narrower multi-touch refusal
97+ * stays with the gesture contract instead of denying the supported one-contact
98+ * gesture path. Host-dependent contracts retain their oracle admission state
99+ * without claiming a stable tvOS capability.
74100 */
75101export const TVOS_PLATFORM_COVERAGE = {
76102 [ C . artifacts ] : gap ( 'No tvOS-specific artifact inventory command evidence exists yet' ) ,
@@ -89,7 +115,12 @@ export const TVOS_PLATFORM_COVERAGE = {
89115 [ C . logs ] : gap ( 'No tvOS-specific app-log command evidence exists yet' ) ,
90116 [ C . events ] : gap ( 'No tvOS-specific session-event command evidence exists yet' ) ,
91117 [ C . network ] : gap ( 'No tvOS-specific network command evidence exists yet' ) ,
92- [ C . audio ] : denial ( 'tvOS audio admission is host-dependent and denied on hosted CI' ) ,
118+ [ C . audio ] : contract (
119+ TVOS_AUDIO_EVIDENCE . path ,
120+ TVOS_AUDIO_EVIDENCE . test ,
121+ 'tvOS audio admission follows the host-dependent ScreenCaptureKit capability oracle' ,
122+ 'host-dependent' ,
123+ ) ,
93124 [ C . replay ] : gap ( 'No tvOS-specific replay command evidence exists yet' ) ,
94125 [ C . test ] : gap ( 'No tvOS-specific test-suite command evidence exists yet' ) ,
95126 [ C . clipboard ] : gap ( 'No tvOS-specific clipboard command evidence exists yet' ) ,
0 commit comments