@@ -36,6 +36,11 @@ export const LINUX_REPLAY_EVIDENCE: RepositoryEvidence = {
3636 test : '# Smoke test for Linux desktop automation on CI.' ,
3737} ;
3838
39+ export const LINUX_COMMAND_EVIDENCE : RepositoryEvidence = {
40+ path : 'test/integration/linux-e2e/live-runner.ts' ,
41+ test : 'runLinuxCommandEvidence' ,
42+ } ;
43+
3944const LINUX_PROVIDER_EVIDENCE : RepositoryEvidence = {
4045 path : 'test/integration/provider-scenarios/linux-desktop.test.ts' ,
4146 test : 'Provider-backed integration Linux desktop flow uses semantic desktop and input providers' ,
@@ -50,11 +55,16 @@ const LINUX_CAPABILITY_DECLARATION_PATH = 'src/core/command-descriptor/registry.
5055const LINUX_CAPABILITY_DECLARATION = 'linux: LINUX_NONE' ;
5156
5257const C = PUBLIC_COMMANDS ;
53- const live = ( assertion : string ) : LinuxPlatformCoverageEntry => ( {
58+ const live = (
59+ assertion : string ,
60+ owner : RepositoryEvidence = LINUX_REPLAY_EVIDENCE ,
61+ ) : LinuxPlatformCoverageEntry => ( {
5462 assertion,
5563 level : 'live' ,
56- owner : LINUX_REPLAY_EVIDENCE ,
64+ owner,
5765} ) ;
66+ const commandEvidenceLive = ( assertion : string ) : LinuxPlatformCoverageEntry =>
67+ live ( assertion , LINUX_COMMAND_EVIDENCE ) ;
5868const contract = ( path : string , test : string , assertion : string ) : LinuxPlatformCoverageEntry => ( {
5969 assertion,
6070 level : 'command-contract' ,
@@ -78,21 +88,26 @@ const gap = (assertion: string): LinuxPlatformCoverageEntry => ({
7888/**
7989 * One primary, observable owner for every public command on the Linux desktop.
8090 *
81- * Live rows are limited to the existing Linux replay. Contract rows cite the
82- * existing provider scenario or dedicated Linux unit/runtime evidence; they do
83- * not turn mocked provider calls into live desktop claims. Capability denials
84- * are derived from the owning command-descriptor matrix. Known gaps are
85- * explicit follow-up work, not an implicit claim that a generic command works.
91+ * Live rows cite either the existing Linux replay or the separate command-evidence
92+ * lane. The existing replay scope stays unchanged. Contract rows cite the existing
93+ * provider scenario or dedicated Linux unit/runtime evidence; they do not turn
94+ * mocked provider calls into live desktop claims. Capability denials are derived
95+ * from the owning command-descriptor matrix. Known gaps are explicit follow-up
96+ * work, not an implicit claim that a generic command works.
8697 */
8798export const LINUX_PLATFORM_COVERAGE = {
88- [ C . artifacts ] : gap ( 'No Linux-specific artifact inventory command evidence exists yet' ) ,
99+ [ C . artifacts ] : gap (
100+ 'No Linux live command creates a downloadable daemon artifact for inventory yet' ,
101+ ) ,
89102 [ C . devices ] : contract (
90103 LINUX_PROVIDER_EVIDENCE . path ,
91104 LINUX_PROVIDER_EVIDENCE . test ,
92105 'Linux provider scenario inventories the selected desktop device through the daemon client' ,
93106 ) ,
94- [ C . capabilities ] : gap ( 'No Linux-specific capabilities command evidence exists yet' ) ,
95- [ C . doctor ] : gap ( 'No Linux-specific doctor command evidence exists yet' ) ,
107+ [ C . capabilities ] : commandEvidenceLive (
108+ 'the command-evidence lane reads capabilities for the selected Linux desktop' ,
109+ ) ,
110+ [ C . doctor ] : commandEvidenceLive ( 'the command-evidence lane reads Linux doctor diagnostics' ) ,
96111 [ C . apps ] : contract (
97112 LINUX_RUNTIME_EVIDENCE . path ,
98113 LINUX_RUNTIME_EVIDENCE . test ,
@@ -111,15 +126,21 @@ export const LINUX_PLATFORM_COVERAGE = {
111126 ) ,
112127 [ C . perf ] : denial ( 'perf' , 'Linux capability declaration rejects native performance inspection' ) ,
113128 [ C . logs ] : gap ( 'No Linux-specific app-log command evidence exists yet' ) ,
114- [ C . events ] : gap ( 'No Linux-specific session event command evidence exists yet' ) ,
129+ [ C . events ] : commandEvidenceLive (
130+ 'the command-evidence lane reads the event timeline produced by its Linux session' ,
131+ ) ,
115132 [ C . network ] : contract (
116133 LINUX_RUNTIME_EVIDENCE . path ,
117134 LINUX_RUNTIME_EVIDENCE . test ,
118135 'Linux runtime facts explicitly report network capture unavailable' ,
119136 ) ,
120137 [ C . audio ] : denial ( 'audio' , 'Linux capability declaration rejects native audio probing' ) ,
121- [ C . replay ] : gap ( 'No Linux-specific replay command evidence exists yet' ) ,
122- [ C . test ] : gap ( 'No Linux-specific test-suite command evidence exists yet' ) ,
138+ [ C . replay ] : commandEvidenceLive (
139+ 'the command-evidence lane replays a dedicated Linux script with a live session' ,
140+ ) ,
141+ [ C . test ] : commandEvidenceLive (
142+ 'the command-evidence lane runs a dedicated Linux script as a test suite' ,
143+ ) ,
123144 [ C . clipboard ] : contract (
124145 'src/platforms/linux/__tests__/clipboard.test.ts' ,
125146 'writeLinuxClipboard uses xclip with stdin on X11' ,
@@ -143,14 +164,16 @@ export const LINUX_PLATFORM_COVERAGE = {
143164 LINUX_RUNTIME_EVIDENCE . test ,
144165 'Linux runtime facts explicitly report Apple runner preparation unavailable' ,
145166 ) ,
146- [ C . batch ] : gap ( 'No Linux-specific batch command evidence exists yet ') ,
167+ [ C . batch ] : commandEvidenceLive ( 'the command-evidence lane executes two live Linux read steps ') ,
147168 [ C . close ] : contract (
148169 LINUX_PROVIDER_EVIDENCE . path ,
149170 LINUX_PROVIDER_EVIDENCE . test ,
150171 'Linux provider scenario closes the calculator and observes the desktop close call' ,
151172 ) ,
152173 [ C . snapshot ] : live ( 'the existing Linux replay captures the calculator accessibility tree' ) ,
153- [ C . diff ] : gap ( 'No Linux-specific snapshot diff command evidence exists yet' ) ,
174+ [ C . diff ] : commandEvidenceLive (
175+ 'the command-evidence lane observes a non-empty calculator snapshot mutation' ,
176+ ) ,
154177 [ C . wait ] : live ( 'the existing Linux replay waits for an observable calculator landmark' ) ,
155178 [ C . alert ] : denial ( 'alert' , 'Linux capability declaration rejects native alert operations' ) ,
156179 [ C . settings ] : denial (
@@ -163,7 +186,7 @@ export const LINUX_PLATFORM_COVERAGE = {
163186 ) ,
164187 [ C . record ] : gap ( 'No Linux-specific recording command evidence exists yet' ) ,
165188 [ C . trace ] : gap ( 'No Linux-specific trace command evidence exists yet' ) ,
166- [ C . find ] : gap ( 'No Linux-specific find command evidence exists yet ') ,
189+ [ C . find ] : commandEvidenceLive ( 'the command-evidence lane resolves a live AT-SPI role match ') ,
167190 // Promoted from command-contract to live: the desktop replay now clicks a resolved digit
168191 // button on real Linux hardware and the downstream wait only passes if the click landed
169192 // (formerly missed — AT-SPI extents were computed screen-absolute-wrong under GTK4; see
@@ -230,7 +253,7 @@ export const LINUX_PLATFORM_COVERAGE = {
230253 'scrollLinux uses ydotool mousemove --wheel for vertical scroll' ,
231254 'Linux scroll dispatch uses the Wayland ydotool wheel primitive' ,
232255 ) ,
233- [ C . swipe ] : gap ( 'No Linux-specific public swipe command evidence exists yet ') ,
256+ [ C . swipe ] : commandEvidenceLive ( 'the command-evidence lane dispatches a coordinate swipe ') ,
234257 // Promoted from command-contract to live by #1925: the desktop replay now runs a coordinate
235258 // focus on real Linux hardware, so the migrated `focusPoint` path has live changed-path
236259 // evidence rather than only the provider scenario at LINUX_PROVIDER_EVIDENCE.
@@ -254,6 +277,16 @@ export const LINUX_PLATFORM_COVERAGE_CLASSIFICATION_SUMMARY = buildCoverageClass
254277
255278export function liveCommandsForLinuxReplay ( ) : PublicCommand [ ] {
256279 return Object . entries ( LINUX_PLATFORM_COVERAGE )
257- . filter ( ( [ , entry ] ) => entry . level === 'live' )
280+ . filter (
281+ ( [ , entry ] ) => entry . level === 'live' && entry . owner . path === LINUX_REPLAY_EVIDENCE . path ,
282+ )
283+ . map ( ( [ command ] ) => command as PublicCommand ) ;
284+ }
285+
286+ export function liveCommandsForLinuxCommandEvidence ( ) : PublicCommand [ ] {
287+ return Object . entries ( LINUX_PLATFORM_COVERAGE )
288+ . filter (
289+ ( [ , entry ] ) => entry . level === 'live' && entry . owner . path === LINUX_COMMAND_EVIDENCE . path ,
290+ )
258291 . map ( ( [ command ] ) => command as PublicCommand ) ;
259292}
0 commit comments