release prep: rc.1 baseline and gating updates

This commit is contained in:
2026-03-02 15:54:55 -05:00
parent 97a42c8802
commit f43b2b24b6
168 changed files with 14708 additions and 982 deletions

9
spec/alias_index.md Normal file
View File

@@ -0,0 +1,9 @@
# Alias Index
OpenBitdo uses a strict no-duplicate PID model in runtime and canonical spec tables.
These legacy names are preserved here as aliases only.
| Alias PID Name | Canonical PID Name | PID (hex) | Note |
| --- | --- | --- | --- |
| `PID_Pro2_OLD` | `PID_Pro2` | `0x6003` | Legacy constant alias in 8BitDo source; runtime/spec use only `PID_Pro2`. |
| `PID_ASLGMouse` | `PID_Mouse` | `0x5205` | Alias constant maps to the same PID as `PID_Mouse`; runtime/spec use only `PID_Mouse`. |

View File

@@ -1,18 +1,74 @@
command_id,safety_class,confidence,experimental_default,report_id,request_len,request_hex,expected_response,notes
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,"Primary PID detection request"
GetReportRevision,SafeRead,confirmed,false,0x81,64,81040001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x04;byte5=0x01,"RR read preflight"
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,"Mode read"
GetModeAlt,SafeRead,confirmed,false,0x81,64,81050800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,"Alternate mode read"
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,"Controller version"
GetSuperButton,SafeRead,inferred,true,0x81,64,81052100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,"Super button capability"
SetModeDInput,SafeWrite,confirmed,false,0x81,64,81050051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,"Mode write to DInput"
Idle,SafeRead,confirmed,false,0x81,64,81040001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,"Idle check"
Version,SafeRead,confirmed,false,0x81,64,81042101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte1=0x22,"Version check"
ReadProfile,SafeRead,inferred,true,0x81,64,81060001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,"Profile slot read (sanitized)"
WriteProfile,SafeWrite,inferred,true,0x81,64,81070001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,"Profile slot write (sanitized)"
EnterBootloaderA,UnsafeBoot,confirmed,false,0x81,6,050050010000,none,"Boot stage A"
EnterBootloaderB,UnsafeBoot,confirmed,false,0x81,6,005100000000,none,"Boot stage B"
EnterBootloaderC,UnsafeBoot,confirmed,false,0x81,5,0050000000,none,"Boot stage C"
ExitBootloader,UnsafeBoot,inferred,true,0x81,6,050051010000,none,"Boot exit (sanitized inferred)"
FirmwareChunk,UnsafeFirmware,inferred,true,0x81,64,81100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,"Firmware chunk transfer"
FirmwareCommit,UnsafeFirmware,inferred,true,0x81,64,81110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,"Firmware commit"
command_id,safety_class,confidence,experimental_default,report_id,request_len,request_hex,expected_response,notes,applies_to,operation_group,dossier_id,evidence_static,evidence_runtime,evidence_hardware,promotion_gate
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Primary PID detection request,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
GetReportRevision,SafeRead,confirmed,false,0x81,64,81040001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x04;byte5=0x01,RR read preflight,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Mode read,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
GetModeAlt,SafeRead,confirmed,false,0x81,64,81050800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Alternate mode read,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Controller version,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
GetSuperButton,SafeRead,inferred,true,0x81,64,81052100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Super button capability,*,Core,DOS-CORE-GLOBAL,yes,no,no,n/a
SetModeDInput,SafeWrite,confirmed,false,0x81,64,81050051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Mode write to DInput,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
Idle,SafeRead,confirmed,false,0x81,64,81040001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Idle check,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
Version,SafeRead,confirmed,false,0x81,64,81042101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte1=0x22,Version check,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
ReadProfile,SafeRead,inferred,true,0x81,64,81060001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Profile slot read (sanitized),*,Core,DOS-CORE-GLOBAL,yes,no,no,n/a
WriteProfile,SafeWrite,inferred,true,0x81,64,81070001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Profile slot write (sanitized),*,Core,DOS-CORE-GLOBAL,yes,no,no,n/a
EnterBootloaderA,UnsafeBoot,confirmed,false,0x81,6,050050010000,none,Boot stage A,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
EnterBootloaderB,UnsafeBoot,confirmed,false,0x81,6,005100000000,none,Boot stage B,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
EnterBootloaderC,UnsafeBoot,confirmed,false,0x81,5,0050000000,none,Boot stage C,*,Core,DOS-CORE-GLOBAL,yes,yes,yes,n/a
ExitBootloader,UnsafeBoot,inferred,true,0x81,6,050051010000,none,Boot exit (sanitized inferred),*,Core,DOS-CORE-GLOBAL,yes,no,no,n/a
FirmwareChunk,UnsafeFirmware,inferred,true,0x81,64,81100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Firmware chunk transfer,*,Core,DOS-CORE-GLOBAL,yes,no,no,n/a
FirmwareCommit,UnsafeFirmware,inferred,true,0x81,64,81110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Firmware commit,*,Core,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108ReadDedicatedMappings,SafeRead,inferred,true,0x81,64,81053020010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,JP108 dedicated-button mapping read,0x5209;0x520a,JP108Dedicated,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108WriteDedicatedMapping,SafeWrite,inferred,true,0x81,64,81053120010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,JP108 dedicated-button mapping write (index/value payload),0x5209;0x520a,JP108Dedicated,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108ReadFeatureFlags,SafeRead,inferred,true,0x81,64,81053220010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,JP108 feature flags read,0x5209;0x520a,JP108Dedicated,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108WriteFeatureFlags,SafeWrite,inferred,true,0x81,64,81053320010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,JP108 feature flags write,0x5209;0x520a,JP108Dedicated,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108ReadVoice,SafeRead,inferred,true,0x81,64,81053420010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,JP108 voice read,0x5209;0x520a,JP108Dedicated,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108WriteVoice,SafeWrite,inferred,true,0x81,64,81053520010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,JP108 voice write,0x5209;0x520a,JP108Dedicated,DOS-CORE-GLOBAL,yes,no,no,n/a
U2GetCurrentSlot,SafeRead,inferred,true,0x81,64,81054012010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Ultimate2 current slot read,0x6012;0x6013,Ultimate2Core,DOS-CORE-GLOBAL,yes,no,no,n/a
U2ReadConfigSlot,SafeRead,inferred,true,0x81,64,81054112010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Ultimate2 slot config read,0x6012;0x6013,Ultimate2Core,DOS-CORE-GLOBAL,yes,no,no,n/a
U2WriteConfigSlot,SafeWrite,inferred,true,0x81,64,81054212010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Ultimate2 slot config write,0x6012;0x6013,Ultimate2Core,DOS-CORE-GLOBAL,yes,no,no,n/a
U2ReadButtonMap,SafeRead,inferred,true,0x81,64,81054312010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Ultimate2 core button map read,0x6012;0x6013,Ultimate2Core,DOS-CORE-GLOBAL,yes,no,no,n/a
U2WriteButtonMap,SafeWrite,inferred,true,0x81,64,81054412010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Ultimate2 core button map write,0x6012;0x6013,Ultimate2Core,DOS-CORE-GLOBAL,yes,no,no,n/a
U2SetMode,SafeWrite,inferred,true,0x81,64,81054512010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Ultimate2 mode write,0x6012;0x6013,Ultimate2Core,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108EnterBootloader,UnsafeBoot,inferred,true,0x81,6,050050010000,none,JP108 boot enter,0x5209;0x520a,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108FirmwareChunk,UnsafeFirmware,inferred,true,0x81,64,81601020090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,JP108 firmware chunk,0x5209;0x520a,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108FirmwareCommit,UnsafeFirmware,inferred,true,0x81,64,81601120090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,JP108 firmware commit,0x5209;0x520a,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
Jp108ExitBootloader,UnsafeBoot,inferred,true,0x81,6,050051010000,none,JP108 boot exit,0x5209;0x520a,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
U2EnterBootloader,UnsafeBoot,inferred,true,0x81,6,050050010000,none,Ultimate2 boot enter,0x6012;0x6013,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
U2FirmwareChunk,UnsafeFirmware,inferred,true,0x81,64,81601060120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Ultimate2 firmware chunk,0x6012;0x6013,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
U2FirmwareCommit,UnsafeFirmware,inferred,true,0x81,64,81601160120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02,Ultimate2 firmware commit,0x6012;0x6013,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
U2ExitBootloader,UnsafeBoot,inferred,true,0x81,6,050051010000,none,Ultimate2 boot exit,0x6012;0x6013,Firmware,DOS-CORE-GLOBAL,yes,no,no,n/a
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x3100,CoreDiag,DOS-3100-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x3100,ModeProfileRead,DOS-3100-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x3100,FirmwarePreflight,DOS-3100-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x3105,CoreDiag,DOS-3105-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x3105,ModeProfileRead,DOS-3105-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x3105,FirmwarePreflight,DOS-3105-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x2100,CoreDiag,DOS-2100-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x2100,ModeProfileRead,DOS-2100-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x2100,FirmwarePreflight,DOS-2100-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x2101,CoreDiag,DOS-2101-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x2101,ModeProfileRead,DOS-2101-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x2101,FirmwarePreflight,DOS-2101-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x901a,CoreDiag,DOS-901A-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x901a,ModeProfileRead,DOS-901A-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x901a,FirmwarePreflight,DOS-901A-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x6006,CoreDiag,DOS-6006-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x6006,ModeProfileRead,DOS-6006-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x6006,FirmwarePreflight,DOS-6006-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x5203,CoreDiag,DOS-5203-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x5203,ModeProfileRead,DOS-5203-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x5203,FirmwarePreflight,DOS-5203-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x5204,CoreDiag,DOS-5204-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x5204,ModeProfileRead,DOS-5204-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x5204,FirmwarePreflight,DOS-5204-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x301a,CoreDiag,DOS-301A-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x301a,ModeProfileRead,DOS-301A-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x301a,FirmwarePreflight,DOS-301A-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x9028,CoreDiag,DOS-9028-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x9028,ModeProfileRead,DOS-9028-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x9028,FirmwarePreflight,DOS-9028-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x3026,CoreDiag,DOS-3026-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x3026,ModeProfileRead,DOS-3026-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x3026,FirmwarePreflight,DOS-3026-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
GetPid,SafeRead,confirmed,false,0x81,64,8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05;byte4=0xC1,Wave2 static core diagnostics coverage for candidate-readonly PID,0x3027,CoreDiag,DOS-3027-CORE-DIAG-W2,yes,no,no,blocked/no_runtime
GetMode,SafeRead,confirmed,false,0x81,64,81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x05,Wave2 static mode/profile read coverage; read-only and gated,0x3027,ModeProfileRead,DOS-3027-MODEPROFILE-W2,yes,no,no,blocked/no_runtime
GetControllerVersion,SafeRead,confirmed,false,0x81,64,81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,byte0=0x02;byte1=0x22,Wave2 static firmware preflight metadata coverage; transfer blocked,0x3027,FirmwarePreflight,DOS-3027-FW-PREFLIGHT-W2,yes,no,no,blocked/no_runtime
1 command_id safety_class confidence experimental_default report_id request_len request_hex expected_response notes applies_to operation_group dossier_id evidence_static evidence_runtime evidence_hardware promotion_gate
2 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Primary PID detection request * Core DOS-CORE-GLOBAL yes yes yes n/a
3 GetReportRevision SafeRead confirmed false 0x81 64 81040001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x04;byte5=0x01 RR read preflight * Core DOS-CORE-GLOBAL yes yes yes n/a
4 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Mode read * Core DOS-CORE-GLOBAL yes yes yes n/a
5 GetModeAlt SafeRead confirmed false 0x81 64 81050800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Alternate mode read * Core DOS-CORE-GLOBAL yes yes yes n/a
6 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Controller version * Core DOS-CORE-GLOBAL yes yes yes n/a
7 GetSuperButton SafeRead inferred true 0x81 64 81052100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Super button capability * Core DOS-CORE-GLOBAL yes no no n/a
8 SetModeDInput SafeWrite confirmed false 0x81 64 81050051020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Mode write to DInput * Core DOS-CORE-GLOBAL yes yes yes n/a
9 Idle SafeRead confirmed false 0x81 64 81040001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Idle check * Core DOS-CORE-GLOBAL yes yes yes n/a
10 Version SafeRead confirmed false 0x81 64 81042101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte1=0x22 Version check * Core DOS-CORE-GLOBAL yes yes yes n/a
11 ReadProfile SafeRead inferred true 0x81 64 81060001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Profile slot read (sanitized) * Core DOS-CORE-GLOBAL yes no no n/a
12 WriteProfile SafeWrite inferred true 0x81 64 81070001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Profile slot write (sanitized) * Core DOS-CORE-GLOBAL yes no no n/a
13 EnterBootloaderA UnsafeBoot confirmed false 0x81 6 050050010000 none Boot stage A * Core DOS-CORE-GLOBAL yes yes yes n/a
14 EnterBootloaderB UnsafeBoot confirmed false 0x81 6 005100000000 none Boot stage B * Core DOS-CORE-GLOBAL yes yes yes n/a
15 EnterBootloaderC UnsafeBoot confirmed false 0x81 5 0050000000 none Boot stage C * Core DOS-CORE-GLOBAL yes yes yes n/a
16 ExitBootloader UnsafeBoot inferred true 0x81 6 050051010000 none Boot exit (sanitized inferred) * Core DOS-CORE-GLOBAL yes no no n/a
17 FirmwareChunk UnsafeFirmware inferred true 0x81 64 81100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Firmware chunk transfer * Core DOS-CORE-GLOBAL yes no no n/a
18 FirmwareCommit UnsafeFirmware inferred true 0x81 64 81110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Firmware commit * Core DOS-CORE-GLOBAL yes no no n/a
19 Jp108ReadDedicatedMappings SafeRead inferred true 0x81 64 81053020010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 JP108 dedicated-button mapping read 0x5209;0x520a JP108Dedicated DOS-CORE-GLOBAL yes no no n/a
20 Jp108WriteDedicatedMapping SafeWrite inferred true 0x81 64 81053120010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 JP108 dedicated-button mapping write (index/value payload) 0x5209;0x520a JP108Dedicated DOS-CORE-GLOBAL yes no no n/a
21 Jp108ReadFeatureFlags SafeRead inferred true 0x81 64 81053220010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 JP108 feature flags read 0x5209;0x520a JP108Dedicated DOS-CORE-GLOBAL yes no no n/a
22 Jp108WriteFeatureFlags SafeWrite inferred true 0x81 64 81053320010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 JP108 feature flags write 0x5209;0x520a JP108Dedicated DOS-CORE-GLOBAL yes no no n/a
23 Jp108ReadVoice SafeRead inferred true 0x81 64 81053420010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 JP108 voice read 0x5209;0x520a JP108Dedicated DOS-CORE-GLOBAL yes no no n/a
24 Jp108WriteVoice SafeWrite inferred true 0x81 64 81053520010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 JP108 voice write 0x5209;0x520a JP108Dedicated DOS-CORE-GLOBAL yes no no n/a
25 U2GetCurrentSlot SafeRead inferred true 0x81 64 81054012010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Ultimate2 current slot read 0x6012;0x6013 Ultimate2Core DOS-CORE-GLOBAL yes no no n/a
26 U2ReadConfigSlot SafeRead inferred true 0x81 64 81054112010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Ultimate2 slot config read 0x6012;0x6013 Ultimate2Core DOS-CORE-GLOBAL yes no no n/a
27 U2WriteConfigSlot SafeWrite inferred true 0x81 64 81054212010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Ultimate2 slot config write 0x6012;0x6013 Ultimate2Core DOS-CORE-GLOBAL yes no no n/a
28 U2ReadButtonMap SafeRead inferred true 0x81 64 81054312010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Ultimate2 core button map read 0x6012;0x6013 Ultimate2Core DOS-CORE-GLOBAL yes no no n/a
29 U2WriteButtonMap SafeWrite inferred true 0x81 64 81054412010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Ultimate2 core button map write 0x6012;0x6013 Ultimate2Core DOS-CORE-GLOBAL yes no no n/a
30 U2SetMode SafeWrite inferred true 0x81 64 81054512010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Ultimate2 mode write 0x6012;0x6013 Ultimate2Core DOS-CORE-GLOBAL yes no no n/a
31 Jp108EnterBootloader UnsafeBoot inferred true 0x81 6 050050010000 none JP108 boot enter 0x5209;0x520a Firmware DOS-CORE-GLOBAL yes no no n/a
32 Jp108FirmwareChunk UnsafeFirmware inferred true 0x81 64 81601020090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 JP108 firmware chunk 0x5209;0x520a Firmware DOS-CORE-GLOBAL yes no no n/a
33 Jp108FirmwareCommit UnsafeFirmware inferred true 0x81 64 81601120090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 JP108 firmware commit 0x5209;0x520a Firmware DOS-CORE-GLOBAL yes no no n/a
34 Jp108ExitBootloader UnsafeBoot inferred true 0x81 6 050051010000 none JP108 boot exit 0x5209;0x520a Firmware DOS-CORE-GLOBAL yes no no n/a
35 U2EnterBootloader UnsafeBoot inferred true 0x81 6 050050010000 none Ultimate2 boot enter 0x6012;0x6013 Firmware DOS-CORE-GLOBAL yes no no n/a
36 U2FirmwareChunk UnsafeFirmware inferred true 0x81 64 81601060120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Ultimate2 firmware chunk 0x6012;0x6013 Firmware DOS-CORE-GLOBAL yes no no n/a
37 U2FirmwareCommit UnsafeFirmware inferred true 0x81 64 81601160120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02 Ultimate2 firmware commit 0x6012;0x6013 Firmware DOS-CORE-GLOBAL yes no no n/a
38 U2ExitBootloader UnsafeBoot inferred true 0x81 6 050051010000 none Ultimate2 boot exit 0x6012;0x6013 Firmware DOS-CORE-GLOBAL yes no no n/a
39 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x3100 CoreDiag DOS-3100-CORE-DIAG-W2 yes no no blocked/no_runtime
40 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x3100 ModeProfileRead DOS-3100-MODEPROFILE-W2 yes no no blocked/no_runtime
41 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x3100 FirmwarePreflight DOS-3100-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
42 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x3105 CoreDiag DOS-3105-CORE-DIAG-W2 yes no no blocked/no_runtime
43 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x3105 ModeProfileRead DOS-3105-MODEPROFILE-W2 yes no no blocked/no_runtime
44 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x3105 FirmwarePreflight DOS-3105-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
45 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x2100 CoreDiag DOS-2100-CORE-DIAG-W2 yes no no blocked/no_runtime
46 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x2100 ModeProfileRead DOS-2100-MODEPROFILE-W2 yes no no blocked/no_runtime
47 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x2100 FirmwarePreflight DOS-2100-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
48 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x2101 CoreDiag DOS-2101-CORE-DIAG-W2 yes no no blocked/no_runtime
49 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x2101 ModeProfileRead DOS-2101-MODEPROFILE-W2 yes no no blocked/no_runtime
50 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x2101 FirmwarePreflight DOS-2101-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
51 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x901a CoreDiag DOS-901A-CORE-DIAG-W2 yes no no blocked/no_runtime
52 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x901a ModeProfileRead DOS-901A-MODEPROFILE-W2 yes no no blocked/no_runtime
53 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x901a FirmwarePreflight DOS-901A-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
54 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x6006 CoreDiag DOS-6006-CORE-DIAG-W2 yes no no blocked/no_runtime
55 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x6006 ModeProfileRead DOS-6006-MODEPROFILE-W2 yes no no blocked/no_runtime
56 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x6006 FirmwarePreflight DOS-6006-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
57 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x5203 CoreDiag DOS-5203-CORE-DIAG-W2 yes no no blocked/no_runtime
58 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x5203 ModeProfileRead DOS-5203-MODEPROFILE-W2 yes no no blocked/no_runtime
59 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x5203 FirmwarePreflight DOS-5203-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
60 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x5204 CoreDiag DOS-5204-CORE-DIAG-W2 yes no no blocked/no_runtime
61 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x5204 ModeProfileRead DOS-5204-MODEPROFILE-W2 yes no no blocked/no_runtime
62 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x5204 FirmwarePreflight DOS-5204-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
63 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x301a CoreDiag DOS-301A-CORE-DIAG-W2 yes no no blocked/no_runtime
64 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x301a ModeProfileRead DOS-301A-MODEPROFILE-W2 yes no no blocked/no_runtime
65 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x301a FirmwarePreflight DOS-301A-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
66 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x9028 CoreDiag DOS-9028-CORE-DIAG-W2 yes no no blocked/no_runtime
67 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x9028 ModeProfileRead DOS-9028-MODEPROFILE-W2 yes no no blocked/no_runtime
68 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x9028 FirmwarePreflight DOS-9028-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
69 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x3026 CoreDiag DOS-3026-CORE-DIAG-W2 yes no no blocked/no_runtime
70 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x3026 ModeProfileRead DOS-3026-MODEPROFILE-W2 yes no no blocked/no_runtime
71 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x3026 FirmwarePreflight DOS-3026-FW-PREFLIGHT-W2 yes no no blocked/no_runtime
72 GetPid SafeRead confirmed false 0x81 64 8105c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05;byte4=0xC1 Wave2 static core diagnostics coverage for candidate-readonly PID 0x3027 CoreDiag DOS-3027-CORE-DIAG-W2 yes no no blocked/no_runtime
73 GetMode SafeRead confirmed false 0x81 64 81040501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x05 Wave2 static mode/profile read coverage; read-only and gated 0x3027 ModeProfileRead DOS-3027-MODEPROFILE-W2 yes no no blocked/no_runtime
74 GetControllerVersion SafeRead confirmed false 0x81 64 81042101000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 byte0=0x02;byte1=0x22 Wave2 static firmware preflight metadata coverage; transfer blocked 0x3027 FirmwarePreflight DOS-3027-FW-PREFLIGHT-W2 yes no no blocked/no_runtime

View File

@@ -0,0 +1,68 @@
# Device Name Catalog
This catalog is the sanitized naming source of truth for OpenBitdo runtime/docs.
Canonical rows are unique by PID (no duplicates in this table).
| canonical_pid_name | pid_hex | display_name_en | protocol_family | name_source | source_confidence | aliases |
| --- | --- | --- | --- | --- | --- | --- |
| PID_None | 0x0000 | No Device (Sentinel) | Unknown | internal-fallback | low | |
| PID_IDLE | 0x3109 | Unconfirmed Internal Device (PID_IDLE) | Standard64 | internal-fallback | low | |
| PID_SN30Plus | 0x6002 | SN30 Pro+ | Standard64 | official-web | medium | |
| PID_USB_Ultimate | 0x3100 | Unconfirmed Internal Device (PID_USB_Ultimate) | Standard64 | internal-fallback | low | |
| PID_USB_Ultimate2 | 0x3105 | Unconfirmed Internal Device (PID_USB_Ultimate2) | Standard64 | internal-fallback | low | |
| PID_USB_UltimateClasses | 0x3104 | Unconfirmed Internal Device (PID_USB_UltimateClasses) | Standard64 | internal-fallback | low | |
| PID_Xcloud | 0x2100 | Unconfirmed Internal Device (PID_Xcloud) | Standard64 | internal-fallback | low | |
| PID_Xcloud2 | 0x2101 | Unconfirmed Internal Device (PID_Xcloud2) | Standard64 | internal-fallback | low | |
| PID_ArcadeStick | 0x901a | Arcade Stick | Standard64 | internal-fallback | medium | |
| PID_Pro2 | 0x6003 | Pro 2 Bluetooth Controller | Standard64 | official-web | high | PID_Pro2_OLD |
| PID_Pro2_CY | 0x6006 | Unconfirmed Variant Name (PID_Pro2_CY) | Standard64 | internal-fallback | low | |
| PID_Pro2_Wired | 0x3010 | Pro 2 Wired Controller | Standard64 | internal-fallback | medium | |
| PID_Ultimate_PC | 0x3011 | Ultimate PC Controller | Standard64 | internal-fallback | medium | |
| PID_Ultimate2_4 | 0x3012 | Ultimate 2.4G Controller | Standard64 | internal-fallback | medium | |
| PID_Ultimate2_4RR | 0x3013 | Ultimate 2.4G Adapter | Standard64 | internal-fallback | medium | |
| PID_UltimateBT | 0x6007 | Ultimate Wireless Controller | Standard64 | vendor-language-map | high | |
| PID_UltimateBTRR | 0x3106 | Ultimate Wireless Adapter | Standard64 | internal-fallback | medium | |
| PID_JP | 0x5200 | Retro Mechanical Keyboard | JpHandshake | vendor-language-map | high | |
| PID_JPUSB | 0x5201 | Retro Mechanical Keyboard Receiver | JpHandshake | vendor-language-map | high | |
| PID_NUMPAD | 0x5203 | Retro 18 Mechanical Numpad | Standard64 | vendor-language-map | high | |
| PID_NUMPADRR | 0x5204 | Retro 18 Adapter | Standard64 | vendor-language-map | high | |
| PID_QINGCHUN2 | 0x310a | Ultimate 2C Controller | DInput | official-web | high | |
| PID_QINGCHUN2RR | 0x301c | Ultimate 2C Wireless Adapter | DInput | vendor-language-map | high | |
| PID_Xinput | 0x310b | Unconfirmed Interface Name (PID_Xinput) | DInput | internal-fallback | low | |
| PID_Pro3 | 0x6009 | Pro 3 Bluetooth Gamepad | DInput | vendor-language-map | high | |
| PID_Pro3USB | 0x600a | Pro 3 Bluetooth Adapter | DInput | vendor-language-map | high | |
| PID_Pro3DOCK | 0x600d | Charging Dock for Pro 3S Gamepad | Standard64 | vendor-language-map | high | |
| PID_108JP | 0x5209 | Retro 108 Mechanical Keyboard | JpHandshake | official-web | high | |
| PID_108JPUSB | 0x520a | Retro 108 Mechanical Adapter | JpHandshake | vendor-language-map | high | |
| PID_XBOXJP | 0x2028 | Retro 87 Mechanical Keyboard - Xbox Edition | JpHandshake | official-web | high | |
| PID_XBOXJPUSB | 0x202e | Retro 87 Mechanical Keyboard Adapter - Xbox Edition | JpHandshake | vendor-language-map | high | |
| PID_NGCDIY | 0x5750 | Mod Kit for NGC Controller | Standard64 | vendor-language-map | high | |
| PID_NGCRR | 0x902a | Retro Receiver for NGC | Standard64 | vendor-language-map | high | |
| PID_Ultimate2 | 0x6012 | Ultimate 2 Wireless Controller | DInput | official-web | high | |
| PID_Ultimate2RR | 0x6013 | Ultimate 2 Wireless Adapter | DInput | vendor-language-map | high | |
| PID_UltimateBT2 | 0x600f | Ultimate 2 Bluetooth Controller | DInput | official-web | high | |
| PID_UltimateBT2RR | 0x6011 | Ultimate 2 Bluetooth Adapter | DInput | vendor-language-map | high | |
| PID_Mouse | 0x5205 | Retro R8 Mouse | Standard64 | official-web | high | PID_ASLGMouse |
| PID_MouseRR | 0x5206 | Retro R8 Adapter | Standard64 | vendor-language-map | high | |
| PID_SaturnRR | 0x902b | Retro Receiver for Saturn | Standard64 | vendor-language-map | high | |
| PID_UltimateBT2C | 0x301a | Ultimate 2C Bluetooth Controller | Standard64 | official-web | high | |
| PID_Lashen | 0x301e | Ultimate Mobile Gaming Controller | Standard64 | vendor-language-map | high | |
| PID_HitBox | 0x600b | Arcade Controller | DInput | official-web | high | |
| PID_HitBoxRR | 0x600c | Arcade Controller Adapter | DInput | vendor-language-map | high | |
| PID_N64BT | 0x3019 | 64 Bluetooth Controller | Standard64 | official-web | high | |
| PID_N64 | 0x3004 | 64 2.4G Wireless Controller | Standard64 | vendor-language-map | high | |
| PID_N64RR | 0x9028 | Retro Receiver for N64 | Standard64 | vendor-language-map | high | |
| PID_XBOXUK | 0x3026 | Retro 87 Mechanical Keyboard - Xbox (UK) | Standard64 | vendor-language-map | high | |
| PID_XBOXUKUSB | 0x3027 | Retro 87 Mechanical Keyboard Adapter - Xbox (UK) | Standard64 | vendor-language-map | high | |
| PID_LashenX | 0x200b | Ultimate Mobile Gaming Controller For Xbox | Standard64 | vendor-language-map | high | |
| PID_68JP | 0x203a | Retro 68 Keyboard - N40 | JpHandshake | vendor-language-map | high | |
| PID_68JPUSB | 0x2049 | Retro 68 Keyboard Adapter - N40 | JpHandshake | vendor-language-map | high | |
| PID_N64JoySticks | 0x3021 | Joystick v2 for N64 Controller | Standard64 | vendor-language-map | high | |
| PID_DoubleSuper | 0x203e | Wireless Dual Super Button | Standard64 | vendor-language-map | high | |
| PID_Cube2RR | 0x2056 | Retro Cube 2 Adapter - N Edition | Standard64 | vendor-language-map | high | |
| PID_Cube2 | 0x2039 | Retro Cube 2 Speaker - N Edition | Standard64 | vendor-language-map | high | |
| PID_ASLGJP | 0x205a | Riviera Keyboard | JpHandshake | vendor-language-map | high | |
## Notes
- Name-source references are indexed in `/Users/brooklyn/data/8bitdo/cleanroom/process/device_name_sources.md`.
- Alias names are documented in `/Users/brooklyn/data/8bitdo/cleanroom/spec/alias_index.md` and intentionally excluded from canonical PID rows.

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2028-CORE"
pid_hex = "0x2028"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with fixed command marker bytes and JP handshake gating"
response_shape = "status header plus minimal payload"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "JpHandshake dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2028-FIRMWARE"
pid_hex = "0x2028"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-202E-CORE"
pid_hex = "0x202e"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with fixed command marker bytes and JP handshake gating"
response_shape = "status header plus minimal payload"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "JpHandshake dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-202E-FIRMWARE"
pid_hex = "0x202e"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2039-CORE"
pid_hex = "0x2039"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with command marker bytes"
response_shape = "status header plus optional payload"
validator_rules = ["byte0 == 0x02", "response length >= 4"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Peripheral/Specialty dispatch"
notes = "Stretch target dossier; candidate-readonly until runtime+hardware evidence"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-203A-CORE"
pid_hex = "0x203a"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with fixed command marker bytes and JP handshake gating"
response_shape = "status header plus minimal payload"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "JpHandshake dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-203A-FIRMWARE"
pid_hex = "0x203a"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2049-CORE"
pid_hex = "0x2049"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with fixed command marker bytes and JP handshake gating"
response_shape = "status header plus minimal payload"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "JpHandshake dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2049-FIRMWARE"
pid_hex = "0x2049"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2056-CORE"
pid_hex = "0x2056"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with command marker bytes"
response_shape = "status header plus optional payload"
validator_rules = ["byte0 == 0x02", "response length >= 4"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Peripheral/Specialty dispatch"
notes = "Stretch target dossier; candidate-readonly until runtime+hardware evidence"

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2100-CORE-DIAG-W2"
pid_hex = "0x2100"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_Xcloud; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2100-FW-PREFLIGHT-W2"
pid_hex = "0x2100"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_Xcloud; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2100-MODEPROFILE-W2"
pid_hex = "0x2100"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_Xcloud; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2101-CORE-DIAG-W2"
pid_hex = "0x2101"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_Xcloud2; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2101-FW-PREFLIGHT-W2"
pid_hex = "0x2101"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_Xcloud2; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-2101-MODEPROFILE-W2"
pid_hex = "0x2101"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_Xcloud2; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3004-CORE"
pid_hex = "0x3004"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3004-FIRMWARE"
pid_hex = "0x3004"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3010-CORE"
pid_hex = "0x3010"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3010-FIRMWARE"
pid_hex = "0x3010"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3011-CORE"
pid_hex = "0x3011"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3011-FIRMWARE"
pid_hex = "0x3011"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3012-CORE"
pid_hex = "0x3012"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3012-FIRMWARE"
pid_hex = "0x3012"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3013-CORE"
pid_hex = "0x3013"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3013-FIRMWARE"
pid_hex = "0x3013"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3019-CORE"
pid_hex = "0x3019"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3019-FIRMWARE"
pid_hex = "0x3019"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-301A-CORE-DIAG-W2"
pid_hex = "0x301a"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_UltimateBT2C; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-301A-FW-PREFLIGHT-W2"
pid_hex = "0x301a"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_UltimateBT2C; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-301A-MODEPROFILE-W2"
pid_hex = "0x301a"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_UltimateBT2C; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3021-CORE"
pid_hex = "0x3021"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with command marker bytes"
response_shape = "status header plus optional payload"
validator_rules = ["byte0 == 0x02", "response length >= 4"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Peripheral/Specialty dispatch"
notes = "Stretch target dossier; candidate-readonly until runtime+hardware evidence"

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3026-CORE-DIAG-W2"
pid_hex = "0x3026"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_XBOXUK; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3026-FW-PREFLIGHT-W2"
pid_hex = "0x3026"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_XBOXUK; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3026-MODEPROFILE-W2"
pid_hex = "0x3026"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_XBOXUK; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3027-CORE-DIAG-W2"
pid_hex = "0x3027"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_XBOXUKUSB; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3027-FW-PREFLIGHT-W2"
pid_hex = "0x3027"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_XBOXUKUSB; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3027-MODEPROFILE-W2"
pid_hex = "0x3027"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_XBOXUKUSB; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3100-CORE-DIAG-W2"
pid_hex = "0x3100"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_USB_Ultimate; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3100-FW-PREFLIGHT-W2"
pid_hex = "0x3100"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_USB_Ultimate; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3100-MODEPROFILE-W2"
pid_hex = "0x3100"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_USB_Ultimate; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3105-CORE-DIAG-W2"
pid_hex = "0x3105"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_USB_Ultimate2; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3105-FW-PREFLIGHT-W2"
pid_hex = "0x3105"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_USB_Ultimate2; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-3105-MODEPROFILE-W2"
pid_hex = "0x3105"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_USB_Ultimate2; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5200-CORE"
pid_hex = "0x5200"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with fixed command marker bytes and JP handshake gating"
response_shape = "status header plus minimal payload"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "JpHandshake dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5200-FIRMWARE"
pid_hex = "0x5200"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5201-CORE"
pid_hex = "0x5201"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with fixed command marker bytes and JP handshake gating"
response_shape = "status header plus minimal payload"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "JpHandshake dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5201-FIRMWARE"
pid_hex = "0x5201"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5203-CORE-DIAG-W2"
pid_hex = "0x5203"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_NUMPAD; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5203-FW-PREFLIGHT-W2"
pid_hex = "0x5203"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_NUMPAD; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5203-MODEPROFILE-W2"
pid_hex = "0x5203"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_NUMPAD; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5204-CORE-DIAG-W2"
pid_hex = "0x5204"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_NUMPADRR; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5204-FW-PREFLIGHT-W2"
pid_hex = "0x5204"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_NUMPADRR; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5204-MODEPROFILE-W2"
pid_hex = "0x5204"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_NUMPADRR; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5205-CORE"
pid_hex = "0x5205"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with command marker bytes"
response_shape = "status header plus optional payload"
validator_rules = ["byte0 == 0x02", "response length >= 4"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Peripheral/Specialty dispatch"
notes = "Stretch target dossier; candidate-readonly until runtime+hardware evidence"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5206-CORE"
pid_hex = "0x5206"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report with command marker bytes"
response_shape = "status header plus optional payload"
validator_rules = ["byte0 == 0x02", "response length >= 4"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Peripheral/Specialty dispatch"
notes = "Stretch target dossier; candidate-readonly until runtime+hardware evidence"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5209-Firmware"
pid_hex = "0x5209"
operation_group = "Firmware"
command_id = ["Jp108EnterBootloader", "Jp108FirmwareChunk", "Jp108FirmwareCommit", "Jp108ExitBootloader"]
request_shape = "boot transition frames followed by chunked firmware transfer frames"
response_shape = "ack/status and completion indicators"
validator_rules = ["boot transition acknowledged", "chunk ack observed", "commit response accepted"]
retry_behavior = "firmware retries are bounded and guarded by unsafe flags"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-JP108-002", "REQ-DR-001", "REQ-DR-002"]
class_family = "JP firmware update dispatch"
notes = "Unsafe flow remains runtime-gated with dual acknowledgement"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-5209-JP108-Dedicated"
pid_hex = "0x5209"
operation_group = "JP108Dedicated"
command_id = ["Jp108ReadDedicatedMappings", "Jp108WriteDedicatedMapping", "Jp108ReadFeatureFlags", "Jp108WriteFeatureFlags", "Jp108ReadVoice", "Jp108WriteVoice"]
request_shape = "64-byte JP108 command frames with dedicated index/value payloads"
response_shape = "status header plus dedicated mapping/flag payload bytes"
validator_rules = ["byte0 == 0x02", "byte1 indicates command family", "payload length meets command minimum"]
retry_behavior = "bounded retries for read/ack operations"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-JP108-001", "REQ-DR-001", "REQ-DR-002"]
class_family = "JP108Advance / JP108AdvanceUI dispatch"
notes = "Dedicated mapping scope remains A/B/K1-K8 in current product milestone"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6002-CORE"
pid_hex = "0x6002"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6002-FIRMWARE"
pid_hex = "0x6002"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6003-CORE"
pid_hex = "0x6003"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle", "GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report with command byte and optional slot/mode payload"
response_shape = "status header with mode/profile payload bytes"
validator_rules = ["byte0 == 0x02", "response length >= 4", "status byte must indicate success"]
retry_behavior = "retry timeout/malformed response up to configured attempts with bounded backoff"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002", "REQ-PID-002"]
class_family = "Standard64 dispatch"
notes = "Wave 1 candidate-readonly dossier; no runtime trace or hardware write confirmation yet"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6003-FIRMWARE"
pid_hex = "0x6003"
operation_group = "Firmware"
command_id = ["EnterBootloaderA", "EnterBootloaderB", "EnterBootloaderC", "FirmwareChunk", "FirmwareCommit", "ExitBootloader"]
request_shape = "bootloader entry sequence followed by chunked firmware transfer frames"
response_shape = "ack/status oriented responses with transfer progression"
validator_rules = ["boot transition acknowledged", "chunk response indicates acceptance", "commit response indicates completion"]
retry_behavior = "firmware retries are bounded; unsafe flows remain blocked for candidate-readonly"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-002", "REQ-PROM-001", "REQ-PROM-002"]
class_family = "Firmware update dispatch"
notes = "Firmware path is intentionally blocked for candidate-readonly support tier in this wave"

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6006-CORE-DIAG-W2"
pid_hex = "0x6006"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_Pro2_CY; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6006-FW-PREFLIGHT-W2"
pid_hex = "0x6006"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_Pro2_CY; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6006-MODEPROFILE-W2"
pid_hex = "0x6006"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_Pro2_CY; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6012-Firmware"
pid_hex = "0x6012"
operation_group = "Firmware"
command_id = ["U2EnterBootloader", "U2FirmwareChunk", "U2FirmwareCommit", "U2ExitBootloader"]
request_shape = "boot transition frames followed by chunked firmware transfer frames"
response_shape = "ack/status and completion indicators"
validator_rules = ["boot transition acknowledged", "chunk ack observed", "commit response accepted"]
retry_behavior = "firmware retries are bounded and guarded by unsafe flags"
failure_signatures = ["boot transition failure", "chunk ack mismatch", "commit timeout"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-U2-002", "REQ-DR-001", "REQ-DR-002"]
class_family = "Ultimate2 firmware update dispatch"
notes = "Unsafe flow remains runtime-gated with dual acknowledgement"

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-6012-U2-Core"
pid_hex = "0x6012"
operation_group = "Ultimate2Core"
command_id = ["U2GetCurrentSlot", "U2ReadConfigSlot", "U2WriteConfigSlot", "U2ReadButtonMap", "U2WriteButtonMap", "U2SetMode"]
request_shape = "64-byte Ultimate2 command frames with slot/mode/map payload sections"
response_shape = "status header plus slot/config/map payload bytes"
validator_rules = ["byte0 == 0x02", "payload length meets command minimum", "slot readback value is bounded"]
retry_behavior = "bounded retries for slot/map reads and write acknowledgements"
failure_signatures = ["timeout", "malformed response", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-U2-001", "REQ-DR-001", "REQ-DR-002"]
class_family = "Ultimate2_4Advance2 / Ultimate2_4Advance2UI dispatch"
notes = "Advanced theme/sixaxis/deep macro controls remain intentionally hidden"

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-901A-CORE-DIAG-W2"
pid_hex = "0x901a"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_ArcadeStick; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-901A-FW-PREFLIGHT-W2"
pid_hex = "0x901a"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_ArcadeStick; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-901A-MODEPROFILE-W2"
pid_hex = "0x901a"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_ArcadeStick; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-9028-CORE-DIAG-W2"
pid_hex = "0x9028"
operation_group = "CoreDiag"
command_id = ["GetPid", "GetReportRevision", "GetControllerVersion", "Version", "Idle"]
request_shape = "64-byte HID report; command opcode in request[1], pid-specific capability gating outside payload"
response_shape = "status header (byte0/byte1) + optional payload bytes for pid/version/revision"
validator_rules = ["byte0 == 0x02", "response_len >= 4", "signature bytes match command expectation"]
retry_behavior = "retry timeout or malformed responses up to configured max attempts with bounded backoff"
failure_signatures = ["timeout", "malformed_frame", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PID-002"]
class_family = "Standard64"
notes = "Wave 2 static dossier for PID_N64RR; support tier remains candidate-readonly"
[state_machine]
pre_state = "DeviceConnected"
action = "Run core diagnostics read sequence"
post_state = "DeviceIdentified"
invalid_transitions = ["NoDevice", "TransportClosed", "BootloaderOnly"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime request/response traces for core diagnostics", "command-level status validation examples"]
[hardware_placeholder]
required = true
evidence_needed = ["identify + diag run on physical device", "repeatable read success across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-9028-FW-PREFLIGHT-W2"
pid_hex = "0x9028"
operation_group = "FirmwarePreflight"
command_id = ["GetReportRevision", "GetControllerVersion", "Version"]
request_shape = "64-byte HID read commands used for firmware readiness and metadata preflight"
response_shape = "status bytes + firmware/version metadata bytes when present"
validator_rules = ["byte0 == 0x02", "metadata bytes pass bounds checks", "device remains in application mode"]
retry_behavior = "safe-read retries only; firmware transfer/write commands stay blocked for candidate-readonly"
failure_signatures = ["timeout", "metadata_mismatch", "unsupported_for_pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-001", "REQ-PROM-W2-002"]
class_family = "Standard64"
notes = "Preflight-only dossier for PID_N64RR; no bootloader entry/chunk/commit enablement"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read firmware preflight metadata"
post_state = "FirmwarePreflightReady"
invalid_transitions = ["NoDevice", "BootloaderActive", "TransferInProgress"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime preflight metadata traces", "error signature samples for invalid firmware path"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware preflight check success", "metadata stability across reconnects"]

View File

@@ -0,0 +1,30 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-9028-MODEPROFILE-W2"
pid_hex = "0x9028"
operation_group = "ModeProfileRead"
command_id = ["GetMode", "GetModeAlt", "ReadProfile"]
request_shape = "64-byte HID report; mode/profile selector byte in command payload"
response_shape = "status header + mode/profile bytes when available"
validator_rules = ["byte0 == 0x02", "mode/profile payload length is bounded", "fallback command path is defined"]
retry_behavior = "use standard safe-read retry policy; fallback between mode-read command variants when defined"
failure_signatures = ["timeout", "unsupported_for_pid", "invalid_signature"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-DR-001", "REQ-DR-W2-001", "REQ-PROM-001", "REQ-PROM-W2-002", "REQ-PID-002"]
class_family = "Standard64"
notes = "Read-only mode/profile snapshot for PID_N64RR; no write enablement in this wave"
[state_machine]
pre_state = "DeviceIdentified"
action = "Read mode/profile snapshot"
post_state = "ModeProfileSnapshotReady"
invalid_transitions = ["NoDevice", "WritePending", "BootloaderActive"]
[runtime_placeholder]
required = true
evidence_needed = ["runtime traces for mode/profile read commands", "read consistency across repeated probes"]
[hardware_placeholder]
required = true
evidence_needed = ["hardware readback for mode/profile snapshot", "cross-slot/read variant sanity checks where applicable"]

View File

@@ -0,0 +1,16 @@
# Sanitized static dirty-room dossier
dossier_id = "DOS-CORE-GLOBAL"
pid_hex = "*"
operation_group = "Core"
command_id = ["GetPid", "GetReportRevision", "GetMode", "GetModeAlt", "GetControllerVersion", "Version", "Idle", "ReadProfile", "WriteProfile", "SetModeDInput"]
request_shape = "64-byte HID commands with command selector and optional payload bytes"
response_shape = "status header plus command-dependent payload"
validator_rules = ["byte0 == 0x02", "response length >= 4", "command-specific signature checks"]
retry_behavior = "deterministic retries on timeout and malformed responses"
failure_signatures = ["timeout", "malformed response", "invalid response signature", "unsupported for pid"]
evidence_source = "static"
confidence = "inferred"
requirement_ids = ["REQ-PROT-001", "REQ-PROT-002", "REQ-DR-001", "REQ-DR-002"]
class_family = "Core transport and command dispatch"
notes = "Global core command dossier linked from command matrix rows"

27
spec/evidence_index.csv Normal file
View File

@@ -0,0 +1,27 @@
pid_hex,pid_name,class_family,operation_groups,evidence_source,confidence,notes
0x2028,PID_XBOXJP,JP handshake dispatch,CoreDiag;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x202e,PID_XBOXJPUSB,JP handshake dispatch,CoreDiag;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x203a,PID_68JP,JP handshake dispatch,CoreDiag;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x2049,PID_68JPUSB,JP handshake dispatch,CoreDiag;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x2100,PID_Xcloud,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x2101,PID_Xcloud2,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3004,PID_N64,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3010,PID_Pro2_Wired,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3011,PID_Ultimate_PC,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3012,PID_Ultimate2_4,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3013,PID_Ultimate2_4RR,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3019,PID_N64BT,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x301a,PID_UltimateBT2C,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3026,PID_XBOXUK,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3027,PID_XBOXUKUSB,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3100,PID_USB_Ultimate,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x3105,PID_USB_Ultimate2,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x5200,PID_JP,JP handshake dispatch,CoreDiag;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x5201,PID_JPUSB,JP handshake dispatch,CoreDiag;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x5203,PID_NUMPAD,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x5204,PID_NUMPADRR,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x6002,PID_SN30Plus,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x6003,PID_Pro2,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x6006,PID_Pro2_CY,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x901a,PID_ArcadeStick,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
0x9028,PID_N64RR,Standard64 dispatch,CoreDiag;ModeProfileRead;FirmwarePreflight,static,inferred,candidate-readonly wave dossier (static-only)
1 pid_hex pid_name class_family operation_groups evidence_source confidence notes
2 0x2028 PID_XBOXJP JP handshake dispatch CoreDiag;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
3 0x202e PID_XBOXJPUSB JP handshake dispatch CoreDiag;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
4 0x203a PID_68JP JP handshake dispatch CoreDiag;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
5 0x2049 PID_68JPUSB JP handshake dispatch CoreDiag;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
6 0x2100 PID_Xcloud Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
7 0x2101 PID_Xcloud2 Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
8 0x3004 PID_N64 Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
9 0x3010 PID_Pro2_Wired Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
10 0x3011 PID_Ultimate_PC Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
11 0x3012 PID_Ultimate2_4 Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
12 0x3013 PID_Ultimate2_4RR Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
13 0x3019 PID_N64BT Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
14 0x301a PID_UltimateBT2C Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
15 0x3026 PID_XBOXUK Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
16 0x3027 PID_XBOXUKUSB Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
17 0x3100 PID_USB_Ultimate Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
18 0x3105 PID_USB_Ultimate2 Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
19 0x5200 PID_JP JP handshake dispatch CoreDiag;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
20 0x5201 PID_JPUSB JP handshake dispatch CoreDiag;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
21 0x5203 PID_NUMPAD Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
22 0x5204 PID_NUMPADRR Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
23 0x6002 PID_SN30Plus Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
24 0x6003 PID_Pro2 Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
25 0x6006 PID_Pro2_CY Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
26 0x901a PID_ArcadeStick Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)
27 0x9028 PID_N64RR Standard64 dispatch CoreDiag;ModeProfileRead;FirmwarePreflight static inferred candidate-readonly wave dossier (static-only)

View File

@@ -1,60 +1,58 @@
pid_name,pid_decimal,pid_hex,vid_decimal,vid_hex,support_level,protocol_family,notes
PID_None,0,0x0,11720,0x2dc8,detect-only,Unknown,Sentinel value
PID_IDLE,12553,0x3109,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_SN30Plus,24578,0x6002,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_USB_Ultimate,12544,0x3100,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_USB_Ultimate2,12549,0x3105,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_USB_UltimateClasses,12548,0x3104,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Xcloud,8448,0x2100,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Xcloud2,8449,0x2101,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_ArcadeStick,36890,0x901a,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Pro2,24579,0x6003,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Pro2_CY,24582,0x6006,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Pro2_OLD,24579,0x6003,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Pro2_Wired,12304,0x3010,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Ultimate_PC,12305,0x3011,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Ultimate2_4,12306,0x3012,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Ultimate2_4RR,12307,0x3013,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_UltimateBT,24583,0x6007,11720,0x2dc8,full,Standard64,Baseline from sanitized dirty-room analysis
PID_UltimateBTRR,12550,0x3106,11720,0x2dc8,full,Standard64,Baseline from sanitized dirty-room analysis
PID_JP,20992,0x5200,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_JPUSB,20993,0x5201,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_NUMPAD,20995,0x5203,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_NUMPADRR,20996,0x5204,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_QINGCHUN2,12554,0x310a,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_QINGCHUN2RR,12316,0x301c,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_Xinput,12555,0x310b,11720,0x2dc8,detect-only,DInput,Baseline from sanitized dirty-room analysis
PID_Pro3,24585,0x6009,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_Pro3USB,24586,0x600a,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_Pro3DOCK,24589,0x600d,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_108JP,21001,0x5209,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_108JPUSB,21002,0x520a,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_XBOXJP,8232,0x2028,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_XBOXJPUSB,8238,0x202e,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_NGCDIY,22352,0x5750,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_NGCRR,36906,0x902a,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Ultimate2,24594,0x6012,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_Ultimate2RR,24595,0x6013,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_UltimateBT2,24591,0x600f,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_UltimateBT2RR,24593,0x6011,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_Mouse,20997,0x5205,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_MouseRR,20998,0x5206,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_SaturnRR,36907,0x902b,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_UltimateBT2C,12314,0x301a,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Lashen,12318,0x301e,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_HitBox,24587,0x600b,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_HitBoxRR,24588,0x600c,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis
PID_N64BT,12313,0x3019,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_N64,12292,0x3004,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_N64RR,36904,0x9028,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_XBOXUK,12326,0x3026,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_XBOXUKUSB,12327,0x3027,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_LashenX,8203,0x200b,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_68JP,8250,0x203a,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_68JPUSB,8265,0x2049,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_N64JoySticks,12321,0x3021,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_DoubleSuper,8254,0x203e,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Cube2RR,8278,0x2056,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_Cube2,8249,0x2039,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
PID_ASLGJP,8282,0x205a,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis
PID_ASLGMouse,20997,0x5205,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis
pid_name,pid_decimal,pid_hex,vid_decimal,vid_hex,support_level,protocol_family,notes,support_tier
PID_None,0,0x0,11720,0x2dc8,detect-only,Unknown,Sentinel value,detect-only
PID_IDLE,12553,0x3109,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_SN30Plus,24578,0x6002,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_USB_Ultimate,12544,0x3100,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_USB_Ultimate2,12549,0x3105,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_USB_UltimateClasses,12548,0x3104,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_Xcloud,8448,0x2100,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_Xcloud2,8449,0x2101,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_ArcadeStick,36890,0x901a,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_Pro2,24579,0x6003,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_Pro2_CY,24582,0x6006,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_Pro2_Wired,12304,0x3010,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_Ultimate_PC,12305,0x3011,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_Ultimate2_4,12306,0x3012,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_Ultimate2_4RR,12307,0x3013,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_UltimateBT,24583,0x6007,11720,0x2dc8,full,Standard64,Baseline from sanitized dirty-room analysis,full
PID_UltimateBTRR,12550,0x3106,11720,0x2dc8,full,Standard64,Baseline from sanitized dirty-room analysis,full
PID_JP,20992,0x5200,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_JPUSB,20993,0x5201,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_NUMPAD,20995,0x5203,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_NUMPADRR,20996,0x5204,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_QINGCHUN2,12554,0x310a,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_QINGCHUN2RR,12316,0x301c,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_Xinput,12555,0x310b,11720,0x2dc8,detect-only,DInput,Baseline from sanitized dirty-room analysis,detect-only
PID_Pro3,24585,0x6009,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_Pro3USB,24586,0x600a,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_Pro3DOCK,24589,0x600d,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_108JP,21001,0x5209,11720,0x2dc8,full,JpHandshake,Promoted to full after sanitized JP108 dedicated mapping + firmware evidence,full
PID_108JPUSB,21002,0x520a,11720,0x2dc8,full,JpHandshake,Promoted to full after sanitized JP108 dedicated mapping + firmware evidence,full
PID_XBOXJP,8232,0x2028,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_XBOXJPUSB,8238,0x202e,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_NGCDIY,22352,0x5750,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_NGCRR,36906,0x902a,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_Ultimate2,24594,0x6012,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_Ultimate2RR,24595,0x6013,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_UltimateBT2,24591,0x600f,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_UltimateBT2RR,24593,0x6011,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_Mouse,20997,0x5205,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_MouseRR,20998,0x5206,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_SaturnRR,36907,0x902b,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_UltimateBT2C,12314,0x301a,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_Lashen,12318,0x301e,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_HitBox,24587,0x600b,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_HitBoxRR,24588,0x600c,11720,0x2dc8,full,DInput,Baseline from sanitized dirty-room analysis,full
PID_N64BT,12313,0x3019,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_N64,12292,0x3004,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_N64RR,36904,0x9028,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_XBOXUK,12326,0x3026,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_XBOXUKUSB,12327,0x3027,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending).,candidate-readonly
PID_LashenX,8203,0x200b,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_68JP,8250,0x203a,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_68JPUSB,8265,0x2049,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis,candidate-readonly
PID_N64JoySticks,12321,0x3021,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_DoubleSuper,8254,0x203e,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_Cube2RR,8278,0x2056,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_Cube2,8249,0x2039,11720,0x2dc8,detect-only,Standard64,Baseline from sanitized dirty-room analysis,detect-only
PID_ASLGJP,8282,0x205a,11720,0x2dc8,detect-only,JpHandshake,Baseline from sanitized dirty-room analysis,detect-only
1 pid_name pid_decimal pid_hex vid_decimal vid_hex support_level protocol_family notes support_tier
2 PID_None 0 0x0 11720 0x2dc8 detect-only Unknown Sentinel value detect-only
3 PID_IDLE 12553 0x3109 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
4 PID_SN30Plus 24578 0x6002 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
5 PID_USB_Ultimate 12544 0x3100 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
6 PID_USB_Ultimate2 12549 0x3105 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
7 PID_USB_UltimateClasses 12548 0x3104 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
8 PID_Xcloud 8448 0x2100 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
9 PID_Xcloud2 8449 0x2101 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
10 PID_ArcadeStick 36890 0x901a 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
11 PID_Pro2 24579 0x6003 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
12 PID_Pro2_CY 24582 0x6006 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
13 PID_Pro2_OLD PID_Pro2_Wired 24579 12304 0x6003 0x3010 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
14 PID_Pro2_Wired PID_Ultimate_PC 12304 12305 0x3010 0x3011 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
15 PID_Ultimate_PC PID_Ultimate2_4 12305 12306 0x3011 0x3012 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
16 PID_Ultimate2_4 PID_Ultimate2_4RR 12306 12307 0x3012 0x3013 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
17 PID_Ultimate2_4RR PID_UltimateBT 12307 24583 0x3013 0x6007 11720 0x2dc8 detect-only full Standard64 Baseline from sanitized dirty-room analysis full
18 PID_UltimateBT PID_UltimateBTRR 24583 12550 0x6007 0x3106 11720 0x2dc8 full Standard64 Baseline from sanitized dirty-room analysis full
19 PID_UltimateBTRR PID_JP 12550 20992 0x3106 0x5200 11720 0x2dc8 full detect-only Standard64 JpHandshake Baseline from sanitized dirty-room analysis candidate-readonly
20 PID_JP PID_JPUSB 20992 20993 0x5200 0x5201 11720 0x2dc8 detect-only JpHandshake Baseline from sanitized dirty-room analysis candidate-readonly
21 PID_JPUSB PID_NUMPAD 20993 20995 0x5201 0x5203 11720 0x2dc8 detect-only JpHandshake Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
22 PID_NUMPAD PID_NUMPADRR 20995 20996 0x5203 0x5204 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
23 PID_NUMPADRR PID_QINGCHUN2 20996 12554 0x5204 0x310a 11720 0x2dc8 detect-only full Standard64 DInput Baseline from sanitized dirty-room analysis full
24 PID_QINGCHUN2 PID_QINGCHUN2RR 12554 12316 0x310a 0x301c 11720 0x2dc8 full DInput Baseline from sanitized dirty-room analysis full
25 PID_QINGCHUN2RR PID_Xinput 12316 12555 0x301c 0x310b 11720 0x2dc8 full detect-only DInput Baseline from sanitized dirty-room analysis detect-only
26 PID_Xinput PID_Pro3 12555 24585 0x310b 0x6009 11720 0x2dc8 detect-only full DInput Baseline from sanitized dirty-room analysis full
27 PID_Pro3 PID_Pro3USB 24585 24586 0x6009 0x600a 11720 0x2dc8 full DInput Baseline from sanitized dirty-room analysis full
28 PID_Pro3USB PID_Pro3DOCK 24586 24589 0x600a 0x600d 11720 0x2dc8 full detect-only DInput Standard64 Baseline from sanitized dirty-room analysis detect-only
29 PID_Pro3DOCK PID_108JP 24589 21001 0x600d 0x5209 11720 0x2dc8 detect-only full Standard64 JpHandshake Baseline from sanitized dirty-room analysis Promoted to full after sanitized JP108 dedicated mapping + firmware evidence full
30 PID_108JP PID_108JPUSB 21001 21002 0x5209 0x520a 11720 0x2dc8 detect-only full JpHandshake Baseline from sanitized dirty-room analysis Promoted to full after sanitized JP108 dedicated mapping + firmware evidence full
31 PID_108JPUSB PID_XBOXJP 21002 8232 0x520a 0x2028 11720 0x2dc8 detect-only JpHandshake Baseline from sanitized dirty-room analysis candidate-readonly
32 PID_XBOXJP PID_XBOXJPUSB 8232 8238 0x2028 0x202e 11720 0x2dc8 detect-only JpHandshake Baseline from sanitized dirty-room analysis candidate-readonly
33 PID_XBOXJPUSB PID_NGCDIY 8238 22352 0x202e 0x5750 11720 0x2dc8 detect-only JpHandshake Standard64 Baseline from sanitized dirty-room analysis detect-only
34 PID_NGCDIY PID_NGCRR 22352 36906 0x5750 0x902a 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
35 PID_NGCRR PID_Ultimate2 36906 24594 0x902a 0x6012 11720 0x2dc8 detect-only full Standard64 DInput Baseline from sanitized dirty-room analysis full
36 PID_Ultimate2 PID_Ultimate2RR 24594 24595 0x6012 0x6013 11720 0x2dc8 full DInput Baseline from sanitized dirty-room analysis full
37 PID_Ultimate2RR PID_UltimateBT2 24595 24591 0x6013 0x600f 11720 0x2dc8 full DInput Baseline from sanitized dirty-room analysis full
38 PID_UltimateBT2 PID_UltimateBT2RR 24591 24593 0x600f 0x6011 11720 0x2dc8 full DInput Baseline from sanitized dirty-room analysis full
39 PID_UltimateBT2RR PID_Mouse 24593 20997 0x6011 0x5205 11720 0x2dc8 full detect-only DInput Standard64 Baseline from sanitized dirty-room analysis detect-only
40 PID_Mouse PID_MouseRR 20997 20998 0x5205 0x5206 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
41 PID_MouseRR PID_SaturnRR 20998 36907 0x5206 0x902b 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
42 PID_SaturnRR PID_UltimateBT2C 36907 12314 0x902b 0x301a 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
43 PID_UltimateBT2C PID_Lashen 12314 12318 0x301a 0x301e 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
44 PID_Lashen PID_HitBox 12318 24587 0x301e 0x600b 11720 0x2dc8 detect-only full Standard64 DInput Baseline from sanitized dirty-room analysis full
45 PID_HitBox PID_HitBoxRR 24587 24588 0x600b 0x600c 11720 0x2dc8 full DInput Baseline from sanitized dirty-room analysis full
46 PID_HitBoxRR PID_N64BT 24588 12313 0x600c 0x3019 11720 0x2dc8 full detect-only DInput Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
47 PID_N64BT PID_N64 12313 12292 0x3019 0x3004 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis candidate-readonly
48 PID_N64 PID_N64RR 12292 36904 0x3004 0x9028 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
49 PID_N64RR PID_XBOXUK 36904 12326 0x9028 0x3026 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
50 PID_XBOXUK PID_XBOXUKUSB 12326 12327 0x3026 0x3027 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis Baseline from sanitized dirty-room analysis Wave 2 candidate-readonly expansion (static dossiers complete; runtime/hardware pending). candidate-readonly
51 PID_XBOXUKUSB PID_LashenX 12327 8203 0x3027 0x200b 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
52 PID_LashenX PID_68JP 8203 8250 0x200b 0x203a 11720 0x2dc8 detect-only Standard64 JpHandshake Baseline from sanitized dirty-room analysis candidate-readonly
53 PID_68JP PID_68JPUSB 8250 8265 0x203a 0x2049 11720 0x2dc8 detect-only JpHandshake Baseline from sanitized dirty-room analysis candidate-readonly
54 PID_68JPUSB PID_N64JoySticks 8265 12321 0x2049 0x3021 11720 0x2dc8 detect-only JpHandshake Standard64 Baseline from sanitized dirty-room analysis detect-only
55 PID_N64JoySticks PID_DoubleSuper 12321 8254 0x3021 0x203e 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
56 PID_DoubleSuper PID_Cube2RR 8254 8278 0x203e 0x2056 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
57 PID_Cube2RR PID_Cube2 8278 8249 0x2056 0x2039 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis detect-only
58 PID_Cube2 PID_ASLGJP 8249 8282 0x2039 0x205a 11720 0x2dc8 detect-only Standard64 JpHandshake Baseline from sanitized dirty-room analysis detect-only
PID_ASLGJP 8282 0x205a 11720 0x2dc8 detect-only JpHandshake Baseline from sanitized dirty-room analysis
PID_ASLGMouse 20997 0x5205 11720 0x2dc8 detect-only Standard64 Baseline from sanitized dirty-room analysis

View File

@@ -28,10 +28,66 @@ It is intentionally independent from reverse-engineered source code details and
- Validation outcomes: `Ok`, `Invalid`, `Malformed`
- Retry policy applies on `Malformed` or timeout responses
## Operation Groups
- `Core`: generic identify/mode/profile/boot/fallback commands
- `JP108Dedicated`: 108-key dedicated-button mapping + feature/voice operations
- `Ultimate2Core`: Ultimate2 mode/slot/core-map operations
- `Firmware`: device-scoped firmware enter/chunk/commit/exit operations
- `CoreDiag`: decompiler-first detect/diagnostic command subset for candidate-readonly PIDs
- `ModeProfileRead`: decompiler-first read-only mode/profile snapshot group for candidate-readonly PIDs
- `FirmwarePreflight`: decompiler-first firmware readiness metadata reads (no transfer enablement)
## JP108 Dedicated Support
- Supported targets: `0x5209` (`PID_108JP`), `0x520a` (`PID_108JPUSB`)
- First milestone mapping scope: `A`, `B`, `K1`-`K8`
- Additional controls in this group:
- feature flags read/write
- voice setting read/write
- Full 111-key matrix remap is explicitly out of scope for this milestone.
## Ultimate2 Core Support
- Supported targets: `0x6012` (`PID_Ultimate2`), `0x6013` (`PID_Ultimate2RR`)
- First milestone editable scope:
- current mode read/set
- current slot read
- slot config read/write
- core button map read/write
- Advanced subsystems (theme/sixaxis/deep macro editing) are intentionally hidden in this milestone.
## PID-Aware Command Gating
- Command availability is gated by:
1. safety class and runtime unsafe acknowledgements
2. capability flags
3. explicit PID allowlist from `command_matrix.csv:applies_to`
- `applies_to="*"` means globally available within existing safety/capability constraints.
## Device Support Levels
- `full`: command execution permitted for safe and unsafe operations (with user gates)
- `detect-only`: identification allowed; unsupported operations return `UnsupportedForPid`
## Support Tiers
- `full`: read/write/unsafe operations available according to existing safety gates.
- `candidate-readonly`: detect/diag safe reads are allowed per PID allowlist; safe writes and unsafe flows are blocked.
- `detect-only`: identify-only posture for unsupported or unknown PIDs.
## Candidate Read-Only Wave Policy
- Wave-1 and Wave-2 expansion PIDs are classified as `candidate-readonly`.
- Command policy for this tier:
- allow: detect/diag safe-read subset.
- allow: read-only mode/profile snapshot reads when family-appropriate.
- allow: firmware metadata/preflight reads only.
- deny: all safe-write operations.
- deny: all unsafe boot/firmware operations.
- Promotion from `candidate-readonly` to `full` requires 3-signal evidence:
1. static dossier coverage
2. runtime trace evidence
3. hardware read/write/readback confirmation
## Dossier Linkage
- Per-PID operation evidence is tracked in `spec/dossiers/**`.
- `command_matrix.csv:dossier_id` links command rows to sanitized dossier artifacts.
- `evidence_index.csv` maps PID to class-family anchors and operation groups.
## Required Runtime Gating
Unsafe commands execute only when both conditions are true:
1. `--unsafe`

View File

@@ -43,10 +43,86 @@ requirements:
description: SDK shall parse and serialize profile blobs compatible with golden binary fixture.
acceptance: Profile serialization test round-trips fixture payload.
- id: REQ-TEST-002
title: CLI structured output
description: CLI shall provide JSON output for automation.
acceptance: CLI tests assert stable JSON keys and command responses.
title: Beginner-first report output
description: User-facing reports shall be TOML-only and hidden on happy path.
acceptance: Report tests assert TOML persistence for diagnostics/failure flows and no JSON output path.
- id: REQ-TEST-003
title: Clean-room guard
description: CI shall fail if cleanroom/sdk references forbidden dirty-room locations or tokens.
acceptance: cleanroom guard script is executed in CI and by integration test.
- id: REQ-JP108-001
title: JP108 dedicated mapping read/write
description: SDK shall support reading and writing JP108 dedicated button mappings for A/B/K1-K8.
acceptance: Unit and hardware tests verify read/write/readback for A, B, and at least one K button.
- id: REQ-JP108-002
title: JP108 firmware path
description: SDK shall support JP108 firmware preflight and transfer with existing unsafe gates.
acceptance: Hardware smoke validates JP108 firmware preflight and guarded transfer path.
- id: REQ-U2-001
title: Ultimate2 core profile support
description: SDK shall support Ultimate2 mode, slot, and core button-map operations.
acceptance: Unit and hardware tests verify mode read/set/readback and slot/profile read/write/readback.
- id: REQ-U2-002
title: Ultimate2 firmware path
description: SDK shall support Ultimate2 firmware preflight and transfer with existing unsafe gates.
acceptance: Hardware smoke validates Ultimate2 firmware preflight and guarded transfer path.
- id: REQ-WIZ-001
title: Beginner guided configuration flows
description: TUI wizard shall provide dedicated JP108 and Ultimate2 configuration paths with mouse support.
acceptance: TUI tests verify end-to-end wizard transitions for mapping/profile apply and guided button test.
- id: REQ-WIZ-002
title: Backup and rollback safety
description: Mapping/profile writes shall create rollback snapshots and auto-rollback on failure.
acceptance: App-core tests verify backup creation, rollback on failure, and deterministic retry guidance.
- id: REQ-HW-001
title: Required hardware gates for target lines
description: CI shall enforce required blocking hardware jobs for Ultimate2 and JP108 targets.
acceptance: workflow includes required jobs that fail deterministically on missing fixture or command failure.
- id: REQ-DR-001
title: Dossier completeness
description: Every wave target PID shall have sanitized dossier files for each scoped operation group.
acceptance: `spec/dossiers/<pid_hex>/*.toml` exists and includes all required schema fields.
- id: REQ-DR-002
title: Dossier traceability
description: Dossiers and command matrix rows shall be linked by stable dossier IDs.
acceptance: command matrix `dossier_id` references an existing dossier artifact.
- id: REQ-DR-W2-001
title: Wave 2 dossier minimum per PID
description: Each Wave 2 target PID shall include `core_diag`, `mode_or_profile_read`, and `firmware_preflight` dossiers.
acceptance: lint check confirms all three required dossier files exist for every Wave 2 PID.
- id: REQ-DR-W2-002
title: Wave 2 dossier state model and placeholders
description: Every Wave 2 dossier shall include state machine, runtime placeholder, and hardware placeholder sections.
acceptance: dossier lint rejects files missing `state_machine`, `runtime_placeholder`, or `hardware_placeholder`.
- id: REQ-PROM-001
title: Strict promotion gate
description: Promotion to full support requires static evidence plus runtime traces and hardware read/write/readback.
acceptance: no PID is promoted without all three evidence signals marked complete.
- id: REQ-PROM-002
title: Candidate read-only enforcement
description: candidate-readonly devices shall permit detect/diag reads but reject safe writes and unsafe operations.
acceptance: command gating tests reject write/firmware commands for candidate-readonly PIDs.
- id: REQ-PROM-W2-001
title: Wave 2 promotion block
description: Wave 2 target devices shall remain candidate-readonly until runtime and hardware placeholders are satisfied.
acceptance: Wave 2 command matrix rows set `promotion_gate=blocked/no_runtime` and evidence runtime/hardware set to `no`.
- id: REQ-PROM-W2-002
title: Firmware preflight only for Wave 2
description: Wave 2 firmware coverage shall remain metadata/preflight only with no transfer/write enablement.
acceptance: firmware transfer commands remain blocked for Wave 2 candidate-readonly PIDs.
- id: REQ-COMM-001
title: Structured community intake
description: Community evidence submissions shall follow a structured sanitized template.
acceptance: issue templates collect VID/PID, operation group, sanitized request/response structure, and repro notes.
- id: REQ-COMM-002
title: Clean-room intake boundary
description: Community submissions must forbid raw vendor/decompiled snippet carryover.
acceptance: template and docs explicitly prohibit raw snippet submission.
- id: REQ-GH-001
title: Release-governance variables
description: Repository variables for AUR/Homebrew publication gates shall be configured through GitHub settings.
acceptance: variables `AUR_PUBLISH_ENABLED`, `HOMEBREW_PUBLISH_ENABLED`, and `HOMEBREW_TAP_REPO` are present.
- id: REQ-GH-002
title: Hardware-constrained required checks
description: Branch protection required checks shall reflect currently available hardware fixtures.
acceptance: required checks include `hardware-108jp` and `hardware-ultimate2`, excluding unavailable hardware families.